鄙人从今天起学习于渊老师的自己写操作系统一书,特此做笔记,以供来日参考.
1.编辑程序boot.asm,内容如下
org 07c00h ;告诉编译器程序加载到7c00地址处
mov ax, cs
mov ds, ax
mov es, ax
call DispStr ;显示字符串
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax ;10号bios中断程序,功能号13时,显示字符串的起始地址为es:bp
mov cx, 16 ;10号bios中断程序,功能号13时,显示字符串的长度在cx中
mov ax, 1301h ;让ah=13,al=01,作为10号bios中断程序的传入参数
mov bx, 000ch ;页号为0(BH=0) 黑底红字(BL=0ch)
mov dx, 0 ;10号bios中断程序,功能号13时,字符串显示的横纵坐标为(dh,dl)
int 10h ;调用10h号bios中断子程序
ret
BootMessage: db "Hello, OS world!"
times 510-($-$$) db 0 ;输出字符串往后的地址填0
dw 0xaa55 ;结束标志,代表前面的一段程序为系统引导程序
2. 用命令 nasm boot.asm -o boot.bin将汇编源文件boot.asm编译成boot.bin
3.找一个u盘插入电脑(我的计算机是linux系统),lsblk查看硬盘信息,假设u盘为/dev/sdb4,那么在未挂载的情况下可以
使用下面的命令将刚才的文件刻录到u盘中
sudo dd if=boot.bin of=/dev/sdb4 bs=512 count=1 conv=noerror,sync
4.刻录完成后,重启计算机,计算机系统启动方式改为从u盘启动,启动完成后可以看到下面