. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于loop指令那道问题。有点蒙希望大牛解答下,  [待解决] 回复[ 3次 ]   点击[ 237次 ]  
qqq3068212
[帖 主]   [ 发表时间:2010-06-15 11:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-23 16:56
检测点9.3 

补全编程,利用loop指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。

assume cs:code 

code segment 

start:  mov ax,2000h 

        mov ds,ax 

        mov bx,0

      s:mov cl,[bx] 

        mov ch,0 

        inc cx      

        inc bx 

        loop s 

     ok:dec bx 

        mov dx,bx 

        mov ax,4c00h 

        int 21h 

code ends 

end start
不解的地方是那个inc cx。在我所知的cx和loop是cx如果等于0程序向下执行。可是程序中的cx等于0了。去掉inc cx。程序一直在死循环到 s标号处,正常不是应该等于0向下走么。还有inc cx 这样cx 不是等于1了么。程序应该减一跳回才是,结果是正常向下走了。而cs也减1了
qqq3068212
[第1楼]   [ 回复时间:2010-06-15 11:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-23 16:56
刚才又调试了一下发现以前一直是错的,居然cx设置成1.程序才正常减1向下执行。如果cx直接设置成0会死循环
mess
[第2楼]   [ 回复时间:2010-06-16 13:27 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
注意loop指令在执行步骤,是先cx减1,然后判断是否继续循环
engyu0
[第3楼]   [ 回复时间:2010-10-15 10:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-08 21:20
s:mov cl,[bx]  

        mov ch,0  

        inc cx       

        inc bx  

        loop s  
inc cx應該雲掉 你想如果說cx爲0 那麽你在加一的話,哈哈,不是又成一了,,所以這是程序問題
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved