QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

新鱼友

Rank: 1

积分
58
查看: 132|回复: 10

[已解决]实验九交流

[复制链接]
最佳答案
2 
累计签到:4 天
连续签到:1 天
酸辣小白菜 发表于 2017-8-12 09:37:13 13210 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
assume cs:code,ds:data,ss:stack


data segment
db 'welcome to masm! ';定义显示的字符
db 02h,24h,71h        ;定义颜色


data ends

stack segment

dw 8 dup(0)

stack ends

code segment

start: mov ax,data
mov ds,ax
mov bx,0  ;suo yin yan se
mov ax,stack
mov ss,ax
mov sp,10h
mov ax, 0b872h
mov cx,3

s: push cx                           ;hang
    push ax
        push bx
        mov si,0                          ;suo yin zi fu
    mov di,0                          ; mu biao lie
        mov es,ax
        mov cx,10h
       
       
s1:         mov al,ds:[si]
     mov es :[di],al
         inc si
         add di,2                         ;fang  zi
         pop  bx
         mov ax,ds:[bx+10h]
     mov di,1
     mov es:[di],ax
     add bx,1
     add di,2                         ;fang yan  se
         loop s1
         pop ax
         add ax,0a0h
         pop cx
         loop s
        

                mov ax,4c00h
         int 21h
         


        code ends
        end start
       
       
       
       
        错误改不出来,请大神指教
       

最佳答案
2017-8-13 09:24:56
酸辣小白菜 发表于 2017-8-13 08:15
这是我那个程序运行结果,应该怎么修改程序?

捕获.PNG
我的是在DOSBOX运行的,没问题。 我百度了下你的提示,好像是说如果你的汇编连接工具与DOS窗口环境不兼容,就可能会遇到这样的错误。你可以百度看看。
楼层
跳转到指定楼层
最佳答案
223 
累计签到:165 天
连续签到:13 天
丶忘却的年少o 发表于 2017-8-12 14:00:11 | 显示全部楼层
本帖最后由 丶忘却的年少o 于 2017-8-12 14:03 编辑
  1. assume cs:code,ds:data,ss:stack


  2. data segment
  3.         db 'welcome to masm!';定义显示的字符
  4.         db 02h,24h,71h      ;定义颜色
  5. data ends

  6. stack segment
  7.         dw 8 dup(0)
  8. stack ends

  9. code segment
  10. start:        mov ax,data
  11.                 mov ds,ax
  12.                 mov bx,0  
  13.                 mov ax,stack
  14.                 mov ss,ax
  15.                 mov sp,10h
  16.                 mov ax, 0b872h
  17.                 mov cx,3

  18. s:                 push cx                        
  19.                 push ax
  20.                     push bx
  21.                 mov si,0                          
  22.                 mov di,0                       
  23.                 mov es,ax
  24.                 mov cx,10h
  25.         
  26.                 pop bx                ;bx放在循环外面,否则每次都出栈把别的数据代入了
  27. s1:                mov al,ds:[si]
  28.                 mov es:[di],al
  29.                 inc si
  30.                 add di,1    ;此处+1,理由见注释1            
  31.                
  32.                 mov al,ds:[bx+10h]        ;此处为al,一个字节
  33.                 ;mov di,1         删除这条,理由见注释1               
  34.                 mov es:[di],al                ;此处也改为al
  35.                 ;add bx,1  移到loop s1后面,理由见末尾注释2
  36.                 add di,1     ;此处+1,前面已经把di定位到属性地址,+1就是ASCII地址            
  37.                 loop s1
  38.         
  39.                 add bx,1       
  40.                 pop ax
  41.                 add ax,0ah        ;这个ax是给es的,段地址是要×16的,所以只要给16就好了
  42.                 pop cx
  43.                 loop s
  44.         
  45.                 mov ax,4c00h
  46.                 int 21h
  47.          
  48. code ends
  49. end start

  50. ;注释1:既然你上面有di,这里就不要重复定义了,直接加1到属性地址就好
  51. ;注释2:每一句是同一个颜色的;颜色就3种,要是放循环里会出界
复制代码


如果你觉得没错请点"最佳答案";如有问题可以追问
最佳答案
2 
累计签到:4 天
连续签到:1 天
酸辣小白菜  楼主| 发表于 2017-8-13 08:09:15 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-12 14:00
如果你觉得没错请点"最佳答案";如有问题可以追问

你的代码编译不了,是我的编译器有问题还是你的代码有问题?   你成功运行了?
最佳答案
2 
累计签到:4 天
连续签到:1 天
酸辣小白菜  楼主| 发表于 2017-8-13 08:15:05 | 显示全部楼层
这是我那个程序运行结果,应该怎么修改程序?
TGO5%(G7LG$N%Q4{H}D85LV.png
最佳答案
2 
累计签到:4 天
连续签到:1 天
酸辣小白菜  楼主| 发表于 2017-8-13 09:20:17 | 显示全部楼层
assume cs:code,ds:data,ss:stack


data segment
db 'welcome to masm! ';定义显示的字符
db 02h,24h,71h        ;定义颜色


data ends

stack segment

dw 8 dup(0)

stack ends

code segment

start: mov ax,data
mov ds,ax
mov bx,0  ;suo yin yan se
mov ax,stack
mov ss,ax
mov sp,10h
mov ax, 0b872h
mov cx,3

s: push cx ;hang
    push ax
        push bx
        mov si,0;suo yin zi fu
    mov di,0; mu biao lie
        mov es,ax
        mov cx,10h
s1:         mov al,ds:[si]
     mov es :[di],al
         inc si
         add di,2;fang  zi
         loop s1
         pop  bx
         mov al,ds:[bx+10h]
         inc bx
         mov di,1
         mov cx,10h
   s2:  mov es:[di],al
   
     add di,2
         loop s2
         pop ax
         add ax,0a0h
         pop cx
         loop s
         mov ax,4c00h
         int 21h
         


        code ends
        end start
       
       
       
       
       
       

这是修改后的,用了三个循环,只显示一行字
`G1P{R`QDN5N{Y_`5SRI_$6.png
最佳答案
223 
累计签到:165 天
连续签到:13 天
丶忘却的年少o 发表于 2017-8-13 09:24:56 | 显示全部楼层    本楼为最佳答案   
酸辣小白菜 发表于 2017-8-13 08:15
这是我那个程序运行结果,应该怎么修改程序?

捕获.PNG
我的是在DOSBOX运行的,没问题。 我百度了下你的提示,好像是说如果你的汇编连接工具与DOS窗口环境不兼容,就可能会遇到这样的错误。你可以百度看看。
最佳答案
2 
累计签到:4 天
连续签到:1 天
酸辣小白菜  楼主| 发表于 2017-8-13 09:50:01 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-13 09:24
我的是在DOSBOX运行的,没问题。 我百度了下你的提示,好像是说如果你的汇编连接工具与DOS窗口环境不兼 ...

这个是我结果运行不出来的那个程序?    哈哈 我太高兴了 ,程序没错呗意思就是  ,谢谢  ,我是新手,蛮有成就感的  
最佳答案
223 
累计签到:165 天
连续签到:13 天
丶忘却的年少o 发表于 2017-8-13 10:05:25 | 显示全部楼层
酸辣小白菜 发表于 2017-8-13 09:50
这个是我结果运行不出来的那个程序?    哈哈 我太高兴了 ,程序没错呗意思就是  ,谢谢  ,我是新手,蛮 ...

是的,我一模一样复制过来的。程序有什么不懂吗?主要还是理解它。记得点“最佳答案哦”
最佳答案
2 
累计签到:4 天
连续签到:1 天
酸辣小白菜  楼主| 发表于 2017-8-13 10:10:16 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-13 10:05
是的,我一模一样复制过来的。程序有什么不懂吗?主要还是理解它。记得点“最佳答案哦”

有    为什么我上面的用三个循环的程序,最后结果只有一行显示呢,你帮我看看,我就帮你最佳,嘿嘿
最佳答案
223 
累计签到:165 天
连续签到:13 天
丶忘却的年少o 发表于 2017-8-13 10:22:04 | 显示全部楼层
酸辣小白菜 发表于 2017-8-13 10:10
有    为什么我上面的用三个循环的程序,最后结果只有一行显示呢,你帮我看看,我就帮你最佳,嘿嘿

这个我在 add ax,oah后面写了。就是说地址是段地址×16+偏移地址对吧,你加在ax然后给es的那就是段地址了,所以它肯定会×16,会变成a0h的,就是你要的160,如果按照你写的那会变成1600(这里不懂可以看下面注释)。跑偏太多了,显示那肯定是显示的,就是不在你能看到的地方了。

注释:,懂了就不用看了,因为我语言能力不好,看了反而会跑偏!
你加了0a0h那最后就变成了b872+a0=b912,×16后地址就是b9120了,和你一开始定义的地址b8720相差了 b9120 - b8720 = a00,就是1600了,不是你想要的160了。
最佳答案
2 
累计签到:4 天
连续签到:1 天
酸辣小白菜  楼主| 发表于 2017-8-13 11:04:41 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-13 10:22
这个我在 add ax,oah后面写了。就是说地址是段地址×16+偏移地址对吧,你加在ax然后给es的那就是段地址了 ...

噢啦,完全明白了

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-12-19 06:12

快速回复 返回顶部 返回列表