1.编写Makefile
使用一下代码创建一个Makefile:
%.bin:%.asm
nasm $*.asm -o $*.bin
.PHONY:start write clean
start:
cd image&&bochsdbg -q -f bochsrc.bxrc
write:mbr.bin
dd if=mbr.bin of=image/c.img bs=512 count=1
clean:
-@cd image&&erase /F /Q *.lock
2.创建MBR
使用一下代码创建mbr.asm文件:
;MBR程序
section mbr vstart=0x7c00
mov ax,0
mov ss,ax
mov sp,ax ;设置堆栈段和栈指针
;======================字符显示程序==========================
mov ax,0x600
mov bx,0x700
mov cx,0 ;左上角:(0,,0)
mov dx,0x184f ;右下角:(80,25)
int 0x10
;设置光标位置
mov ah,2 ;2号子功能
mov bh,0 ;设置光标的页号
mov dx,0 ;(DH,DL),行,列
int 0x10
;打印字符串
;INT10 13号子功能
;ES:BP字符串地址 CX字符串长度 (DH,DL)起始位置:行/列 AL=0,BL=字符属性 BH=页数
mov ax,0
mov es,ax
mov ax,message
mov bp,ax
mov cx,24
mov ax,0x1301
mov bx,0x2
int 0x10
hlt ;hlt:休眠CPU
message: db "MBR loaded successfully!"
times 510-($-$$) db 0
db 0x55,0xaa
3.创建start.cmd
使用一下代码创建start.cmd文件
start
4.测试
双击打开start.cmd,输入 make write
控制台输出如下 :
F::`\meOS`>make write nasm mbr.asm -o mbr.bin dd if=mbr.bin
of=image/c.img bs=512 count=1 rawwrite dd for windows version
0.6beta3. Written by John Newbigin jn@it.swin.edu.au This program is
covered by terms of the GPL Version 2.
1+0 records in 1+0 records out
输入 make start
当控制台可以继续输入时,输入 c
生成结果如下:

本来代码中有hlt
的,但是实际中窗口中的输出文字却在不断闪烁。原因未知。
在cmd窗口中按下 Ctrl+C
中断模拟器运行,输入 q
退出