设置手段flag value = 1
和未设置手段flag value = 0
现在我了解了在 MASM 中设置和取消设置标志的几种方法,如下所示:
test al,0 ; set Zero flag
and al,0 ; set Zero flag
or al,1 ; clear Zero flag
同样适用于Sign flag
:
or al,80h ; set Sign flag
and al,7Fh ; clear Sign flag
要设置Carry flag
,我们使用 STC 指令;要清除进位标志,我们使用 CLC:
stc ; set Carry flag
clc ; clear Carry flag
为了设置Overflow flag
,我们将两个正值相加,产生一个负和。要清除Overflow flag
,我们将操作数与 0 进行或运算:
mov al,7Fh ; AL = +127
inc al ; AL = 80h (-128), OF=1
or eax,0 ; clear Overflow flag
和flags 操作是自己理解Overflow
和Carry
容易掌握的,但是我发现很难理解设置Zero/Sign
flags 背后的数学原理。任何帮助表示赞赏!
谢谢!