我目前正在学习8086汇编,我理解符号和溢出标志之间的区别但是当我们只打开其中一个时,我想不出一个例子。能给我举个例子?请尝试使用最简单的命令,以便我能理解这个例子。
答案 0 :(得分:1)
x86' neg
指令根据0 - input
设置标记。
.model small
.data
.code
mov ax, @data
mov ds, ax
mov al, 6
neg al ; this will set sign flag but not overflow flag ( NEG instruction is used to find 2's complement of some number )
mov al, -127
sub al, 127 ; this will set overflow flag but not sign flag: -127 - 127 = +2
mov al, -128
neg al ; this sets both OF and SF: 0 - 128 overflow to -128
mov ah, 04ch
int 21h ; exit(al)
end
在emu8086中测试过。
请注意0-128
溢出到-128。 (2's complement special case of the most negative number being its own absolute value)。最大的8位2的补码整数是+127。