一、bochs环境搭建
在搭建bochs过程中遇到问题:
bochsrc:13: 'keyboard_mapping' is deprecated - use 'keyboard' option instead.
配置文件中keyboard_mapping改为:keyboard: keymap=/usr/share/bochs/keymaps/x11-pc-us.map
二、boot.asm
org 07c00h
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax
mov cx, 16
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessage db "Hello, OS world!"
times 510-($-$$) db 0;
dw 0xaa55
这里有个问题,为什么是0x7c00H?,后来查询得知:主引导记录(Master boot record,缩写为MBR)会存入内存地址0x7C00,
简单说,计算机启动是这样一个过程。
- 通电
- 读取ROM里面的BIOS,用来检查硬件
- 硬件检查通过
- BIOS根据指定的顺序,检查引导设备的第一个扇区(即主引导记录),加载在内存地址 0x7C00
- 主引导记录把操作