测试Bochs

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生成结果如下:

1544192733033


本来代码中有hlt的,但是实际中窗口中的输出文字却在不断闪烁。原因未知。

在cmd窗口中按下Ctrl+C中断模拟器运行,输入q退出