汇编网首页登录博客注册
mouse的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  我要做些我能做的事情,不能老是睡下去了!
  • 『姓名』:;-)               
  • 『性别』:男    『发送消息
  • 个人说明:我的小老鼠;-)
  • 详细信息『加为好友』
学习动态

[2007-12-14 11:19] 检测点9.2/9.3

9.2 在内存2000H段中查找第一个值为0的byte,找到后将他的便宜地址存储在dx中,利用jcxz指令。

assume cs:code 

code segment 
start: 
     mov ax,2000h 
     mov ds,ax 
     mov bx,0 

  s: mov ch,0        ;填空 
      mov cl,[bx]     ;填空 
      jcxz ok         ;填空 
      inc bx          ;填空 
      loop s 
 ok: mov dx,bx 
     mov ax,4c00h 
     int 21h 
code ends 
end start 

jcxz操作:cx=0,ip=ip+8位位移

9.3 功能同上,用loop指令。
assume cs:code 

code segment 
start: 
     mov ax,2000 
     mov ds,ax 
     mov bx,0 

 s:  mov ch,0 
     mov cl,[bx] 
     inc cx        ;填空 
      inc bx 
     loop s
 
 ok: dec bx 
     mov dx,bx 
     
     mov ax,4c00h 
     int 21h 
code ends 
end start 

loop操作:1.cx-- 2.cx!=0,ip=ip+8位位移
评论次数(3)  |  浏览次数(1032)  |  类型(汇编作业) |  收藏此文  | 

[  lion   发表于  2007-12-14 17:44  ]

正确

[  wbkyh   发表于  2011-06-28 09:32  ]

检测点9.2中,loop s指令有问题,该指令执行后,cx=cx-1,如果cx=0,则循环结束,也就是说如果2000h段地址处某单元字节数据为1,则循环结束,执行dx=bx,是不符合题目要求的。个人观点,如有不当之处,请多多指教。

[  mouse   发表于  2011-07-29 15:37  ]

楼上的看错了,填空位置填inc cx,就是为了找到第一个值为0的byte

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码