本贴是用汇编代码实现《30天自制操作系统》里面的功能,以此来磨练自己的编码能力。
先说说用到的工具:一、nasm;二、软碟通;三、虚拟机(我用的是bochs);四、编辑器(我用的是radasm)
第0~2天
目标:创建一个软盘映像,用它启动时,显示一个字符串
以下是汇编代码:
--------------代码开始--------------
;编译指令:nasm heloos.asm -o a.img
ORG7C00H
JMP entry
db90h
db'HELLOIPL';启动区的名称
dw512;每扇区大小
db1;簇的大小(1扇区)
dw1;隐藏扇区
db2;FAT个数
dw 224;根目录大小
dw 2880;总扇区数
db 0f0h;磁盘种类
dw9;FAT的长度(9扇区)
dw18;1磁道有几个扇区
dw2;磁头数
dd0;不使用的分区
dd2880;总扇区数
db0,0,29h
dd-1
db'HELLO-OS ';磁盘名称(11字节)
DB'FAT12 ';磁盘格式名称(8字节)
RESB18
entry:
mov ax,0
mov ss,ax
mov sp,7c00h
mov ds,ax
mov es,ax
mov si,msg
putloop:
mov al,[si]
add si,1
cmp al,0
je fin
mov ah,0eh
mov bx,15
int 10h
jmp putloop
fin:
hlt
jmp fin
msg:
db0ah,0ah
db'hello world'
db0ah
db0
resb510-($-$$)
db55h,0aah
db0f0h,0ffh,0ffh,0,0,0,0,0
resb4600
db0f0h,0ffh,0ffh,0,0,0,0,0
resb1469432
--------------代码结束--------------
使用代码开头的指令,可以生成一个软盘映像,用软碟通打开,可以往里面存放文件。
但是,在之后的好长一段时间内,里面只会存放一个文件。如果存入了其它文件,系统有可能无法正确引导。
因为排版问题,如果代码太长,我可能不会把它贴出来,但在帖子最后,会附上云盘链接
总文件夹: http://pan.baidu.com/s/1pL5YPhL
先说说用到的工具:一、nasm;二、软碟通;三、虚拟机(我用的是bochs);四、编辑器(我用的是radasm)
第0~2天
目标:创建一个软盘映像,用它启动时,显示一个字符串
以下是汇编代码:
--------------代码开始--------------
;编译指令:nasm heloos.asm -o a.img
ORG7C00H
JMP entry
db90h
db'HELLOIPL';启动区的名称
dw512;每扇区大小
db1;簇的大小(1扇区)
dw1;隐藏扇区
db2;FAT个数
dw 224;根目录大小
dw 2880;总扇区数
db 0f0h;磁盘种类
dw9;FAT的长度(9扇区)
dw18;1磁道有几个扇区
dw2;磁头数
dd0;不使用的分区
dd2880;总扇区数
db0,0,29h
dd-1
db'HELLO-OS ';磁盘名称(11字节)
DB'FAT12 ';磁盘格式名称(8字节)
RESB18
entry:
mov ax,0
mov ss,ax
mov sp,7c00h
mov ds,ax
mov es,ax
mov si,msg
putloop:
mov al,[si]
add si,1
cmp al,0
je fin
mov ah,0eh
mov bx,15
int 10h
jmp putloop
fin:
hlt
jmp fin
msg:
db0ah,0ah
db'hello world'
db0ah
db0
resb510-($-$$)
db55h,0aah
db0f0h,0ffh,0ffh,0,0,0,0,0
resb4600
db0f0h,0ffh,0ffh,0,0,0,0,0
resb1469432
--------------代码结束--------------
使用代码开头的指令,可以生成一个软盘映像,用软碟通打开,可以往里面存放文件。
但是,在之后的好长一段时间内,里面只会存放一个文件。如果存入了其它文件,系统有可能无法正确引导。
因为排版问题,如果代码太长,我可能不会把它贴出来,但在帖子最后,会附上云盘链接
总文件夹: http://pan.baidu.com/s/1pL5YPhL