day3 进入32位模式并导入C语言

        MOV        AX,0x0820
        MOV        ES,AX
        MOV        CH,0            ; シリンダ0
        MOV        DH,0            ; ヘッド0
        MOV        CL,2            ; セクタ2

        MOV        AH,0x02            ; AH=0x02 : ディスク読み込み
        MOV        AL,1            ; 1セクタ
        MOV        BX,0
        MOV        DL,0x00            ; Aドライブ
        INT        0x13            ; ディスクBIOS呼び出し
        JC        error                        

INT 调用磁盘BIOS

JC jump if carry,其中carry就是carry flag的意思,这个flag在INT 0x13的返回值中,存入AH内、

JNC jump if not carry;

JAE jump if above or equal;

JBE jump if below or equal;

 

最简单的操作系统?

fin:
    HLT
    JMP fin

 

harib00e文件夹中,cons启动make run一下,将生成的img文件放到BZ中看一下,发现:

1.文件名会写在0x002600以后的地方;

2.文件的内容会写在0x004200以后的地方。

 

省略一系列修改,直接跳到harib00i中,开始加入C语言 bootpack.c

bootpack.c是如何变成机器语言的呢:

首先,使用ccl.exe从 bootpack.c生成 bootpack.gas;
第二步,使用gas2nask.exe从bootpack.gas生成 bootpack.nas;
第三步,使用 nask.exe从 bootpack.nas生成 bootpack.obj;
第四步,使用obi2bim.exe从bootpack.obj生成 bootpack.bim;
最后,使用bim2hrb.exe从 bootpack.bim生成 bootpack.hrb;

这样就做成了机器语言,再使用copy指令将 asshead.bin与 bootpack.hrb单纯结合到起来,就成了 haribote.sys。

posted @ 2019-12-25 16:51  迷失彼岸  阅读(179)  评论(0)    收藏  举报