MSXマシン語の勉強の第2回目です。
前回のブログが思いの外反響があってびっくりしています。
それだけみなさんも
当時の憧れが強いのですかねぇ。(もうすでにできる方にも見て頂いてるようで。恐縮です)
今回は前日に少し本を読んで勉強しました。
それをまとめていこうかと思います。
2.3章
CPUがメモリに対してする仕事は、
何番地のメモリの内容を知ることと、
何番地に何々の数値を書けという2種類だけらしいです。
2.4章
2進数と16進数
これは知っています。
知らない方はこちらなどで勉強されてみてはどうでしょう?
2進数、16進数といってもそんなに難しいことはないです。
最近のプログラムではほとんど使わないけど、当時のプログラムではばんばんでてきます。
basicでもでてきます。
小学校のときはさっぱりでしたが、資格の勉強で簡単に覚えました。
簡単に説明すると、
10進数は、普段使っている数字です。
まず数字を1づつ足していくことを考えてみます。
1〜9まで順番に1つづつ増えていって、9の次が桁が上がります。
10と。
2桁になります。1と0と分解して考えるとわかりやすいと思います。
00
01
02
03
04
05
06
07
08
09
10 (桁上がり)2桁目が1となり、1桁目は0に戻る
11
12
13,,,
そしてまた11、12、13、と増えていき、19の次が、
2桁目が2になり1桁目が0にもどって
20となります。
普段は10進数はなにも考えずに使っているので、そういう考え方をしているという
のは新しいかもしれません。
そこで2進数です。
こちらも1づつ足していくことを考えてみます。
0の次が1と増えます。2進数ですので、次は桁上がりです。
10となります。2桁目が1となり、1桁目が0に戻ります。
10進数でいうと2になります。
0000
0001
0010
0011
0100
0101
と増えていきます。
ちなみに2桁めの次に桁上がりをすると、それまでと同じように
3桁目が1となり、2桁目が0、1桁目が0となります。
それでこの数字だけをみてすぐに10進数でいくつということはわかりにくい
と思います。
でも簡単な計算でわかるのです。
2進数というとよく2^0、2^1とか、2の何乗という表現がされます。
2*0、2*1、2*2、2*2*2と2を掛けていくのですが、
その計算結果というのが、
1、2、4、8、16、32、64、128、256、512、
と皆さんお馴染みの数字が並ぶと思いますw
8を例にとると、2*2*2 (2^3 2の3乗)となります。
それでこの2の何乗という数値達が2進数を10進数に変えるのに役立ちます。
8桁の2進数の各桁の上に先ほどの2の何乗を対応させてみます。
256、128、64、32、16、8、4、2、1
0、 0、 0、 0、 0、0、0、0、0
2進数の1桁目は1、2桁目が2、3桁目が4、4桁目が8、、、
と上に数値を書いてみます。
そうするとわかってくることがあります。
2進数で0001000という数字があるとします、そうすると4桁目に1が
あります。
上の2進数の何乗を対応させたのをみると、4桁目は8となっています。
2進数の 0001000 は 10進数で8になります。
簡単ですよね!
2進数の上に、右から1桁づつ、1、2、4、8、16、32、、、と書いていけば
いいのです。
そこで2進数で1がでたところに対応させれば、10進数が分かるわけです。
それだけではまだ不十分です。
2進数で 0001010とかいう数字がでた時はどうすればいいかというと、
256、128、64、32、16、8、4、2、1
0、 0、 0、 0、 0、1、0、1、0
と対応させたときに、2進数の1が付いているのは
8と2です。
その場合8+2で10となります。
1がでたところに対応する2の何乗の箇所を足せばいいのです。
(2^0は1なんですね^^)
はじめて聞いた方は、少しややこしいかもしれませんが、
そういうものだと思って暗記するのが手っ取り早いかもしれません。
あ〜、あと16進数もあるのかぁ。
今日は疲れたのでこのへんで。
16進数も特に難しいことはないです。こういうものかと覚えていただければ。
マシン語といえば16進数ですね!
でわ〜
次のページ^^
MSX BASIC + マシン語などの情報はこちらへ