linux – 如何在程序集NASM中打印数字?

假设我在寄存器中有一个整数,我该如何打印?你能展示一个简单的示例代码吗?

我已经知道如何打印一个字符串,如“你好,世界”.

我正在Linux上开发.

解决方法:

如果您已经在Linux上,则无需自行进行转换.只需使用printf

;
; assemble and link with:
; nasm -f elf printf-test.asm && gcc -m32 -o printf-test printf-test.o
;
section .text
global main
extern printf

main:

  mov eax, 0xDEADBEEF
  push eax
  push message
  call printf
  add esp, 8
  ret

message db "Register = %08X", 10, 0

请注意,printf使用cdecl calling convention,因此我们需要在之后恢复堆栈指针,即每个传递给函数的参数添加4个字节.

上一篇:x86 ASM Linux – 使用.bss部分


下一篇:linux – 为什么printf会覆盖ECX寄存器?