neverjpのぶらり日記

コンピューター関連の記事とぶらりと出かけた先の写真など

アセンブリ言語とアセンブラその2



機械語は人間が覚えて扱うのが困難なため、これを覚えやすい英単語に置き換えてプログラムを作成するためにプログラミング言語が開発されました。このプログラミング言語には低級言語と高級言語があり、パソコンつまりCPUが理解できる言語に近いものを低級言語、人間が理解しやすい言語を高級言語と分類しました。低級言語とは一般的にアセンブリ言語をいい、そのほかのプログラミング言語、C 言語やJavaなどのほとんどの言語が高級言語となります。ただし、機械語を低級言語に含める場合もあります。アセンブリ言語では、英単語に通じる「add(加算)」や「mov(転送)」などが使われます。このようにアセンブリ言語機械語を1つずつの英単語に置き換えるプログラミング言語です。機械語をこのような文字列に置き換えたものをニーモニックと呼び、これを使って命令を記述していきます。この言語は、機械語と1対1で対応し、命令部(オペコード)と演算対象(オペランド)の値またはアドレスから構成されます。この言語は構造が単純で原始的なため習得が難しく、複雑なプログラムには向きません。そこで、これを使って作成するプログラムは単純な命令だけとなりサイズが小さくなるので、ほかのプログラミング言語に比べて実行速度は速くなります。そこで、アセンブリ言語を用いたプログラムはハードウェアの制御のためのデバイスドライバなどに利用されています。アセンブリ言語で作成したプログラムを機械語に変換することはコンパイルと呼ばずにアセンブルといい、変換する変換ソフトをアセンブラといいます。

Cseg. . . segment

Start:

. . . . . mov. . . ax,dseg

. . . . . mov. . . ds,ax

. . . . . mov. . . dx,offset msg

. . . . . mov. . . ah,09h

. . . . . int. . . . .21h

. . . . . mov. . . ax,4C00h

. . . . . int. . . . .21h

. . . . . ↑オペコード

. . . . . . . . . . ↑オペランド

int 21hは標準API です。ah,ax,dxはレジスタで、dxにmsgのアドレスを代入し、ahには09hのファンクションコードを入れています(メッセージを表示するプログラムです)。また2進数表示の代わりに16進数を使っています。たとえば、16進数"09h"は2進数"0000 1001b"です。

人気blogランキングへ←人気blogランキングに参加しています。よろしければ1票を!