Make your own free website on Tripod.com


アセンブラ(8086系)

その1 ためしてみよう1

いまさらアセンブラなんかやって何になるの?と思う方もいると思いますが

使い方によっては結構つかいみちはあります。

ここでは簡単なツール等をつかってアセンブラを勉強してみます。


1.必要なもの

ほんとうはMASMかTASMがあるとよいのですが、わざわざ手に入れる必要はありません。

本格的なものをつくる場合きちんとしたツールが必要になってきますが。

ちょっとためしてみるくらいならOS標準のDEBUG.EXEで十分です。

(Win95、Win98のcommandディレクトリにあると思います。もしなければ検索で探してみてください。)



2.DEBUG.EXEのコマンド一覧

よく使うコマンドはこんなもんです

<A>アセンブル--------命令の入力

<P>実行--------------ひとつ命令を実行してみる

<T>トレース実行------追跡実行(CALLとかの中まで入っていける)

<R>レジスタ----------レジスタの確認

<D>メモリダンプ------メモリの内容を一覧表示する

<U>逆アセンブラル----次以降に実行される命令を表示する

<E>メモリ入力--------メモリに直に書きこむ

<I>I/O入力--------I/Oポートからデータを読み込む

<O>I/O出力--------I/Oポートにデータを書き込む

<Q>終了--------------DEBUG.EXEを終了する

このぐらいのコマンドがわかれば結構いろいろできます。



3.簡単な使いかた

非常に簡単なアセンブラプログラムをためしに書いてみましょう。

・まずDOS上(DOS窓でもOK)でDEBUG.EXEを実行する。

・Aと入力・実行しアセンブルモード?にはいる

・以下つぎのように入力する(左のアドレスは自動的に表示され環境によって異なる値になります)

1117:0100 MOV AH,02
1117:0102 MOV DL,30
1117:0104 INT 21
1117:0106 ここでENTERをおして終了する

・Rと入力・実行します

・下の方に先ほど入力した

1117:0100 B402 MOV AH,02

が表示されていると思います。

これは次に実行される命令でMOV AH,02はAHレジスタに02を入れるという意味です。

・Pと入力・実行します

・表示が進み下の方にやはり先ほど入力した

1117:0102 B230 MOV DL,30

が表示されていると思います。カーソルのある行の3行ほど上に

AX=0200と表示されている部分があると思いますが、これは先ほどの

MOV AH,02

が実行されてAHレジスタに02が入っていることがわかります

(AXは16bitのレジスタで上位8bitがAH、下位8bitがALレジスタになっています)

・Pと入力・実行します

・表示が進み下の方にやはり先ほど入力した

1117:0104 CD21 INT 21

が表示されていると思います。先ほどのAHと同じく少し上の方に

DX=0030となっているのがわかると思います。

・Pと入力・実行します

・Pの真下ぐらいに0と表示されていると思いますので確認してみてください。

このINT 21hというのはDOSのFunction CallsといってDOS(DOS窓)が持っている機能を呼出す割込みです。

この機能にもいろいろあって、基本的にAHレジスタの値で使用する機能が決定されます。

ちなみに02hは画面に1文字だけ文字(DLレジスタに入っている)を表示する機能です。

DLに入れた30hのASCIIコードを持つ文字は0ですので正常に動作したわけです。

・Qと入力・実行するとDEBUG.EXEを終了することができます。


今回は以上でおしまいです。

次回はもう少しDEBUG.EXEで遊んでみようと思います


そふと工房入口へ戻る