我使用read_int得到了两个数字,并加上了两个数字。 最后,我检查了EFLAGS(dump_regs)。
因此,要设置进位标记,我尝试了“ 4,294,967,295 + 1” 但是,进位标记未设置。(“ CF”未显示在屏幕中)
如果我要设置进位标志,我需要什么数字?
Output
x = value
n = index
minimum: 1
roll: 1
n: 4
x: 1
1
roll: 2
n: 3
x: 2
2
roll: 3
n: 2
x: 3
3
roll: 5
n: 1
x: 5
5
然后我输入了4294967295和1
答案 0 :(得分:0)
如果运行以下代码,则可以使自己相信进位标志已设置:
call read_int ;Input say 150
mov ebx, eax
call read_int ;Input say 180
add al, bl ;This produces a carry because 150+180=330 DOESN'T FIT the 8-bit register AL
setc al ;AL becomes 1
movzx eax, al ;EAX becomes 1
call print_int ;Show it
用不会产生进位的数字进行验证:
call read_int ;Input say 80
mov ebx, eax
call read_int ;Input say 125
add al, bl ;This produces NO carry because 80+125=205 DOES FIT the 8-bit register AL
setc al ;AL becomes 0
movzx eax, al ;EAX becomes 0
call print_int ;Show it