布衣 发表于 2012-7-19 13:31:26

大家好,有个地方不太懂,求教

本帖最后由 布衣 于 2012-7-19 13:57 编辑

这是汇编语言检测点9.3关于loop指令的答案
assume cs:code
code segment
start:
      mov ax,2000h
      mov ds,ax
      mov bx,0
      s:
                mov cl,
                mov ch,0
                inc cx    ;此条指令为题目要求补全的指令(我的问题——为什么要让CX的值加1,这样一来cx不就永远不等于0,一直在s循环里不断重复?)
                inc bx            
      loop s
      
      ok:
                dec bx(为什么要让bx的值减1呢)
                mov dx,bx
                mov ax,4c00h
希望大家能予以解惑,在此感谢
                int 21h
code ends
end start

布衣 发表于 2012-7-19 13:53:42

恍然大悟,原来我傻了。

布衣 发表于 2012-7-19 13:55:37

恍然大悟,原来我傻了。

2809196927 发表于 2012-7-19 16:28:59

inc cx是因为loop s会先执行cx-1所以若cx=0,那么loops后会向下执行 ,进入ok,但是loop s前 inc bx了,所以最后要bx的值减一
有问题可以继续追问{:1_1:}

洋溢丶sniper 发表于 2012-7-23 07:07:35

额 俺还没有懂   求大神指点

洋溢丶sniper 发表于 2012-7-23 07:08:08

貌似要刷评论才有预币赚哎0.0

九墓 发表于 2012-7-23 08:53:32

{:5_109:}能解决就好。
页: [1]
查看完整版本: 大家好,有个地方不太懂,求教