2 章:アセンブラ学習と Makefile 入門

昨日書いたブートセクタのアセンブラは 1 バイトのデータを書く DB 命令、ワードのデータを書く DW 命令、領域を確保する RESB 命令のみで書かれていたので、実質バイナリとそれほど変わらないのだけど、今日はそれと等価できちんとした?アセンブラの紹介。でも昨日書いた DB だらけのプログラムを MOV 命令などで書き換えたものが突然出てきたので、「え?これなんのプログラム?」と一瞬戸惑った。

さて、今日はアセンブラの前にレジスタの説明から。x86 系CPU には 8 つの AX、CX、DX、BX、SP、BP、SI、DI という代表的なレジスタがありサイズそれぞれ 16 ビット。はじめの 4 つのレジスタは AH、AL のように上位 8 ビット、下位 8 ビットで独立して使うことができるようだ。それぞれのレジスタの役割は跡で説明があるだろうから、この辺は問題ない。さらに、すべてのレジスタはさらに上位 16 ビットを付け加えた EAX のような 32 ビットレジスタとしても使用することができるとのこと。これも問題ない。役割もなんとなくだけどわかるような気がする。

そして、さらには ES、CS、SS、DS、FS、GS というセグメントレジスタという 16 ビットのレジスタもあるらしい、これはよくわからない…そして、フラグレジスタは?プログラムカウンタの説明がないよ?ここで先のページをパラっと見てもいいのだけど、この本の構成上、流れに逆らわず順繰りに読んでいく方が面白そうなので、次の章とか後ろの索引は見ずに、後の説明を待つことにした。

次は命令について。ORG ここが何番地かをアセンブラに伝える命令(擬似命令)。転送命令 MOV は MOV src dst の書式で、 src, dst はそれぞれレジスタや即値を指定することができて、BYTE、WORD の修飾詞?を付けることで転送サイズの指定ができる。MOVB とか MOVW という命令が別に用意されていない理由はよく分からない。MOV 命令を理解できたらアセンブラは半分わかったことになるとことらしい。ブートセクタのプログラムだったら設定系ばかりだろうから、使用回数でいえば半分どころかほとんど MOV(笑)。あとはアドレッシングの説明とエンディアンの説明が少し。エンディアンって時々どっちがどっちが分からなくなる時があるから、ここで再確認できた。

プログラムには MOV と ORG 以外に CMP、JMP、ADD、INT、HLT があるけど、今日はここまで。 2 日分の途中、2-2 のさらにその途中まで進んだ。ブートプログラムの説明は、このアセンブラの説明が終わった後だからもうちょっと先になるようだ。

トラックバック(0)

このブログ記事を参照しているブログ一覧: 30日で作る自作OS 2/30 - レジスタとアセンブラの説明

このブログ記事に対するトラックバックURL: http://tsuyuguchi.com/mt/mt-tb.cgi/179

最近の画像

Zero History - ギブスンの新作が 9 月に発売 -
虐殺器官
ドミニオンのランダマイザアプリ、dominion minion が日本語対応!
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオン - 長大な叙事詩 SF のスタート -
ハイペリオン - 長大な叙事詩 SF のスタート -
「都市と星」 - 10億年と言われてもよく分からない -
「星を継ぐもの」 - 良い Sci-Fi -
トールサイズのニューロマンサーを買った
虎よ、虎よ! - 主人公フォイルの執念の物語 -

私の本棚

 

自転車走行距離

自転車走行距離

Flickr Photos

FlickrPhotos

なかのひと

Y!ログール

このサイトについて

2011年10月

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

アーカイブ

My Update

  • Loading...

その他

あわせて読みたいブログパーツ