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。
浙公网安备 33010602011771号