Assembly Is movs[x]指令仅适用于NASM汇编程序!马斯姆呢?
我试图使用移动整个字符串的指令movs[x]。 在NASM汇编器上使用它时,它工作得很好,但在MASM汇编器中,会发生错误 NASM: 前面的代码运行良好 MASM: 前面的代码总是给出错误A2022指令操作数的大小必须相同并且指向以下行:Assembly Is movs[x]指令仅适用于NASM汇编程序!马斯姆呢?,assembly,x86,masm,Assembly,X86,Masm,我试图使用移动整个字符串的指令movs[x]。 在NASM汇编器上使用它时,它工作得很好,但在MASM汇编器中,会发生错误 NASM: 前面的代码运行良好 MASM: 前面的代码总是给出错误A2022指令操作数的大小必须相同并且指向以下行: mov esi, msg mov edi, msg2 我知道msg和msg2是8位的,ESI寄存器是32位的,但是没有8位的ESI,为什么该代码在NASM上运行良好 如何解决这个问题?这与movsb无关。它与如何在masm中加载地址有关。您应该使用move
mov esi, msg
mov edi, msg2
我知道msg
和msg2
是8位的,ESI
寄存器是32位的,但是没有8位的ESI
,为什么该代码在NASM上运行良好
如何解决这个问题?这与
movsb
无关。它与如何在masm中加载地址有关。您应该使用movesi,offset msg
将来,您可能不希望以这种方式使用缩写movsx
,因为它可能与助记符为movsx
的指令混淆。
.386
.model flat, c
.stack 50
.data
msg db 'Hello', 0
len equ $ - msg
msg2 db len dup(0)
.code
_start:
mov ecx, 0
mov ecx, len
mov esi, msg
mov edi, msg2
rep movsb
ret
end _start
mov esi, msg
mov edi, msg2