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」を入力します。
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