汇编程序 - 如何将整数传递给printf?

时间:2012-03-23 12:44:06

标签: assembly x86

我看到了两种不同的方式在assmbler中传递整数:一个是[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 个答案:

答案 0 :(得分:2)

print_int eax

会打印出eax

的值
print_int [eax]

将使用eax的值作为地址,并将打印存储在此地址的值

所以您可以将整数放入eax并使用(任何其他reg也可以使用)

print_int eax

或者如果你有变量可以做

print_int [var]; or
print_int [reg]; with regs value = address of var