Fehler A2022: Anweisungsoperanden müssen gleich groß sein
Hey, ich erhalte diesen Fehler, wenn ich diesen Code ausführe:
1>------ Build started: Project: Project, Configuration: Debug Win32 ------
1> Assembling [Inputs]...
1>assign2.asm(32): error A2022: instruction operands must be the same size
1>assign2.asm(33): error A2022: instruction operands must be the same size
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\masm.targets(49,5):
error MSB3721: The command "ml.exe /c /nologo /Zi /Fo"Debug\assign2.obj" /Fl"Project.lst"
/I "c:\Irvine" /W3 /errorReport:prompt /Taassign2.asm" exited with code 1.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Hier ist der folgende Code, der auftritt, wenn ich versuche, ml1337skillz von usPop zu subtrahieren und das Ergebnis in Difference zu speichern. (Denken Sie daran, ich fange gerade erst an, diesen Bereich zu lernen :))
TITLE Learning (learning.asm)
INCLUDE Irvine32.inc
secondE = 00000000010001010000000000000000b
.data
myName BYTE "John Smith"
nameLen = ($ - myName)
nationalDebt QWORD 7975482431119.47d
usPop DWORD 313900000d
kindaNegative SDWORD -2147483648d
my1337Sk1LLz WORD 1337h
negUnit SBYTE -1
half BYTE 0.5d
Difference SWORD ?
starField BYTE 2000 DUP("*")
bigLoss SDWORD -50000
.code
main PROC
FillRegs:
mov eax,usPop ;store 3139000000d into eax
sub eax,my1337Sk1LLz ;subtracts 1337h from usPop in eax
mov Difference, eax ;stores eax into Difference
mov edx,bigLoss ;stores -50000 into edx
mov eax,secondE ;store 0E00 into eax
mov ah,'A' ;store string A into ah
mov al,'X' ;store string X into al
mov ebx,secondE ;store 0E00 into ebx
mov bh,'B' ;store string B into bh
mov bl,'X' ;store string X into bl
call DumpRegs ;shows Registers
exit ;exits
main ENDP
END main