Я пытаюсь напечатать значение в различных регистрах в NASM, но сначала передаю значение регистра в переменную памяти перед вызовом макроса, который выполняет вызов printf. Фактическое значение не записывается в регистр, но я не могу определить, почему.
extern printf
%macro OUTPUTREGISTERS 2
section .data
prmVal1 dq %1, 10, 0
prmVal2 dq %2, 10, 0
section .text
mov rax, 2
mov rdi, reg
mov rsi, prmVal1
mov rdx, prmVal2
call printf
%endmacro
section .data
reg db "%s %d" ,10, 0
regValue dq 0
regValue2 dq 0
section .text
global main
main:
push rbp
mov rbp, rsp
mov rax, 844
mov rdi, 9393
mov [regValue], rdi
OUTPUTREGISTERS 'RDI', regValue
mov rsp,rbp
pop rbp
mov rax, 60
xor rdi, rdi
syscall
Я ожидаю, что он напечатает RDI 9393, но вместо этого он печатает: RDI 6293699