Ассемблер - Как передать целое число в printf? - PullRequest
0 голосов
/ 23 марта 2012

Я видел два разных способа передать целое число в ассемблере: один по [eax], второй по eax.Я приведу пример:

section .rodata
print_int_str: "%d"
%macro     print_int  1
     push %1
     push print_int_str
     call printf
     add esp, 8
%endmacro

как я понял, мы можем использовать print_int eax, а также print_int [eax].

Какая разница между ними?

1 Ответ

2 голосов
/ 23 марта 2012
print_int eax

напечатает вам значение eax

print_int [eax]

, будет использовать значение eax в качестве адреса и напечатает значение, сохраненное по этому адресу

, так что вы можете либо поместить целое число в eax и использовать (любой другой регистр тоже будет работать)

print_int eax

или, если у вас есть переменная, вы можете сделать

print_int [var]; or
print_int [reg]; with regs value = address of var
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...