指令操作数必须具有相同大小的错误 [英] Instruction operands must be of the same size error
本文介绍了指令操作数必须具有相同大小的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
myArray byte 01, 03, 02, 05
在代码中,我有一行
mov eax, BYTE PTR myArray[ecx]
汇编器在这里抛出一个构建错误指令操作数的大小必须相同
这可能是什么原因呢?我该怎么解决这件事。我想循环遍历此数组并打印它的
元素
TITLE Subtract Two Nums (SubTwoNums.asm)
; This program collects two numbers and subtracts the second from the first
INCLUDE Irvine32.inc
.data
prompt BYTE "Please enter a number: ", 0
data byte 0A9h
fib dword 01030205h
msg byte ", " , 0
dwordzeros DWORD 000000h
myArray dword 01, 03, 02, 05
.code
main PROC
mov eax, 0
mov ecx, 0
loop_start:
cmp ecx, 3
jge loop_end
mov eax, myArray[ecx]
call WriteDec
mov edx, offset msg
call WriteString
add ecx, 1
jmp loop_start
loop_end:
exit
主ENDP 结束主干
推荐答案
eax
为32位,来自BYTE PTR myArray[ecx]
的值为8位。根据您要实现的目标,有几种可能的解决方案。其中包括
您可以将字节值移到临时32位寄存器中:
movzx ebx,BYTE PTR myArray[ecx]
add eax,ebx
您可以将总和累加为8位值:
add al,BYTE PTR myArray[ecx]
您可以将myArray
的类型从byte
更改为dword
。
这篇关于指令操作数必须具有相同大小的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文