アセンブリ言語(Wang Shuangバージョン)の研究ノートの第8章におけるデータ処理の2つの基本的な問題(1)

はじめに

この章は、これまでのすべての内容の要約です。コンピュータはデータ処理と計算を実行するマシンであることを知っているので、2つの基本的な問題があります。
(1)処理されたデータはどこにありますか?
(2)処理するデータの長さは?

説明を簡単にするために、2つの記述記号regおよびsregを今後のコースで使用します。regはレジスタを意味し、sregはセグメントレジスタを意味します。

reg包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di
sreg包括:ds,ss,cs,es

8.1 bx、はい、の、bp

(1)8086 CPUでは、これら4つのレジスタのみを[...]でメモリユニットのアドレス指定に使用できます。たとえば、[bx]は使用できますが、[ax]は使用できません

ここに画像の説明を挿入

(2)「[...]」では、これらの4つのレジスタは個別に、または次の4つの組み合わせのいずれかで表示できます:
1.bxとsi
2.bxとdi
3.bpとsi
4.bpとdi

ここに画像の説明を挿入

(3)レジスタbpが[...]で使用されており、セグメントアドレスが命令で明示的に指定されていない限り、セグメントアドレスはデフォルトでssになります。

ここに画像の説明を挿入


8.2機械語命令によって処理されるデータの場所

機械語命令の大部分はデータ処理の命令です。処理は、読み取り、書き込み、および操作の3つのカテゴリに大別できます。
命令を実行する前に、処理対象のデータは、内部CPU、メモリ、ポートの3つの場所にあります。

ここに画像の説明を挿入


8.3アセンブリ言語でのデータの場所の表現

アセンブリ言語では、データの場所を表すために3つの概念が使用されています。

  1. 即時データ(idata)
  2. 登録する
  3. セグメントアドレス(SA)とオフセットアドレス(EA)

即時データ(idata)

機械語命令(実行前のCPUの命令バッファー内)に直接含まれているデータは、アセンブリ言語で呼び出されます。これは、アセンブリー命令で直接与えられる即時データ(idata)です。
ここに画像の説明を挿入

登録する

命令によって処理されるデータはレジスタにあり、対応するレジスタ名はアセンブリ命令に指定されています。
ここに画像の説明を挿入

セグメントアドレス(SA)とオフセットアドレス(EA)

命令で処理されるデータはメモリにあり、EAはアセンブリ命令で[X]の形式で指定でき、SAは特定のセグメントレジスタにあります。

  • セグメントアドレスを保持するレジスタをデフォルトにすることができます
  • セグメントアドレスを保持するレジスターを明示的に指定することもできます。

デフォルトのセグメントアドレスレジスタ
ここに画像の説明を挿入
ここに画像の説明を挿入

セグメントアドレスを保持するレジスタを明示的に指定する
ここに画像の説明を挿入


8.4アドレス指定モード

データがメモリに格納されている場合、このメモリユニットのオフセットアドレスを指定するために複数の方法を使用できます。このメモリユニットの配置方法は、一般にアドレッシングモードと呼ばれます。

ここに画像の説明を挿入


8.5命令で処理されるデータの長さは?

8086CPUの命令は、バイト(バイト演算、8ビット)とワード(ワード演算、16ビット)の2つのサイズのデータ​​を処理できます。したがって、命令がワード演算を実行するのか、バイト演算を実行するのかは、機械語命令で示す必要があります。

(1)処理するデータのサイズをレジスタ名で指定します
ここに画像の説明を挿入
(2)レジスタ名がない場合は、演算子X ptrを使用してメモリユニットの長さを示します。Xは、アセンブリ命令でワードまたはバイトにすることができます。
ここに画像の説明を挿入
(3)その他の方法

一部の命令は、デフォルトでワード単位またはバイト単位にアクセスします。たとえば、プッシュ命令はワード演算のみを実行するため、プッシュ[1000H]はデフォルトでワード単位になります。また、spの各変更は2の単位であるため、Popはワード演算専用です。

元の記事116件を公開 82のような 訪問数10,000以上

おすすめ

転載: blog.csdn.net/weixin_43092232/article/details/105502239