学習リファレンス:
https://helijian.blog.csdn.net/article/details/60885095
ヘリジアンさんの組み立て講座を参照
1. 組み立て機能
1.1 アセンブリはすべての言語の祖先です
1.2 かけがえのない使用シナリオ
アセンブリ言語は今でもかけがえのない役割を果たしています。
-
効率
: 運用効率: ソフトウェアのコアコンポーネントの開発、高速実行、リアルタイム応答。
. 開発効率: 正しいことをすれば、開発効率は無敵です -
最下層: コンピュータおよび周辺機器用のドライバ
. オペレーティング システムのカーネル
. 組み込みシステム: 家庭用電化製品、計測器、モノのインターネット... -
コンピュータ学習におけるアセンブリ言語の独特の役割 - コンピュータ システムの核心に迫る
- コンピュータの原理やオペレーティングシステムなどの講座の理解を深めるのに便利です。
- アセンブリ言語を学習して使用することで、機械の論理機能を知覚、体験、理解できるようになります。
- さまざまなソフトウェアシステムの原理を理解するための技術的理論的基礎を築く
- ハードウェアシステムの原理を習得し、実用化するための基礎を築きます。
- 基礎となるプログラムのデバッグ方法とエラー分析方法を学びます。
1.3 学習内容
位置付け: ハードウェア構造を理解し、命令セットを習得し、プログラムの実行プロセスを理解する
内容: 8088、8086 命令セットおよびアセンブリ言語プログラミング
ビデオと実践的な練習。
2. 機械語からアセンブリ言語へ
2.1 機械語と機械命令
-
機械語は機械命令の集合です。
-
マシン命令は、マシンが正しく実行できるコマンドです。
機械語命令は 2 進数の文字列で表されます (例: 01010000)。
レベルパルス:
初期のプログラマの作業形式
は、0 と 1 のデジタル プログラミングのプログラム コードを紙テープまたはカードにパンチし、1 はパンチされ、0 はパンチされません。その後、プログラムはテープ マシンまたはカード マシンを介してコンピュータに入力されます。計算。
:例:S = 768 + 12288 - 1280を計算するプログラム
:マシンコード
2.2 アセンブリ言語とアセンブリ命令
: アセンブリ言語の本体はアセンブリ命令です。
組立命令と機械命令の違いは命令の表現にあります。
組立説明書は、覚えやすい形式で書かれた機械の説明書です。
アセンブリ命令は機械命令のニーモニックです。
機械語命令:1000100111011000
演算:レジスタBXの内容をAXに送信
アセンブル命令:MOV AX、BX
レジスタ: データを保存できる CPU 内のデバイス。
CPUには複数のレジスタがあります。
2.3 アセンブリ言語によるプログラミングの作業手順
- ディレクティブを使用すると、コンパイラが実行します
- アセンブリ命令、マシンコードのニーモニック。
- コンパイラによって認識されるその他のシンボル
3. コンピュータの構成
3.1 コンピュータの構成
CPUはコンピュータ全体の動作を制御したり、計算を行ったりする、コンピュータの中核となる部品です。CPU が動作するには、命令とデータが供給される必要があります。
命令とデータはメモリ(メモリ)に保存されます。メモリがなければ、最高のパフォーマンスを発揮する CPU も動作しません。
3.2 命令とデータの表現
コンピュータ内のデータと命令。メモリまたはディスクに保存されます。
命令とデータはメモリに保存され、コンピュータにはさまざまな種類のメモリが搭載されています。
ただし、在计算机工作的过程中, 指令和数据则必须存放到内存中
。
CPU の場合、アクセス命令とデータはメモリから読み書きされます。
データと命令は両方ともバイナリ情報です。
質問: バイナリ情報 1000100111011000 はデータですか、それとも命令ですか?
; 1000100111011000 ─> 89D8H (データ)
; 1000100111011000 ─> MOV AX,BX (プログラム)
同样是一串二进制数, 到底代表的是数据还是指令, 这取决于cpu 如何去使用它
。
-
データはどのように表現されるのでしょうか?
; 1000100111011000B (2進数)
; 89D8H (16進数)
; 104730O (8進数)
; 35288D (10進数) -
データ量:B、KB、MB、GB、TB…
3.4 コンピュータのストレージユニット
各ストレージユニットに 1 バイトのデータを配置します。
メモリはいくつかの記憶ユニットに分割されており、各記憶ユニットには 0 から順に番号が付けられます。
たとえば、右に示すように、
メモリには
0 から 127 までの番号が付けられた128 個のストレージ ユニットがあります。
実際の
メモリ空間は非常に「大きく」、
8086 には 20 のデータ ラインがあります
20位,代表5个十六进制数
。
アドレス空間2 20 2^{20}21MB で20
3.5 コンピュータ内のバス
コンピュータには、CPU と他のチップを接続する専用のワイヤがあり、通常はバスと呼ばれます。
物理的に: ワイヤーの集合。
論理的に. アドレスバス
. データバス
. コントロールバスに分割されます。
論理的に分割:
- アドレスバス
CPUはアドレスバスを介して記憶装置を指定します。
• アドレスバス幅により、アドレス指定可能なメモリ位置のサイズが決まります。• N 個のアドレス バス (幅 N)、アドレス指定空間2 N 2^N
に対応2N
- データバス
CPUとメモリなどのデバイス間のデータ伝送はデータバスを介して行われます。
• データ バスの幅は、CPU と外部との間のデータ転送速度を決定します。
例:データ89D8Hをメモリに書き込む場合のデータ転送
- コントロールバス
CPU は制御バスを介して外部デバイスを制御します。
• 制御バスはさまざまな制御線の集合です。
• 制御バスの幅は、外部デバイスを制御する CPU の能力を決定します。
4. メモリの読み書きとアドレス空間
4.1 CPUによるメモリの読み書き
CPU がデータを読み書きするには、次の 3 種類の情報で外部デバイスと対話する必要があります。
- 記憶装置のアドレス
(アドレス情報) - デバイス選択(選択はレジスタ、メモリグループ空間、ポート)、リードまたはライトコマンド
(制御情報)
データ(データ情報)の読み取りまたは書き込み
マシンコード: 101000000000001100000000
16 進数: A00300
アセンブリ命令: MOV AL、[3]
意味: ユニット 3 からデータを読み取り、レジスタ AL に送信します。
操作を実行し、番号 3 のメモリ ユニット内のデータをレジスタ AL に送信します。これには 3 つのステップが含まれます。
- CPU によって読み取られるメモリ アドレスは、アドレス ラインを介してメモリ ユニットに送信され、対応するアドレスが見つかります。
- コントローラは、制御ラインを介してメモリ ユニットに読み取りコマンドを送信します。
- アドレスに対応するメモリユニットからデータを取得し、それをレジスタに送信します。
4.2 メモリアドレス空間
RAM: 読み取りおよび書き込み可能、
ROM: 読み取り専用メモリ、システムの BIOS など、コンピューターの起動時に必要な情報。
什么是内存地址空间
:
これは、アドレスを格納するために特別に使用されるスペース容量がどれだけあるかを表します。
CPU アドレス バス幅は N、アドレス空間は2 N 2^Nです。2NB
8086CPU のアドレス バス幅は 20 であるため、1MB のメモリ ユニットをアドレス指定でき、そのメモリ アドレス空間は 1MB です。
CPUの観点から見たアドレス空間の割り当て
4.3 統一アドレス指定
あらゆる種類のメモリを論理メモリとして扱い、均一にアドレス指定します。
すべての物理メモリは、複数のストレージ ユニットで構成される論理メモリと見なされます。
4.4 メモリアドレス空間の割り当て方式
各物理メモリは、この論理メモリ内のアドレス セグメント、つまりアドレス空間を占有します。
CPU がこのアドレス空間でデータを読み書きするとき、実際には対応する物理メモリでデータを読み書きします。