• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アセンブラでの記述について教えてください。)

アセンブラでの記述について教えてください

このQ&Aのポイント
  • アセンブラでの記述について質問です。CMDでのアセンブリで、mov命令を使用してデータをコピーする際、一部の命令では直接アドレスを使用する場合と、データを一旦別のアドレスに格納してからコピーする場合がありますが、それぞれの違いについて教えてください。
  • masm(Microsoft Macro Assembler)の場合、データをコピーする際にはアドレスを用いて遠まわしにコピーする必要があるのですが、なぜ直接アドレスを使用できないのでしょうか?
  • アセンブラでのデータのコピーについて、CMDとmasmの違いについて教えてください。CMDでは直接アドレスを使用してコピーが可能ですが、masmではアドレスを一度別の変数に格納してからコピーする必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

データサイズが違うからです。 dxは16ビットですが、data1はdb擬似命令により 定義されているので8ビットと解釈されます。 movにせよcmpにせよデータサイズが違う操作は できません。 こういう時はオーバライドします。 mov dx,word ptr data1 尚、mov dx,[200]とかmov dx,[bx]の場合は 受け取り側、あるいは送り出し側のオペランドで 勝手にサイズを合わせるので問題がありません。 おまけ 16ビットのデータ交換ではaxを使うほうが命令が 1バイト少なくて済みます。条件分岐は前後に 飛べるバイトレンジが短いので、こういうケチり かたも、必要なことがあります。

syugyoucyuu
質問者

お礼

ご回答ありがとうございます。 データサイズが原因であるとは、うかつにも気がつきませんでした。 とても納得できました。 文句なしのベストアンサーとさせて頂きます。

関連するQ&A