8086汇编 - 符号和溢出标志

时间:2017-11-24 22:23:09

标签: assembly x86-16 emu8086

我目前正在学习8086汇编,我理解符号和溢出标志之间的区别但是当我们只打开其中一个时,我想不出一个例子。能给我举个例子?请尝试使用最简单的命令,以便我能理解这个例子。

1 个答案:

答案 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。