我的装配程序有问题。我的汇编编译器是NASM。源图和输出如下图所示:
问题在于我无法使用extern C
函数printf()
从计算中打印数字。我该怎么办?
输出应该是" Ergebnis:8"但这不是正确的。
答案 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。您似乎刚刚从NASM
或MASM
切换到TASM
。
对于像你这样的切换器,互联网上有很多指南。例如,请参阅精彩教程here和here。