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