Linux 上的 x86_64 nasm:打印到标准输出寄存器的十六进制值

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

这是一个反复出现的问题,但我从来没有找到适合我案例的完整解决方案,只有零碎的信息和许多不同的实现。

我在 Linux(Ubuntu 22.04)上有这段代码,带有

nasm
x86_64
,用
cpuid
打印 CPU 的 VendorID:

section .bss

    buff resb 12

section .text
global _start

_start:

mov eax, 0
cpuid

mov dword [buff+0], ebx
mov dword [buff+4], edx
mov dword [buff+8], ecx

mov rax, 1
mov rdi, 1
mov rsi, buff
mov rdx, 12
syscall

mov rax, 60
mov rdi, 0
syscall

如何打印

stdout
hex
寄存器的
eax
值?

我是 Assembly 的新手。 这个伪代码原则上看起来很简单:但是,如果这是一个合适的路径,我不知道如何在汇编中实现它。


以上代码(成功)编译为:

$ nasm -f elf64 test_cpuid.s
$ ld -o test_cpuid test_cpuid.o

我想继续使用这个程序。

assembly x86-64 nasm
© www.soinside.com 2019 - 2024. All rights reserved.