一.使用工具及环境
1.windows10
2.bochs-2.6.9
3.dd工具
4.nasm(汇编编译器)
所用工具皆可在链接:https://pan.baidu.com/s/1JvJltHi3GoGN-9aMT-MGgQ 中找到
提取码:c6os
为方便起见,我们可以将nasm.exe和dd.exe放在电脑c盘的windows/system32文件夹下
前置一些简单知识(大佬请略过):
命令指示符的打开方式为WIN+R,在框内输入cmd
一些简单的指令:
cd .. 返回当前目录上一级
cd [] 进入某一文件夹,例如 cd windows,可进入当前目录的windows文件夹中
dir 显示当前文件夹所有文件
.\xxx 执行xxx文件
e: 可以进入e盘
二.基础代码
org 07c00h ;告诉编译器加载到7c00处,如果把这个改成0100h就可以编译成一个.com文件在dos下运行啦
mov ax,cs
mov ds,ax
mov es,ax ;这三行让ds,es两个段寄存器指向与cs相同的段
call Display ;告诉程序调用display函数
jmp $ ; $指的是当前行被汇编后的地址,这行的作用可以理解为让其无限循环
Display:
mov ax,Message
mov bp,ax ;字符串的地址
mov cx,20 ;保存的是字符串长度,例如本例为20字节
mov ax,01301h ;ah=13,al=01h(ax寄存器的高位和地位)
mov bx,000ch ;页号位0,使用黑色为背景色,红色为字体颜色
mov dl,0
int 10h ;10h中断,用来显示字符
ret
Message: db "a easy boot sector !"
times 510-($-$$) db 0;填充510字节的0,$$表示编译后的起始地址
dw 0xaa55 ;表示结束,加上前面的510字节正好512字节满足条件
将代码保存为boot.asm,可以使用记事本的另存为所有文件来保存这段代码
打开命令指示符,然后通过cd指令进入boot.asm所在的文件夹,使用nasm工具
输入:nasm boot.asm -o boot.bin
可得到一个名为boot.bin的文件
之后安装bochs-2.6.9,在命令指示符中进入bochs-2.6.9文件,输入.\bximage.exe,并按下图操作
之后我们就成功新建了一个名为a.img的文件,随后将boot.bin复制到该文件夹下,在命令指示符中使用dd命令:
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
此时我们就成功的得到了一个小系统(引导扇区)
我们再新建并编辑一个bosh.src的文件保存在该目录下,其中保存的内容为:
megs:32
romimage:file=$BXSHARE/BIOS-bochs-latest
vgaromimage:file=$BXSHARE/VGABIOS-lgpl-latest
floppya:1_44=a.img,status=inserted
boot:floppy
log:bochsout.txt
mouse:enabled=0
keyboard: keymap=$BXSHARE/keymaps/x11-pc-de.map
最后在命令指示符中键入 .\bochs.exe -f bosh.src ,我们的字符就显示出来啦