代码
org 07c00h ;告诉编译器加载程序到7c00h处
mov ax,cs
mov ds,ax
mov es,ax
call DispStr
jmp $ ;无限循环
DispStr:
mov ax,bootmessage
mov bp,ax ;es:bp=串地址
mov cx,16 ;cx=串长度
mov ax,01301h ;ah=13,al=01
mov bx,000ch ;页号0(bh=0)黑底红字(0ch,高亮)
mov dl,0
int 10h
ret
bootmessage: db "hello,os world!"
times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码恰好512db
dw 0xaa55 ;结束标志
mov ax,cs
mov ds,ax
mov es,ax
call DispStr
jmp $ ;无限循环
DispStr:
mov ax,bootmessage
mov bp,ax ;es:bp=串地址
mov cx,16 ;cx=串长度
mov ax,01301h ;ah=13,al=01
mov bx,000ch ;页号0(bh=0)黑底红字(0ch,高亮)
mov dl,0
int 10h
ret
bootmessage: db "hello,os world!"
times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码恰好512db
dw 0xaa55 ;结束标志
用NASM把这段代码编译一下:
nasm boot.asm -o boot.bin
得到一个512b的boot.bin,再把它用软盘绝对扇区读写工具将这个文件写到一张空白软盘的第一个扇区上,就ok了。