使用汇编语言(nasm汇编器)实现一个bootsect,在屏幕上打印一个字符串。
boot.asm
org 07c00h ; BIOS加载bootsect到7c00地址,
; 所以编译第一条指令在7c00位置
; 取得所在代码段(CS)值,初始化DS和ES,使代码数据指向同一段
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 = 13h, AL = 10h
mov bx, 000ch ; BH = 0h (页0), BL = 0ch (黑底红字)
mov dl, 0
int 10h
ret
BootMessage: db "Hello, OS World!"
; 填充为512字节,最后为55aa(识别为启动设备)
times 510 - ($ - $$) db 0
dw 0xaa55