. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  检测点9.3疑惑  [待解决] 回复[ 46次 ]   点击[ 2213次 ]  
one_step
[帖 主] [ 发表时间:2007-11-29 11:30 ] 
荣誉值:0
信誉值:0
注册日期:2007-11-29 11:23
补全程序,利用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
dzxxbj
[第43楼] [ 回复时间:2013-05-22 19:41 ] 
荣誉值:0
信誉值:0
注册日期:2013-05-22 12:56
总结了下。
1.认为不缺内容的,犯错的原因是把Loop和C语言的循环功能混淆了,C语言中确实只要完成循环体中的内容就好了;
2.汇编中完成循环功能的模板是,CX的赋值在LOOP外,而这里CX出现在了LOOP中,必然要格外考虑;
3.0-1=FFFFH,不是-1,当然-1的补码形式FFFFH;

分析循环的一个方法:从成立条件出发,这里成立的条件就是CX=0,由此出发,逐条指令进行分析,由于,汇编语言不是高级语言.所以分析是要从汇编指令和机器码两个角度一步一步对应好.
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved