这次很简单的问题。我该如何编写屏幕程序集中单个寄存器的内容?我有点讨厌只看一个寄存器的值就调用DumpRegs。
我正在使用x86体系结构,在Visual Studio和Irvine32.lib中使用MASM。
[Irvines的DumpReg
重复使用Macros.inc
的宏:mShowRegister
。可以直接使用。示例:
INCLUDE Irvine32.inc
INCLUDE Macros.inc
.code
main PROC
mov esi, 0DeadBeefh
mShowRegister ESI, ESI
exit
main ENDP
END main
带有更多选项的已记录宏为mShow
。示例:
mShow
[Irvine32具有采用EAX值的输出函数,例如INCLUDE Irvine32.inc
INCLUDE Macros.inc
.code
main PROC
mov esi, 0DeadBeefh
mshow ESI, h
exit
main ENDP
END main
(无符号基数10)。
请参见文档WriteDec
,该文档具有指向WriteHex(十六进制=基数16)和WriteInt(带符号基数10)的链接。
这些函数使用Irvine32调用约定,并保留all寄存器,包括传递参数的EAX寄存器,因此,您甚至可以至少将它们作为EAX的调试打印插入。通常,您会将它们用作普通的输出函数。
通常,对于asm调试,您将使用调试器,而不是debug-print函数调用。