[解決済み】Nasmエラー:オペコードとオペランドの無効な組み合わせ
2022-02-07 21:46:22
質問
NASMを習得するために、割り算をして結果を出力する非常に簡単なプログラムを作ろうとしています。
本では、すべて問題なく実行できるはずです。15を3で割ると、自動的にAXレジスタに格納され、その後ecxに移動して出力されるはずです。
しかし、コンパイルしようとすると、次のようなエラーが発生します。
nums.asm:6: error: invalid combination of opcode and operands
nums.asm:7: error: invalid combination of opcode and operands
6行目と7行目のどこがおかしいのか、どなたかご存知でしょうか?
これは私のコードです。
segment .text
global main
main:
div 3, 15
mov ecx, ax
mov ebx,1 ; arg1, where to write, screen
mov eax,4 ; write sysout command to int 80 hex
int 0x80 ; interrupt 80 hex, call kernel
exit: mov eax, 1
xor ebx, ebx
int 0x80
解決方法は?
このフォームをよく見かけるのですが。
div 3, 15
これはINTELのニューモニックではありません。
15を3で割ること。
xor edx, edx
mov eax, 15
mov ecx, 3
div ecx
2つ目のエラーについてですが、16ビットレジスタを32ビットレジスタに移動させるようなことはできません。 次のいずれかを使用する必要があります。
xor ecx, ecx
mov cx, ax
または
movzx ecx, ax
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン