我想我应该改变这一行:
inc byte [nr]
退出循环,我的程序应打印512。
%include "io.inc"
section .data
nr: db 0x88, 0x1
section .text
global CMAIN
CMAIN:
for:
inc byte [nr]
jnc for
inc byte [nr + 1]
PRINT_UDEC 2, nr
xor eax, eax
ret
答案 0 :(得分:1)
当nr
接近255的字节限制时,INC
将超过它,并从255回绕到0.
不幸的是INC instruction
没有在环绕声中设置 CARRY
标志 - 导致无限循环,因为始终满足JNC
的条件。< / p>
所以一个解决方案就是改变
inc byte [nr]
到
add byte [nr], 1
修改?CARRY
标志。然后整个算法应该按预期成功。
答案 1 :(得分:0)
您没有指定可以更改的内容。所以在这种情况下:
%include "io.inc"
section .text
global CMAIN
CMAIN:
mov eax,512
PRINT_UDEC 4,eax
ret ; and not caring to return 0