x86
インテル資料は、x86を勉強する上で、とても重要な資料なのだが、 これだけでは、読みこなすのが難しい内容である。 上巻は、流し読みの後、拾い読みで、必要なところを繰り返し読み。 中巻は、最も使用頻度が高い、リファレンス。 下巻は、全く別のCPUの…
これまでリアルモードで試行錯誤してきたわけど、 そろそろプロテクトモードについても勉強を始めようと、 インテルの資料を眺めているのだが... もう、泣きそうです。 色々と機能が増えたのは良いのでしょうが、全部が必要とも思えない。 まずは、必須機能…
お気楽に、とりあえず、1セクタ分の読み込み機能を実装。 エラー処理やキャンセル処理などは含めていないので、 ちょっと入力を間違えたりしたら大変な事になるような代物。(苦笑) こういう細かい部分は、自分的には苦手な分野なので、 余裕がある時に、ゆ…
どうにも、こうにも、怪しいと思った箇所をいくら眺めてみても、原因が分からない。 こういう時に相談できる相手がいたら、どんなに心強い事か... そんな事を考えたりもしたけど、相談できる相手が都合良く現れる訳もなく... とにかく一人で悩み続けるしかな…
; 手続き呼び出し CALL BX とりあえず、ここが怪しい... と思われる。 試しに、 ; 手続き呼び出し CALL puts としてみる。 これだと、相対CALLだけど、これでも動かなければ、原因は別にあるはず。 結果 → (予想通り)動いた じゃ、次に、 MOV BX, puts MOV A…
なんか、とりあえず、あっさり実装出来たかな?と思ったら、 実機で動作確認してみたところ、OSが再ロードされちゃうみたい? QEMUでは、上手く動いていた気がするんだけど、何でだろ? とりあえず、手順を確認。 cmd_call: ; 変数領域確保 ; [BP-04] オフ…
さて、モニタ的な物を作っているところで、CALL機能を実装しようと思っている。 今のところ、リアルモードなので、セグメントとオフセットを入力し、 セグメントの値が、現在のセグメントと一致すれば、オフセットのみ、 一致しなければ、セグメント:オフセ…
x86のアドレッシングモードは、なかなかに豊富なわけだが、 これが、初心者にとっては、なかなかに難解なわけである。 例えば、 MOV AX, [EBX+ECX] は、OKだけど、 MOV AX, [BX+CX] は、NGとかね。 でも、 MOV AX, [BX+SI] は、OKだったり... これをき…
これまた、きっと、今更な話だと思うのだけれど、 アセンブラだけでプログラムを記述するのは、やっぱり、大変だ。 つまり、要するに、何でもありの無法地帯が大問題になったりする。 アセンブラは、即ち、ほぼプロセッサの命令その物であるわけだから、 そ…
頭では理解していたつもりでも、実際やってみて、初めて理解出来る物事は多い。 プログラミングなんて、その最たる物だと思う。 それさえ、分かっていたつもりでも、何度となく身に沁みる経験をする。 今回も、正に、そのような経験である。 x86のメモリモデ…
x86の命令フォーマットを勉強中。 なんとなくの知識を、掘り下げてじっくり学んでみると、 今まで見えなかった事が、じんわり見えてきたりもしますが、 見えなくて良かった事というのも、時にはあるように思います。 x86の命令フォーマットも、或いは、その…