【发布时间】:2019-06-19 13:05:13
【问题描述】:
我是 Assembly 的初学者,我一直在努力掌握 NASM 的基础知识。我在 Mac 上,使用 xcode,我已经开始处理数据,我有一个简单的问题。
我很难找到答案,而且 NASM 的手册非常繁琐。
这对于你的 NASM 大师来说一定是超级基础的。
如果我在内存中声明一个变量
section .data
counter dw 0
global _start
_start:
inc counter ; i get a "invalid combination of opcode and operands" here
ret
是不是我必须将内存移动到寄存器中才能对其执行操作,而我不能“就地”操作内存?
如果这是一个愚蠢的问题,我很抱歉,但我已经尝试在谷歌上搜索并找不到明确的直接答案。
【问题讨论】:
-
参见 nasm 手册,特别是 Section 2.2.2: NASM Requires Square Brackets For Memory References。您还需要指定操作大小,因为它无法推断。 TL;DR:使用
inc word [counter] -
感谢@Jester 的快速回答,并感谢您提供手册的链接。那本手册对我来说很难读。