我只是从ASM
开始,所以这个问题可能表明我缺乏理解。
我试图将3个数字相加,下面带有DWORD
的代码按预期工作:
.data
val1 DWORD 25
val2 DWORD 23
val3 DWORD 20
sum DWORD 0
.code
main proc
mov eax,val1
add eax,val2
add eax,val3
mov sum,eax
invoke ExitProcess,0
但是,一旦我从DWORD
切换到BYTE
,就像viz:
.data
val1 BYTE 25
val2 BYTE 23
val3 BYTE 20
sum BYTE 0
我的执行失败,并显示error A2022: instruction operands must be the same size
。
现在,我的理解是,BYTE
可以包含0到255之间的任何8位无符号整数。即使使用DB
也会失败。这是为什么?谢谢。