我使用masm615汇编程序和textpad作为编辑器。我正在编写32位汇编程序。在程序中,我试图通过mul
指令设置零标志,但它不起作用。任何人都可以告诉我为什么零标志是清楚的,而eax
寄存器中的结果是零。我正在尝试以下代码
include irvine32.inc
.data
.code
main proc
xor eax,eax
call dumpregs
xor ebx,ebx
call dumpregs
mov eax,2
call dumpregs
mov ebx,3
call dumpregs
sub eax,2
call dumpregs
mul ebx
call dumpregs
exit
main endp
end main
答案 0 :(得分:1)
在程序中,我试图通过mul指令设置零标志
mul
指令不会影响零标记,请参阅Intel® 64 and IA-32 Architectures
Software Developer’s Manual第2卷第3-594页:
MUL-Unsigned Multiply
...
受影响的标志
如果结果的上半部分为0,则OF和CF标志设置为0;否则,它们被设置为1. SF,ZF,AF和PF标志未定义。
如有疑问,请务必查看开发人员手册中的说明文档。并非所有指令都会影响人们可能期望的标志。