下記のコードは、私が現在書いてみようとしているプログラムのほんの一部ですが、プログラムの他の部分は関連していないので、必要なものだけを貼り付けました。とにかく、私がやろうとしていることは、ループが何回実行されるべきかを決定するために、inputLoopCounter内に格納された値をecxに移動することです。しかし、私がこのプログラムをアセンブルしようとすると、質問のタイトルに記述されているエラーが出ます。誰でもこの理由を説明できますか?x86アセンブリ極端な初心者質問: "無効な命令オペランド"?
.data
inputLoopCounter BYTE -1
.code
mov ecx,inputLoopCounter
x86エキスパートではありませんが、32ビット値が必要なレジスタに "BYTE"を配置することが問題なのでしょうか?代わりに、おそらく単に 'cl'をロードしてください。実際には、メモリからロードするときに角カッコ[]を使用する必要があります。まもなくここに来る本当のエキスパートに任せておこう:) –
変数をバイトにしたいが、それでもdwordレジスタにロードしたい場合、 'movsx ecx、byte ptr [inputLoopCounter]'。 – Michael
@Michaelそれがバイトであることが絶対必要でないなら、それを動作させるためにBYTEからDWORDに変更することは可能でしょうか?編集:ありがとう、ホセマヌエルアバカロドリゲス、あなたは私の質問に答えた。それは非常に素人間違いでした。 – Proto