[解決済み] エラーです。操作サイズが指定されていません - NASm
2022-02-06 17:11:55
質問
16ビットNASMアセンブリで作業しているのですが、コードがビルドされないという問題があります。エラーはここにあるすべてのMOV行で発生します。
section .bss
x_coord RESB 8 ; [x_coord] is the head, [x_coord+2] is the next cell, etc.
y_coord RESB 8 ; Same here
pixel_x RESB 2 ; Storage for calculations
pixel_y RESB 2 ; Storage for calculations
...
MOV [pixel_x], [x_coord]
MOV [pixel_y], [y_coord]
CALL DrawPixel
MOV [pixel_x], [x_coord+2]
MOV [pixel_y], [y_coord+2]
CALL DrawPixel
MOV [pixel_x], [x_coord+4]
MOV [pixel_y], [y_coord+4]
CALL DrawPixel
MOV [pixel_x], [x_coord+6]
MOV [pixel_y], [y_coord+6]
CALL DrawPixel
これは、アセンブラが変数のサイズを知らないために起こるという話を読んだことがあります。試しに
MOV [pixel_x], byte [x_coord]
ネットの書き込みで提案されましたが、同じエラーになります。私はx_coordとy_coordの最初の2バイトをpixel_x/pixel_yにコピーし、次の2バイト、次の2バイト、そして次の2バイトをコピーしたいだけなのですが、どうすればよいでしょうか?どうしたらこれがうまくいくのでしょうか?
ありがとうございます :)
解決方法は?
プロセッサには単純なメモリ間移動命令がないので、移動する場合は 一度に2バイト レジスタを媒介として使用します。
MOV ax, word [x_coord]
MOV word [pixel_x], ax
MOV ax, word [y_coord]
MOV word [pixel_y], ax
CALL DrawPixel
変数がメモリ上で連続しているので、このようなこともできるかもしれません。
MOV eax, dword [x_coord] ; move BOTH x_coord AND y_coord into the register
MOV dword [pixel_x], eax ; populates BOTH pixel_x AND pixel_y
CALL DrawPixel
4ピクセルしか描画しない場合は、1つずつ呼び出しを行うことができます。
MOV eax, dword [x_coord]
MOV dword [pixel_x], eax
CALL DrawPixel
MOV eax, dword [x_coord+2]
MOV dword [pixel_x], eax
CALL DrawPixel
MOV eax, dword [x_coord+4]
MOV dword [pixel_x], eax
CALL DrawPixel
MOV eax, dword [x_coord+6]
MOV dword [pixel_x], eax
CALL DrawPixel
もし、描画するピクセル数がもっと多ければ、ループを書くことを考えるかもしれません。
(余談)
DrawPixel
を使用して、レジスタからの値を使用します)。
関連
-
[解決済み】MARIEアセンブリ言語で`Skipcond`はどのように動作しますか?
-
[解決済み】アセンブリJLEのjmp命令例
-
[解決済み] MIPs Assemblyでsllなどを使ってビットをずらすのはなぜですか?
-
[解決済み] cmplとcmpの違いについて
-
[解決済み] なぜ、addiではなくaddiuを使うのか?
-
[解決済み] .quadディレクティブはアセンブリでどのように機能するのですか?
-
[解決済み] 8086アセンブリ言語での2つのレジスタのスワッピング(16ビット)
-
[解決済み] MIPSアセンブリ言語では、なぜ.globl mainを使うのですか?
-
[解決済み] cmp命令の理解
-
[解決済み] ST(0)をEAXに移動させる方法は?
最新
-
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 実装 サイバーパンク風ボタン