; haribote-ipl
; TAB=4
ORG 0x7c00
JMP short entry
nop
DB 'MSDOS5.0'
DW 512
DB 8
DW 36
DB 2
DW 0
DW 0
db 0xf8
dw 0
dw 63
dw 255
dd 1
dd 15727634
dd 15330
dw 0
dw 0
dd 2
dw 1
dw 6
times 12 db 0
db 80h
db 0
db 29h
dd 18467
DB "NO NAME "
DB "FAT32 "
entry:
MOV AX,0
MOV SS,AX
MOV ES, AX
MOV SP,0x7c00
MOV DS,AX
MOV SI,msg
call putloop
jmp fin
putloop:
MOV AL,[SI]
ADD SI,1
CMP AL,0
JE over
MOV AH,0x0e
MOV BX,15
INT 0x10
JMP putloop
over:
ret
fin:
HLT
JMP fin
msg:
DB 0x0a, 0x0a
DB "hello os"
DB 0x0a
DB 0
; RESB 0x7dfe-$
times 510 - ($ - $$) db 0
DB 0x55, 0xaa
再windows上用nasm工具生成ipl10.bin
nasm ipl10.nas -o ipl10.bin
可以使用winhex查看生成的二进制信息:
使用dd工具将ipl10.bin写入u盘,百度搜索dd for windows即可下载。
首先获得u盘在windows下的信息,如下图:
图中的removeable to media就是我的u盘了
然后使用命令将ipl10.bin写入u盘,重启F12(我的笔记本电脑,每个人的电脑都不一样)选择u盘启动
dd if=helloOS\ipl10.bin of=\\.\Volume{19572513-924e-11e8-afeb-806e6f6e6963}
对于只用启动区显示hello os完全不需要fat32文件格式,只需如下代码:
; haribote-ipl
; TAB=4
ORG 0x7c00
JMP short entry
entry:
MOV AX,0
MOV SS,AX
MOV ES, AX
MOV SP,0x7c00
MOV DS,AX
MOV SI,msg
call putloop
jmp fin
putloop:
MOV AL,[SI]
ADD SI,1
CMP AL,0
JE over
MOV AH,0x0e
MOV BX,15
INT 0x10
JMP putloop
over:
ret
fin:
HLT
JMP fin
msg:
DB 0x0a, 0x0a
DB "hello os"
DB 0x0a
DB 0
; RESB 0x7dfe-$
times 510 - ($ - $$) db 0
DB 0x55, 0xaa
对于intel格式汇编,在ubuntu中使用nasm编译器
nasm hellos.nas -o hellos.bin
接着用fdisk -l查看u盘的设备号,我的是/dev/sdb4,就用dd写入u盘
dd if=helloos.bin of=/dev/sdb4 bs=512 count=1
重启电脑,选择u盘启动,屏幕显示hello os!