YASM mov 指令给出错误:操作数 1 的大小无效

sef*_* sf 1 assembly tasm yasm

我正在尝试做一些来自 TASM 的基本 YASM,这行代码会出错:

mov [var], 7
Run Code Online (Sandbox Code Playgroud)

我已经定义,像这样的变量:var db 5
即使在尝试这样做var: db 5之后仍然出错并说:

错误:操作数 1 的大小无效

Nat*_*dge 5

与 TASM 不同,YASM/NASM 不查看 的声明var来决定它是字节、字、双字等。操作数大小需要在任何指令中指定,如果它不是从正在使用的寄存器中隐含的。所以你必须写

mov byte [var], 7
Run Code Online (Sandbox Code Playgroud)

注意

mov [var], bl
Run Code Online (Sandbox Code Playgroud)

不需要byte,因为 8 位操作数大小是从 8 位寄存器的使用推断出来的bl