私はアセンブリにかなり新しく、少し問題があります。 私はループで動作するようにしようとしているが、私は私のプログラムをテストしようとしたとき、私はエラーを得たエラー 'push'命令のA2070
A2070:プッシュで無効な命令のオペランドライン15,17,19,22上
(命令)
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
それが唯一の問題だ場合、私は、私はちょうど国会を始め、私は見つけることができませんでしたし、良い材料は、インターネット上から学ぶために言ったように私も、知りません。 私はNASM x64で作業しています。
32ビットの呼び出し規約を使用しようとしているようです。 64ビット呼び出し規約は異なります(https://en.wikipedia.org/wiki/X86_calling_conventions#Microsoft_x64_calling_convention)。 googling _ "windows 64-bit nasm printf" _またはそれらの行に沿ったものを試してみてください。 – Michael
あなたはNASMを使用していますが、あなたのコードはMASMのようです。 –