今ごろマイコン3(メモリにデータを入れたり出したりする命令)
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

今ごろマイコン3(メモリにデータを入れたり出したりする命令)

2018-04-10 19:00
    ・引き続き、某マイコンの命令コード一覧表の動作を読み解いていく。
    4 AM(エーエム) 働きはAr→M 、つまりAレジスタの値をデータメモリに入れる。
     入れる場所には指定があって、(50+Yレジスタの値)番地に代入する。と書いてある。
    こんな感じですかね。

     レジスタは4ビットしか無いのでAレジスタ、みたいに名前で指定できるけど、メモリはもうちょっと情報が入るエリアが広いのでメモリのどこに入れるのかも指定しないといけない。
     メモリにはプログラムが入っているプログラムメモリとデータを入れるデータメモリに分かれていて、マイコンはここがプログラム用、ここがデータ用、というのは判定できないのでプログラムを組む側がメモリのどのへんか番地とかアドレスとかいうもので指定する。
     先の図では省略したけどアドレス00から4Fまではプログラム、アドレス50から5Fまではデータ、とメモリを使い分けている。つまり50+Yレジスタ値と指定すれば移動先はデータメモリで、初期値でははっきり書いてないけどYレジスタには0が入っているのだろうと思う。アドレス51のメモリにデータを入れたければ1を、アドレス5AならA、アドレス5FならFを、Yレジスタにあらかじめ入れておけばいいことになる。
     データメモリ部分には、初期値でFが入っていると書いてある。データが来れば上書きされちゃうんだから何でもいいんだろうけど、それまでの使用状況なんかでてんでバラバラな値だと困ることもあるので強制的にFになるようにしているのかもしれない。

    5 MA(エムエー) 働きはM→Ar つまり メモリの値をAレジスタに代入する。ただし、
    読み出す値があるメモリの番地は(50+Yレジスタの値)、と書いてある。
     要するにAMと逆の動作ということになる。メモリのどの番地のデータであっても、あらかじめYレジスタに適切な数字を入れておけば呼び出せることになる。


    メモリの様子をもう少し見てみる。
    番地00から4Fまでがプログラムエリアだから、

    00
    ・    (0~Fで16番地)
    0F
    10
    ・    (0~Fで16番地)
    1F
    20
    ・    (0~Fで16番地)
    2F
    30
    ・    (0~Fで16番地)
    3F
    40
    ・    (0~Fで16番地)
    4F
     となって、16×5で80番地がプログラムのために用意されていることになる。
    番地一つに4ビットマシンだから4ビットの情報が入る。
     だからプログラム用に用意されている情報量は80×4=320ビット。
     1バイト=8ビットだから、320÷8=40バイトと換算される。
     今はあまり使わないと思うけど、ニブルという単位もあって1ニブル=4ビット。
     こちらで換算すると80ニブルということになる。

     データメモリは50から5Fまで、16番地分しかないから
     16×4=64ビット。8で割って8バイト。あるいは16ニブル。

     4ビットマシンならニブル、8ビットマシンならバイトで表現すると、何番地分メモリ内に
    収納できるかという目安になって、プログラムをどのくらいの大きさ(何行くらい、何番地くらい)で作ればよいかという目安になるのかもしれない。
     16ビットマシンなら、16ビットを1ワード、32ビットマシンなら32ビットをダブルワード
    という呼び方があるらしいのでこうしたものを目安にできるのかもしれない。
     64ビットをまとめてひと言で、という呼び方もあるのかもしれないけど見つからなかった。

     呼び方はともかく、このマイコンのデータメモリは64ビットマシンなら1番地分の容量しかない。マイコンの時代はTK-80がRAMをフル実装して1キロバイト、その後発売されたPC-8001が16キロバイトとかだったらしい。
    http://poplars.world.coocan.jp/photo/pc/PC-8001.pdf
     この時代のパソコンはだいたい16キロバイトのメモリで発売されて、これを32キロバイトまで増設できる、なんのがフツーだったけど、自分でメモリ増設するのはコワイので最初から32キロバイトで売ってくれ、という人も多かったらしい。増設メモリパックが当初は2万5千円くらいしたらしい。上場企業のサラリーマンの初任給が12万円前後だった時代。
     私も16Kで買って、結局増設できないままだったっけ。処分しちゃったけど今にして思えば取って置けばよかった。当時はそんな余裕がなかったんだけど。


     今は500円ちょっとで8ギガバイトのUSBメモリとか買えちゃうけど。

     当時の主流記録媒体であるフロッピーディスクは、片面とか両面とか倍密度とかいくつも種類があってややこしい記号がついていたけど、今は全く見かけなくなった5インチくらいのだと1.2メガバイト、今もごくまれに見かける3.5インチだと1.44メガバイトが多かったみたい。
     フロッピーディスクは、すぐいっぱいになってしまう記録媒体、という印象だった。
    デリートしないで取り出して壊したりした。
    https://matome.naver.jp/odai/2145947349449249101

     キロとかメガとかギガとかも、10進数じゃないから1000倍とか百万倍とか十億倍とかじゃなくて、本当は1キロバイトは1000バイトじゃなくて2の10乗の1024バイトで、昔はカタログなんかでもkを大文字と小文字で区別していたりした気もするけど、逆に1キロバイト=1000バイトで製品を作る事例もあるらしく、今メガ!とかギガー!とかいってるのが10進数基準のキロメガギガなのか二進数基準のキロメガギガなのかはよくわかんなくなってる気がする。お店の人に聞いてもどれだけ答えてくれるだろうか。
     畳一畳の大きさは一間×半間、と思っているといつの間にか団地サイズが主流になって、一畳と言われても共通基準にならなくなってるのと似てる気がする(江戸間とか京間とか、こちらもも深入りするとたいへんなんだけど)。
    http://yohshiy.blog.fc2.com/blog-entry-163.html

    https://enjoy.sso.biglobe.ne.jp/archives/byte/

     話がそれたけどとにかくメモリにデータを格納したり、取り出したりする命令がマイコンにはあるんだ、とわかった。ただしレジスタというもの経由で。
    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。