CASL U - アセンブラ言語
 前へ 目次へ 次へ

アセンブラ言語

 機械語とアセンブラ言語

 機械語とは、コンピュータが直接理解できる言語であり 0 と 1 (電気のOFFとONに対応する)の組み合わせでできている。この機械語を英字や数字等の記号を使って、人にわかりやすくした言語をアセンブラ言語という。このアセンブラ言語で書かれたプログラムは、コンピュータで直接実行できないので、機械語に変換する必要がある。この変換の作業をアセンブル(翻訳)といい、アセンブラという翻訳のプログラムを使ってコンピュータで行う。この翻訳の作業を手作業で行うことをハンドアセンブルという。
 アセンブラ言語やいろいろな言語で書かれたプログラムを原始プログラムまたはソースプログラムという。原始プログラムを機械語に翻訳したものを目的プログラムまたはオブジェクトプログラムという。


 アセンブラ言語の特徴

・長所
  1.  アセンブラ言語の命令は、機械語の命令と1対1に対応しているので使用する記憶場所や実行速度を考えながらプログラムを作成することも可能である。
  2.  プログラムの実行時間があらかじめ計算できるのでスピードが要求されるプログラムに対応できる。
  3.  ハードウェアすなわちコンピュータが用意している機能を原理的にはすべて使用してプログラムを作成できる。
・短所
  1.  アセンブラ言語はハードウェア固有の言語であるので、CPUが異なると機械語(文法)も変わる。
  2.  ハードウェアの仕組みや原理の知識が必要である。
  3.  アセンブラ言語は機械語の命令と1対1に対応しており、汎用性が重視されているのでプログラムの作成は面倒であり、できあがったプログラムはわかりにくいものになりやすい。


 数値の表し方(10進数と2進数、16進数)

 コンピュータ内部のデータは、0と1の組み合わせ、すなわち2進数で表すことができる。2進数のままではけた数が多くなり読みにくいので、16進数で表すことが多い。ちょうど、4けたの2進数を1けたの16進数で表すことができる。

8けたの2進数
  最小値 = 0000 0000 → 00(16), 0(10)
  最大値 = 1111 1111 → FF(16), 255(10)

16けたの2進数
  最小値 = 0000 0000 0000 0000 → 0000(16), 0(10)
  最大値 = 1111 1111 1111 1111 → FFFF(16), 65535(10)
10進数 16進数 2進数 10進数 16進数 2進数
0 00  0000 0000   0 0000  0000 0000 0000 0000  
1 01 0000 0001 1 0001 0000 0000 0000 0001
2 02 0000 0010 2 0002 0000 0000 0000 0010
3 03 0000 0011 3 0003 0000 0000 0000 0011
4 04 0000 0100
5 05 0000 0101 15 000F 0000 0000 0000 1111
6 06 0000 0110 16 0010 0000 0000 0001 0000
7 07 0000 0111
8 08 0000 1000 255 00FF 0000 0000 1111 1111
9 09 0000 1001 256 0100 0000 0001 0000 0000
10 0A 0000 1010
11 0B 0000 1011 4095 0FFF 0000 1111 1111 1111
12 0C 0000 1100 4096 1000 0001 0000 0000 0000
13 0D 0000 1101
14 0E 0000 1110 65533 FFFD 1111 1111 1111 1101
15 0F 0000 1111 65534 FFFE 1111 1111 1111 1110
16 10 0001 0000 65535 FFFF 1111 1111 1111 1111

 負数を表すとき、2の補数を使用する。

8けたの2進数
  負の最小値 = 1000 0000 → 80(16), -128(10)
  正の最大値 = 0111 1111 → 7F(16), 127(10)

16けたの2進数
  負の最小値 = 1000 0000 0000 0000 → 8000(16), -32768(10)
  正の最大値 = 0111 1111 1111 1111 → 7FFF(16), 32767(10)
10進数 16進数 2進数 10進数 16進数 2進数
127 7F   0111 1111   32767 7FFF   0111 1111 1111 1111  
126 7E 0111 1110 32766 7FFE 0111 1111 1111 1110
1 01 0000 0001 1 0001 0000 0000 0000 0001
0 00 0000 0000 0 0000 0000 0000 0000 0000
-1 FF 1111 1111 -1 FFFF 1111 1111 1111 1111
-2 FE 1111 1110 -2 FFFE 1111 1111 1111 1110
-127 81 1000 0001 -32767 8001 1000 0000 0000 0001
-128 80 1000 0000 -32768 8000 1000 0000 0000 0000


[例] 正数の場合
 
3D5A(16) = 3×163 + D×162 + 5×161 + A×160 = 15706(10)
3D5A(16) = 3
0011
D
1101
5
0101
A
1010
(2)
    16進数の各桁をそれぞれ4桁の2進数に変換する。
 
15706(10) = 3D5A(16)
    16  ) 15706
    16  )    981 … 10
    16  )      61 … 5
    16  )       3 … 13
                  0  … 3

 
[例] 負数を2の補数で表す場合
 
-31(10) = -1F(16) = -0001 1111(2) = 1110 0001(2)  (8桁2進数の場合)
  0001 1111(2)  
  1110 0000(2)  
   0と1を反転する。(1の補数)
 +           1(2)  
  1110 0001(2)
   1の補数に1を加算した値が2の補数になる。
 
1110 0001(2) = -0001 1111(2) = -31(10)
  1110 0001(2)  
  0001 1110(2)  
   0と1を反転する。(1の補数)
 +           1(2)  
  0001 1111(2)
   1の補数に1を加算した値が2の補数になる。
 
-222(10) = -00DE(16) = -0000 0000 1101 1110(2) = 1111 1111 0010 0010(2)
    (16桁2進数の場合)


 前へ 目次へ 次へ
 CASL U Copyright © 2003  Hiroshi Masuda

 

 

inserted by FC2 system