«Строка» не очень точный термин.Строка идентификации поставщика CPUID / EAX = 0 содержит только 12 символов ASCII, упакованных в 3 регистра DWORD.Нет такого символа завершения, как в C, и информации о длине, как в PASCAL.Но это всегда одни и те же регистры, и это всегда 3 * 4 = 12 байтов.Это идеально подходит для системного вызова:
section .bss
buff resb 12
section .text
global _start
_start:
mov eax, 0
cpuid
mov dword [buff+0], ebx ; Fill the first four bytes
mov dword [buff+4], edx ; Fill the second four bytes
mov dword [buff+8], ecx ; Fill the third four bytes
mov eax, 4 ; SYSCALL write
mov ebx, 1 ; File descriptor = STDOUT
mov ecx, buff ; Pointer to ASCII string
mov edx, 12 ; Count of bytes to send
int 0x80 ; Call Linux kernel
mov eax, 1 ; SYSCALL exit
mov ebx, 0 ; Exit Code
int 80h ; Call Linux kernel