私は自分自身で組み立てを学ぼうとしています (好奇心と学習への関心から) 5 から 0 まで数えるコードを開発しました。それだけです。次のコードが効率的かどうか疑問に思っていましたか?
.386
.model flat, stdcall
.data
i dd 5
.code
main:
MOV cx, 5
lp:
LOOP lp
MOVZX eax, cx
RET
END main
の値をMOVZX
コピーする命令を使用していることに注意してください(コンパイラが返すために使用するもの)。単に使用するとプログラムがアセンブルしないため、これを行います。使用は望ましいですか?または、これを行うべきより効率的な方法はありますか?cx
eax
MOV
MOVZX
私のコードでもi dd 5
、当初の計画ではアセンブルする予定だったMOV cx, i
のに、アセンブルしようとするとコンパイラがアセンブルを拒否していることに気付くでしょう。(MOVSX
同じ結果が得られます)。i
2 番目の質問は、値をcx
レジスタに移動するにはどうすればよいですか?