[最も重要な基本部分: レジスタ + 物理アドレス表記 + デバッグ]

1. 登録する

8086CPU には 14 個のレジスタがあります:
汎用レジスタ: AX、BX、CX、DX
インデックス レジスタ: SI、DI
ポインタ レジスタ: SP、BP
命令ポインタ レジスタ: IP
セグメント レジスタ: CS、SS、DS、ES
フラグ レジスタ: PSW
8086CPU all すべてのレジスタは 16 ビットで、2 バイトを保存できます。

汎用レジスタ - AX を例に

1.最大値: 2 の 16 乗 - 1 (FFFFH)
例: AX に 18D を格納:
12H: 10010B
2. 汎用レジスタは 2 つの独立した 8 ビット レジスタに分割され、AX は AH と AL に分割できます。理由 BX、CX、DX
3. メモリ内の「ワード」の格納: 8086 のワード長は 16 ビットで、
このワードの上位バイトはこのレジスタの上位 8 ビットに格納され、
このワードの下位バイトはこのレジスタの上位 8 ビットに格納されます。このレジスタの下位 8 ビットに格納されます。

2. 物理アドレス

8086CPUのソリューション

20 ビットの物理アドレスと 2 つの 16 ビット アドレス (セグメント アドレス、オフセット アドレス) を合成します。

アドレス加算器による物理アドレスの合成方法

物理アドレス = セグメント アドレス ✖ 16 + オフセット アドレス (つまり、セグメント アドレスは 4 ビット + オフセット アドレスだけ左にシフトされます)

メモリのセグメント化表現

例:10000H~100FFH単位でセグメントを構成
開始アドレス:10000H
セグメントアドレス:1000H、サイズ:100H

例:10000H~1007FH単位でセグメント、10080H~100FFH単位でセグメント
開始アドレス:10000H、10080H
セグメントアドレス:1000H、1008H、サイズ:80H

1. セグメントアドレス✖16 は 16 の倍数である必要があるため、セグメントの開始アドレスも 16 の倍数である必要があります。 2. オフセットアドレスは 16 ビットであり、16
ビットアドレスのアドレッシング能力は 64K です。 、したがって、セグメントの長さは最大の 64K になります。

実在住所 セグメントアドレス オフセットアドレス
21F60H 2000H 1F60H
2100H 0F60H
21F0H 0060H
21F6H 0000H
1F00H 2F60

8086PC におけるストレージ ユニット アドレスの表現方法
例: データはユニット 21F60 にあり、セグメント アドレスは 2000H であり、次のようになります。
(1) データはメモリ ユニット 2000:1F60 に格納されます。 (2) データはメモリユニット2000:1F60
に格納されます。メモリの 2000H セグメントの1F60Hユニット

セグメントアドレスは非常に重要です。——特別なレジスタを使用してセグメント アドレスを保存します。
4 つのセグメント レジスタ:
CS——コード セグメント レジスタ
DS——データ セグメント レジスタ
SS——スタック セグメント レジスタ
ES——追加セグメント レジスタ

3.デバッグ

デバッグの開始

DOS プロンプトでコマンド「debug」を入力します。
DOSBoxの下

1. R コマンドを使用して、CPU レジスタの内容を表示および変更します。

1. r - レジスタの内容を表示します
ここに画像の説明を挿入

2. r レジスタ名- 指定したレジスタの内容を変更します
ここに画像の説明を挿入

2. D コマンドを使用してメモリの内容を表示します。

1.d——プリセットアドレスメモリの 128 バイトの内容をリストします。
ここに画像の説明を挿入
2.d セグメントアドレス:オフセットアドレス——メモリ内の指定されたアドレスの内容をリストします。
画像の説明を追加してください
d セグメントアドレス:オフセットアドレス終了オフセットアドレス - の内容をリストします。メモリ内の指定されたアドレス範囲
画像の説明を追加してください

3. Eコマンドを使用してメモリの内容を変更します。

1.e セグメントアドレス: オフセットアドレス データ 1 データ 2 ...
ここに画像の説明を挿入

2.e セクションアドレス: オフセットアドレス、
1 つずつ問い合わせタイプ変更
スペース - 受け入れ、続行
Enter - 終了

4. U コマンドを使用して、メモリ内の機械語命令をアセンブリ命令に変換します。

アセンブリ命令
mov ax、0123H
mov bx、0003H
mov ax、bx
add ax があり、
bx に対応するマシン コードは
B8 23 01
BB 03 00 89
D8
01 D8
ステップ
1.e アドレス データ—書き込み
2.d アドレス——
3.u アドレスの表示 - コードの表示
ここに画像の説明を挿入

5. A コマンドを使用して、機械語命令をアセンブリ命令の形式でメモリに書き込みます。

アセンブリ命令があります
mov ax、0123H
mov bx、0003H
mov ax、bx
add ax、bx
対応するマシンコードは
B8 23 01
BB 03 00
89 D8
01 D8
ステップ
a アドレス - アセンブリ命令の書き込み
d アドレス - データの表示
u アドレス - 表示コード
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

6. T コマンドを使用して機械語命令を実行します。

t——CS:IP で命令を実行
mov ax,0123H
mov bx,0003H
mov ax,bx
add ax,bx
ここに画像の説明を挿入

6. Q コマンドでデバッグを終了します。

おすすめ

転載: blog.csdn.net/RSssr/article/details/124024736
おすすめ