如何比较x86程序集中SF(符号标志)和OF(溢出标志)标志的值?
在cmp
指令之后,这些标志被设置,但我需要比较它们以模拟jl
指令。
答案 0 :(得分:5)
测试标志有两个主要指令:Jcc
指令和SETcc
指令。查看这两个表将为您提供检查这两个标志的几条指令。
使用SETcc
指令的示例是:
seto al ; Set byte to 1 if overflow (OF=1)
sets ah ; Set byte to 1 if sign (SF=1)
现在EAX
将包含十六进制值
0101 if both flags have been set
0100 if sign has been set
0001 if overflow has been set
0000 if both flags have been cleared
现在,您可以将AL
(溢出)与AH
(签名)与cmp al, ah
进行比较。 jl
指令检查差异(SF≠OF),因此jne
后cmp
(不等于/零)与原始jl
具有相同的效果。
最后,模拟jl
的整个代码是:
seto al
sets ah
cmp al, ah
jne lesser