. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  关于检测点9.3的问题??  [待解决] 回复[ 27次 ]   点击[ 1545次 ]  
huibinfog
[帖 主] [ 发表时间:2008-02-18 11:17 ] 
荣誉值:0
信誉值:0
注册日期:2008-01-17 15:56
利用loop指令,实现在内存2000段中查找第一个值为0的byte, 找到后,将它的偏移地址存储在dx中 

assume cs:code 

code segment 
  
  start:mov ax, 2000h 
        mov ds, ax 
        mov bx, 0 
       
      s:mov cl, [bx] 
        mov ch, 0 
         
        ____________  
        inc bx 
        loop s 
       
     ok:dec bx 
        mov dx, bx 
        mov ax, 4c00h 
        int 21h 
code ends 
end start
这个题里空的地方是添inc cx呢还是添dec cx呢?我感觉好象都可以啊!!我做的对不对啊!给个指导谢谢各位!
另外我想问下inc和dec是把内存地址加减1了还是把里面的内容加减1了?还有就是我想问下loop这个指令是不是说执行到这一条上才会cx=cx-1呢??
281572218
[第12楼] [ 回复时间:2009-01-09 16:23 ] 
荣誉值:0
信誉值:0
注册日期:2008-11-20 17:02
assume cs:code  
code segment  
  start:mov ax, 2000h  
        mov ds, ax  
        mov bx, 0  
      s:mov cl, [bx]    ;如2000:0003内存单元中为0  ,cl=0
        mov ch, 0      
        inc cx         ;cx=0001
        inc bx         ;加1  2000:0004 
        loop s        ;cx=cx-1
     ok:dec bx      ;上面加了1这里就减1   bx=0003
        mov dx, bx  ;DS:偏移地址  dx=0003
        mov ax, 4c00h  
        int 21h  
code ends  
end start 

debug 里面看就OK了。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved