2012-03-23 64 views
0

我看到两种不同的方法来传递整数在assmbler:一个由[eax],第二个由eax。 我举一个例子:汇编程序 - 如何将整数传递给printf?

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]

它们之间有什么不同?

回答

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 
+0

这就是我知道,我问了一下整数。谢谢。 – 2012-03-23 13:01:24

+1

我编辑了我的答案 – x539 2012-03-23 13:10:48

相关问题