next up previous contents index
: 参考: パスワードと暗号通信 : 情報化社会と関連する法律, 道徳 : 画像を HTML ファイルにはりつけるには?   目次   索引

参考: 機械語ってなに

コンピュータとソフトの仕組みを徹底的に理解 しようとおもったら, CPU を直接制御する言語である 機械語を学ぶことはさけてとおれない. JavaScript で書かれたプログラム等も最終的には 機械語に翻訳されて実行される. Windows 98, ME では 8086 CPU の機械語の機能を比較的簡単にいろいろとためすことができる. 8086 CPU というのは われわれが普段利用してる PC で使用している Pentium CPU の先祖の CPU である. Pentium CPU は, 8086 のふりをすることが可能である.

MSDOS プロンプトから起動した debug コマンドで 8086 の機械語の入力, 実行などが可能である.

機械語の比較的よみやすい参考書として, 村瀬, ``はじめての 8086'' をすすめる. 興味のある人は, debug コマンドで実際にためしながら, この本にトライしてみるといいだろう.

機械語を学ぶときには, ``機械語というのは単なるバイトの列であり, それを CPU は順に読み込み, 解釈実行する'' ということを頭につねにおいておくのが肝要である. しかしさすがにバイト列をそのまま扱うのでは, 機械語の入力等が大変なので, 普通は ニーモニックという記号が用意されていて, この記号列を用いて, 機械語を入力する. たとえば 8086 CPU では,

0xB0, 0x03
の 2 バイトは CPU の AL レジスタに数 0x03 を格納せよとの意味である. これをニーモニックで記述すると
MOV AL, 03
となる.

この節の最後に機械語で周辺 LSI を制御する簡単な例をあげておこう. 計算機の仕組みについてそれなりのイメージをもつのには, とてもよい例である.

上級者向け参考: なお, この例は Windows NT, Windows 2000 では, 実行できない. OS が周辺 LSI を直接制御するのを 禁止しているからである. Linux などの Free の PC unix では, システムコール ioperm で I/O ポートへのアクセス権限を得てから, C 言語の函数 outb, inb を用いて同様のことをためすことが 可能である.

例題 5.1   ブザーをならすプログラムを 8086 の機械語で 書け.
     IN  AL,61
     OR  AL,03
     OUT 61,AL

例題 5.2   ブザーを止めるプログラムを 8086 の機械語で 書け.

     MOV AL,00
     OUT 61,AL



Nobuki Takayama 平成15年12月5日