Ich bin ziemlich neu in Assembly und ich habe ein kleines Problem. Ich versuche, mit Loops zu arbeiten, aber als ich versuchte, mein Programm zu testen, ich habe FehlerFehler A2070 auf 'Push' Anweisung
A2070: ungültige Befehlsoperanden
auf den Leitungen 15,17,19,22 (mit Push Anweisung)
extrn ExitProcess: PROC
extrn printf: PROC
.data
komunikat1 db 'This linecode should be shown as %d ,and 10th should be last.', 0
Start PROC
push rdi
sub rsp, 28h
mov ecx, 1
_petla:
inc ecx
push ecx
dec ecx
push ecx
push komunikat1
call printf
add esp,16
pop ecx
or ecx, ecx
jne _petla
call ExitProcess
Start ENDP
END
ich weiß nicht, selbst wenn es das einzige Problem ist, wie gesagt, ich mit Assembly gerade erst begonnen und ich konnte nicht und gute Materialien aus über das Internet zu lernen, finden. Ich arbeite an NASM x64.
Sie scheinen zu versuchen, die 32-Bit-Aufrufkonvention zu verwenden. Die 64-Bit-Aufrufkonvention [ist anders] (https://en.wikipedia.org/wiki/X86_calling_conventions#Microsoft_x64_calling_convention). Probieren Sie googeln _ "Windows 64-Bit Nasm Printf" _ oder etwas in diesen Zeilen. – Michael
Sie sagen, Sie verwenden NASM, aber Ihr Code sieht aus wie MASM. –