吹水哥 发表于 2011-12-13 16:52:16

在汇编语言课程中检测点9.3课后答案补全处是不是错了?

本帖最后由 吹水哥 于 2011-12-13 16:55 编辑

以下代码是小甲鱼课后发的解答题,看了觉得有问题。希望鱼油们能带我走出困惑!
assume cs:code
code segment
start:
      mov ax,2000h
      mov ds,ax
      mov bx,0
      s:
                mov cl,
                mov ch,0
                inc cx    ;此条指令为题目要求补全的指令               
                inc bx
                loop s
      
      ok:
                dec bx
                mov dx,bx
                mov ax,4c00h
                int 21h
code ends
end start

指令loop 不是寄存器cx≠0的时候跳转cx=0的时候不跳转么?   
如果补全处填的是inc cx, 那么就算是找到值为0的字节
经过代码 inc cx 递增后   cx的值为1这样loop不是又跳回标号 s 处吗?
这样代码不是一直在跳转 永远也执行不到 ok:decbx 处了?
鱼油们,求解答!!!!

zzmatrix 发表于 2011-12-13 16:59:33

“loop 标号”相当于

dec cx

if((cx)≠0) jmp short 标号


如果你不inc cx,那可能就要变为-1了,更不可能跳出循环。

吹水哥 发表于 2011-12-13 17:06:48

zzmatrix 发表于 2011-12-13 16:59 static/image/common/back.gif
“loop 标号”相当于

dec cx


嗯 ,谢谢你啦鱼油,刚发帖你就回复了!明白了 ,非常感谢!!!

吹水哥 发表于 2011-12-13 17:12:35

已经明白了,自己忽略了loop执行的时候是先 进行cx=cx-1 和判断cx是否为0 !谢谢一楼的鱼油热心解答!
页: [1]
查看完整版本: 在汇编语言课程中检测点9.3课后答案补全处是不是错了?