拈花小仙 发表于 2014-8-21 15:26:21

汇编语言 loop问题

本帖最后由 拈花小仙 于 2014-8-21 17:56 编辑

assume cs:code

code segment

       mov ax,2
       mov cx,0   ;我将cx设为0,如果在debug下调式,一直按t,还是会跳转,这是为什么呢?
s:   add ax,ax
       loop s
       mov ax,4c00h
       int 21h

code ends
end


小靚同学Leon 发表于 2014-8-21 15:26:22

1. 执行完这条add ax,ax,cx自减1,如果为0则跳出循环,不为0则继续循环。
2. 在这里你将cx先赋值0,那么这条add ax,ax执行完后,cx自减等于-1,计算机按照补码的方式存储负数,也就是FFFF,结果FFFF不为0,继续执行循环,执行FFFF次后才为0。
3.所以cx是不能赋值为0的,否则会错的。

cqj9006 发表于 2014-8-21 22:28:54

1. 执行完这条add ax,ax,cx自减1,如果为0则跳出循环,不为0则继续循环。
2. 在这里你将cx先赋值0,那么这条add ax,ax执行完后,cx自减等于-1,计算机按照补码的方式存储负数,也就是FFFF,结果FFFF不为0,继续执行循环,执行FFFF次后才为0。
3.所以cx是不能赋值为0的,否则会错的。
页: [1]
查看完整版本: 汇编语言 loop问题