

アセンブラでの記述について教えてください。
CMDでのアセンブリで、
mov dx , [0200] (0200へは'ab'を代入しておく)
mov [0400] , dx
とすれば0400番地へabが複写されるのですが、これをmasmで
mov dx , data1
mov data2 , dx
data1 db 'ab'
data2 db '00'
とすれば「invalid instruction operands」というエラーが生じます。
dataのアドレス値を他に格納してから複写すると上手くいくのですが、お聞きしたいのは上記の違いです。
[0200]はmasmだと data1
また、
[0400]はmasmだと data2
実際のアドレス値は当然違いますが、これは理屈的に同じとならないのでしょうか?
なぜmasmの場合だと、
mov si , offset data1
mov di , offset data2
mov al , [si]
mov [di] , al
などのように、わざわざアドレス値を用いて遠まわしにしなければならないのでしょうか?
どなたかご教授のほどをお願いします。
No.1ベストアンサー
- 回答日時:
データサイズが違うからです。
dxは16ビットですが、data1はdb擬似命令により
定義されているので8ビットと解釈されます。
movにせよcmpにせよデータサイズが違う操作は
できません。
こういう時はオーバライドします。
mov dx,word ptr data1
尚、mov dx,[200]とかmov dx,[bx]の場合は
受け取り側、あるいは送り出し側のオペランドで
勝手にサイズを合わせるので問題がありません。
おまけ
16ビットのデータ交換ではaxを使うほうが命令が
1バイト少なくて済みます。条件分岐は前後に
飛べるバイトレンジが短いので、こういうケチり
かたも、必要なことがあります。
ご回答ありがとうございます。
データサイズが原因であるとは、うかつにも気がつきませんでした。
とても納得できました。
文句なしのベストアンサーとさせて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) x86_32のGASの擬似命令 3 2023/06/07 19:55
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- Mac OS MacのFinderでmovファイルのサムネイルが表示されないのと、クイックルックが出来ません。 こ 3 2023/07/24 18:40
- ノートパソコン 拡張子の変換 6 2023/05/07 20:43
- その他(動画サービス) YMM4 で MOV ファイルが読み込まれているがプレビューされない 2 2022/07/25 18:36
- Visual Basic(VBA) いつもお世話になります 下記のコード実行すると エラーになります わかるかた教えてくれませんでしょう 6 2022/12/17 15:01
- その他(AV機器・カメラ) ピアノ演奏の録画録音 3 2022/10/28 14:01
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
select caseの入れ子
-
あああ..ああい..ああう とい...
-
エクセルVBAのプログラム
-
【マクロ】実行時エラー '424':...
-
「段」と「行」の違いがよくわ...
-
【VBA】2つのシートの値を比較...
-
VBA シートをコピーする際に Co...
-
エクセルで離れた列を選択して...
-
Excel UserForm の表示位置
-
特定の文字がある行以外を削除...
-
マクロの「SaveAs」でエラーが...
-
Excelで、あるセルの値に応じて...
-
VBA 別ブックからコピペしたい...
-
マクロ実行後に別シートの残像...
-
Worksheets メソッドは失敗しま...
-
エクセルで複数のシートのクリ...
-
VBAマクロ実行時エラーの修正に...
-
指定値をマクロで検索&シート移動
-
VBAで指定範囲内の空白セルを左...
-
excel 小さすぎて見えないセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あああ..ああい..ああう とい...
-
VBAにて『元に戻すボタン』を作...
-
select caseの入れ子
-
VBAバーコード照合 バーコード...
-
エクセルで選択したセルがディ...
-
vbs 文字位置を中央に
-
アセンブラでの記述について教...
-
日付け関数について
-
xlookup関数の引数を利用して検...
-
スペース区切りのAND検索
-
エクセルで簡単なオートシェイ...
-
AND関数について
-
Application.FileDialogを利用...
-
VBAの変数をエクセルで表示
-
targetでクリックしたら○
-
VBAマクロにての絶対値
-
再帰構造のアルゴリズムで困っ...
-
エクセルVBAのプログラム
-
ある一定時間の最高値と最小値...
-
打込み作業の自動化
おすすめ情報