Help us understand the problem. What is going on with this article?

コツコツやらない小6がvirtualboxで「30日でできる!OS自作入門」をやり遂げる話。2日目(前)

前回やったこと

・16進数をバイナリエディタで打ちこんだ。
・アセンブラで「hello world」を出した。
詳しくは前回の記事 https://qiita.com/gorira_tatsu/items/0b5aec93aa74a8c89107
記事書き出したけど、自分の振り返りみたいに書いていくから理解が深まるね〜

さて開発再開

helloos.nas
; hello-os
; TAB=4

        ORG     0x7c00          ; このプログラムがどこに読み込まれるのか

; 以下は標準的なFAT12フォーマットフロッピーディスクのための記述

        JMP     entry
        DB      0x90

〜中略〜

; プログラム本体

entry:
        MOV     AX,0            ; レジスタ初期化
        MOV     SS,AX
        MOV     SP,0x7c00
        MOV     DS,AX
        MOV     ES,AX

        MOV     SI,msg
putloop:
        MOV     AL,[SI]
        ADD     SI,1            ; SIに1を足す
        CMP     AL,0
        JE      fin
        MOV     AH,0x0e         ; 一文字表示ファンクション
        MOV     BX,15           ; カラーコード
        INT     0x10            ; ビデオBIOS呼び出し
        JMP     putloop
fin:
        HLT                     ; 何かあるまでCPUを停止させる
        JMP     fin             ; 無限ループ

msg:
        DB      0x0a, 0x0a      ; 改行を2つ
        DB      "hello, world"
        DB      0x0a            ; 改行
        DB      0

        RESB    0x7dfe-$        ; 0x7dfeまでを0x00で埋める命令

        DB      0x55, 0xaa

; 以下はブートセクタ以外の部分の記述

        DB      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
        RESB    4600
        DB      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
        RESB    1469432

意味不明なプログラム本体について読み解いて行きます。今回は新出命令がたくさんありますね〜
最初はORG命令です。これは機械語が実行時にpcメモリのどこに読み込まれるかをnaskに教えてあげる命令です。ちなみにORG命令の元になった英語は「origin」で、意味は開始点です。ここからプログラムが始まるよー、ちなみにここはメモリのどこどこに読み込まれるんだよー、そう言う事だからnaskよろしくねー。的な?(ほとんど丸写し)

その次に出てくるのはJMP命令です。これはC言語で言う所のgoto文らしいけど知らんがな。元になった英語は「jump」です。簡単簡単。

その次がentry:で、これがラベルの宣言らしい。JMP命令の飛び先の指定などに使います。C言語とよく似ているらしい。ちなみにentryは「入り口」という意味らしい。あー全然頭に入って来ねえ。

終わり

正直長いのでここら辺で終わらせました。本当に完成できるんですかね???????????
 /|_________ _ _
〈  To BE CONTINUED…//// |
 \| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄~ ~  ̄

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away