是否可以使用这些指令获得等于1的符号标志?
movzx ecx, byte ptr[eax]
and ecx, 8000000Fh
jns short loc_401073
and
寄存器和8000000Fh之间有一个ecx
。在ecx
中可以是00h-FFh范围内的数字,但我不确定是否有可能得到SF = 1。有人能帮助我吗?
答案 0 :(得分:5)
如果ecx
的范围确实限于00h-FFh
,则永远不会将and ecx, 8000000Fh
设置为SF,因为最重要的位始终是清晰的。
答案 1 :(得分:1)
例如(如果需要从ECX寄存器中的8位值加载无符号整数),可以写:
MovZX ECX,byte ptr[EAX]
Test CL,080H
JZ short loc_401073
在这种情况下,如果您需要获取输入的符号,而不是跳转指令,您可以写:
SetNZ AL ; AL's register contains 1 if sign else contains 0
如果要扩展输入值的符号,可以写:
MovSX ECX,byte ptr[EAX]
Or ECX,ECX
JNS short loc_401073
在这种情况下,如果您需要获取输入的符号,而不是跳转指令,您可以写:
SetS AL ; AL's register contains 1 if sign else contains 0