はじめて読むマシン語
Last updated
Was this helpful?
Last updated
Was this helpful?
4 時間
???
計算機の基本的な仕組みがわかる良い本だと思う
8ビットCPUをベースにした内容で、シンプルにコンピュータ・アーキテクチャの基本がまとまっている
CPUのバスはそんなものもあったなぁと復習になった
モニタプログラム
マシン語レベルでコンピュータの基本的な操作を行う機能を持ったプログラム
メモリに書き込まれているデータを見る
メモリに任意のデータを書き込む
メモリに書き込まれているマシン語のプログラムを実行する
コマンド名
説明
Dコマンド
メモリの内容を見る(Dump)コマンド
Sコマンド
メモリにデータを書き込む(substitute)コマンド
Gコマンド
任意のアドレス(番地)からプログラムを実行させるコマンド
分類
説明
アドレス
メモリ個々につけられているアドレス
バイト
8ビット=1バイト.8ビットのマイクロコンピュータではメモリの基本的な単位
ビット
コンピュータが取り扱うすべてのデータの最小単位
64キロバイトメモリであれば、64 * 1024 = 65536 バイトを扱うことができる
一般的な 8 ビットCPUは
アドレス:16ビット(=2バイト)
データ:8ビット(=1バイト)
で動作している。
BASICで書いたプログラムが実行できるのはコンピュータがBASICインタプリタというマシン語で作成されたプログラムを実行中であるから
BASICインタプリタ
BASICの文法に従って書かれたユーザプログラムを解読して、自分自身で用意しているマシン語プログラムに置き換える作業を1行ずつ実施
置き換えたマシン語を実行する機能を持つ
メモリ上にロードされているマシン語プログラムは、00(16)~FF(16)の間の数値の羅列
これらの数値が以下を表現する
コンピュータに対する各種命令
アドレス
データとしての数値
メモリのRead,Write
8ビットCPUには16本のアドレスバスと8本のデータバスと呼ばれるデータ線が接続されている
CPUはメモリをRead,Write
64Kバイトのメモリの中から任意の1バイトを選択するための16ビットのアドレスデータをアドレスバス上に出力
16ビットの組み合わせに該当する1バイトのメモリが選択される
選択された1バイトのメモリは、データバスと接続された状態になる
Readの状態になれば、データバス上に出力されているメモリの内容をCPUのレジスタに取り込む
Writeであれば、CPUのレジスタにセットされているデータをデータバスに出力して、その1バイトのメモリに書き込ませたりする
Read,Writeは常に1バイト単位(8ビット)で行われる
メモリの種類
メインメモリ
CPUが直接Read,Writeすることができる64Kバイトのアドレス空間にあるメモリ
ROM
マスクROM
どんな手段を使っても書き換えることができない
PROM(Programable ROM)
専用のPROM書き込み器で消去することが可能
新しくプログラムを書き込むことが可能
RAM
CPUからすればROMもRAMもどちらも違いはない
バンク切り換え方式
複数のバンクメモリを場合場合で選択する
同一メモリエリアにある複数のバンクは、ある時点ではただひとつのみが生きている
バンク切り換えによって、全体が64Kバイト以上のメモリ空間が存在するように見せることが可能
単一のメモリは64Kバイト
切り換えは、ソフトウェアコントロールが取られている
実行するプログラムの中でバンク切り換えを実施
プログラムの中でコマンドを実行し、ハードウェア的なスイッチを動作させる
I/Oのメカニズム
入出力するとは、データバスに周辺装置のデータや信号を接続するということ
その接点がI/Oポート。入出力ポート。
それぞれのポートを介して「8ビットデータ」や「ステータス信号」をやりとりする
ポート数は256まで設けることが可能
バスの概念
バスの種類
アドレスバス
データバス
CPUから延びるバスラインに、メモリやI/Oやその他必要なものが適当にぶらさがっている
アドレスバスやデータバスは必要に応じて必要なデータがのせられている
ニーモニックとアセンブリ言語
ニーモニック
機械語の1命令を表したもの
アセンブリ言語
ニーモニックを使ってプログラミング言語の体系にまとめたもの
オブジェクトプログラム
16進数で表されたマシン語のコード
CPU
レジスタ
メインレジスタ
A,B,C,D,E,H,L
Aレジスタはアキュームレータ
演算が可能な唯一のレジスタ
フラグレジスタ
各種のフラグの状態を示すために使われているレジスタ
裏レジスタ群
専用レジスタ群
スタックポインタ
プログラムカウンタ
16ビットのレジスタ
次に実行しなければならないプログラムのメモリアドレスを保持
命令
8ビットロード命令
メインレジスタの8ビットの各レジスタに関する命令
各レジスタ間で行う1バイト単位のデータのやり取りを行う命令群
8ビット算術演算命令
ALUが実施
フラグ
サイン
ゼロ
キャリー
プログラムカウンタを強制的に制御して、プログラムの流れを変える方法
ジャンプ命令
コール命令
リターン命令
割り込み
スタック
サブルーチンコールなどに用いられる
各レジスタの内容を一時的にメモリへ退避
16ビットロード命令
入出力命令