我有下一个代码:
mov al, -5
add al, 132
add al, 1
Run Code Online (Sandbox Code Playgroud)
当我检查时,溢出标志和进位标志将在第一个操作中设置,而在第二个操作中,仅设置溢出.
但我不明白为什么:
怎么了?谢谢.
小智 26
当添加两个正数的结果为负或添加两个负数的结果为正时,会发生溢出.例如:
+127+1=?
+127=0111 1111
+1=0000 0001
---------
1000 0000
Run Code Online (Sandbox Code Playgroud)
当我们查看两个操作数的符号位和结果的符号位时,我们发现溢出发生且答案不正确.
Oli*_*rth 16
在无符号算术中,您已添加0xFB到0x84,即251 + 132,其确实大于8位,因此进位标志已设置.
在第二种情况下,您将+127添加到1,这确实超过了有符号的8位范围,因此设置了溢出标志.