汇编实现软盘启动代码如下,做一个记录:
org 0x7c00
jmp entry
db 0x90
DB "HELLOIPL" ;启动区的名称可以是任意的字符串
DW 512 ;每个扇区的大小
db 1 ;簇的大小
dw 1 ;fat的起始位置
db 2 ;fat的个数
dw 224 ;根目录的大小
dw 2880 ;该磁盘的大小(必须是2880扇区)
dw 0xf0 ;磁盘的种类
dw 9 ;fat的长度(必须是9个扇区)
dw 18 ;1个磁道,有几个扇区(必须是18)
dw 2 ;磁头数
dd 0 ;不使用分区
dd 2880 ;重写一次磁盘大小
db 0,0,0x29 ;意义不明,固定
dd 0xffffffff ;可能是卷标号码
db "Hello-os" ;磁盘名称
db "FAT12" ;‘磁盘格式名称(8个字节)
RESB 18 ;先空出18个字节
;程序主体
entry:
mov ax,0
mov ss,ax
mov sp,0x7c00
mov ds,ax
mov es,ax
mob si,msg
putloop:
mov al,[si]
add si,1
cmp al,0
je fin
mov ah,0x0e
mov bx,15
int 0x10 ;调用显卡
jmp putloop
fin:
hlt
jmp fin
;信息显示部分]
msg:
db 0x0a,0x0a
db "Hello,world"
db 0x0a
db 0
RESB 0x1fe-$
db 0x55,0xaa