在汇编中写一个寄存器

问题描述 投票:0回答:2

这次很简单的问题。我该如何编写屏幕程序集中单个寄存器的内容?我有点讨厌只看一个寄存器的值就调用DumpRegs。

我正在使用x86体系结构,在Visual Studio和Irvine32.lib中使用MASM。

assembly printing masm cpu-registers irvine32
2个回答
1
投票

[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

0
投票

[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函数调用。

© www.soinside.com 2019 - 2024. All rights reserved.