数値表現と文字表現 コンピュータの内部は,電圧が「あるか」,「ないか」で判断する2進数で動作しています. 例えばAレジスタの内容が‘11001101’のときは,図1-17のように各ビットの電圧は,ビットが‘1’のときは5V(または3.3V),‘0’のときは0Vと思ってください.
このビット状態を人が読むときに,8ビット程度なら2進数で‘11001101’と読んでも構いませんが,もっとビット数が多くなると何を読んでいるのかわからなくなります. 2進数を読みやすくするための,いろいろな工夫を次に説明します. ビットの重み 10進数の場合,桁が一つ上がるとその重みは10倍になりますが,2進数の桁の重みは2倍です. 図1-18のように,8ビットの右端ビットを‘1’とすれば,その左隣りは‘2’,さらにその左隣りは‘4’と続きます.
n進数 2進数(Binary) ‘11001101’を2進数で表すと,“11001101B”になります.なお,BはBinaryのBです. 8進数(Octal) 図1-19のように,下位から3ビットに分けて,0〜7までの数で表現します.
このビット・パターンを8進数で表すと“315Q”になります.本来ならOctalのOですが,ゼロと区別するためQを使います. Octalは7セグメント表示器での数値表示以外あまり使われません 16進数(Hexadecimal) 図1-20のように,下位から4ビットに分けて0〜15までの数で表現します.10進数では0〜9までしかありませんから,10〜15までをA〜Fの文字で表します.
このビット・パターンを16進数で表すと“0CDH”になります. 頭の0(ゼロ)は,ラベルと区別するために先頭文字がA〜Fのときに付けます.後ろの“H”はHexのHです. 10進数(Decimal) 10進数は普段私たちが使っている数字です.数字の前後にはなにも付けません. 図1-21のように,数値はビット・パターンの重みを全部足し算したものになります.
2進化10進数[Binary Coded Decimal (BCD)] 図1-22のように,4ビットで10進数の1桁を表します.
1ワードで0〜9999までの値が表現できます.図のビット・パターンでは“6789”を表しています. 文字表現 ASCII文字への変換について説明します. Z80のニーモニック, LD HL,12ABH をアセンブルすると, 21H,ABH,12H といったコードを生成します.これはバイナリ・コードですから,パソコン内で文字としての扱いや,ROMライタへの転送などにも都合よくありません. パソコン内では,これをASCII文字に変換してテキスト・ファイルとして扱い,INTELLEC HEXまたはMOTOROLA Sxx形式のフォーマットで出力します. 例えばバイナリのビット・パターン“00100001B”をHex読みすると“21H”です.これを‘21’とパソコン画面に表示するためにASCII文字‘2’(=32H)と,ASCII文字‘1’(=31H)に変換します(図1-23).
なお,ビット・パターン“00100001B”をそのままASCII読みすると‘!’になります. 制御の実態 「メモリ,I/Oアクセス」の項で使用したメモリ,I/O接続図を少し変更して,自動温度制御を例に説明します. ハードウェア 図1-24に,自動温度制御回路の例を示します.
I/Oに8ビット1チャネルのA-Dコンバータをおき,スケーリングを省略するため,0〜255℃スケールの温度計を接続し,なべの温度を測ります. ソリッド・ステート・リレーSSRでON/OFF制御できる電熱器を使い,図のようになべを加熱します. ここで使用するMPUは,Z80コンパチブルのTMPZ84C015です.このMPUは,Z80CPUにザイログ社オリジナルの周辺I/O Z80PIO,Z80SIO,Z80CTCなどが内蔵されたものです. 電熱器制御用のSSRのゲートは,内蔵Z80PIOのポートAのビット0で駆動します. Copyright 2000 武下 博彦 |
|
Copyright 1997-2001 CQ Publishing Co.,Ltd.