如何在装配程序中打印数字

时间:2016-12-05 16:50:05

标签: windows assembly x86 nasm

我的装配程序有问题。我的汇编编译器是NASM。源图和输出如下图所示:

enter image description here

问题在于我无法使用extern C函数printf()从计算中打印数字。我该怎么办?

输出应该是" Ergebnis:8"但这不是正确的。

1 个答案:

答案 0 :(得分:2)

NASM documentation中指出 NASM需要方括号内存参考。当您编写不带括号NASM的标签名称时,会给出其内存地址(或者有时会调用偏移量)。因此,mov eax, val_1表示eax注册获得val_1的偏移量。当您add eax, val_2时,val_2偏移量会添加到val_1偏移量,您会看到结果。

改为写:

mov eax, [val_1]
add eax, [val_2]

你应该在eax中获得8

P.S。您似乎刚刚从NASMMASM切换到TASM。 对于像你这样的切换器,互联网上有很多指南。例如,请参阅精彩教程herehere