【发布时间】:2018-04-14 21:13:46
【问题描述】:
我正在使用 NASM,x86,它给了我这个错误,我不明白为什么
%包括“io.inc” 节 .data 味精:分贝“你好世界”,0 msg2:分贝 13 计数:dw 13 部分 .text 外部打印 全球 CMAIN 主: 推送ebp mov ebp,esp 移动 eax,味精 mov ebx,count 移动 esi,0 移动 edi,0 添加编辑,计数 dec edi 再次: mov eax, msg[esi] mov msg2[edi],eax 公司 dec edi 再次循环 调用 printf mov esp,ebp 流行音乐 ret【问题讨论】:
-
你得到什么错误? “它给了我这个错误”不是错误描述。你的问题是什么?错误表示哪一行?
-
@fuz 错误出现在问题标题中,但一开始我也很困惑,然后编辑甚至添加了更多代码,而这两行在这个特定问题中已经足够了。
-
OP:我快速查看了源代码的其他部分,它看起来像 MASM 风格,即执行
mov ebx,count可能期望ebx加载值 13,但在 NASM 中内存值必须在括号中,因此这会将内存地址count存储到ebx,而不是内存中的值。不确定您使用的是哪本教程/书籍,但您要么在开始时付出更多努力,不仅要学习 x86 asm,还要学习识别 MASM 与 NASM(小的)语法差异并修复它们,或者您应该切换书籍或汇编器。所有这些选项听起来都不错(甚至可以全部尝试!)。