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 退出

Last moify: 2024-12-23 07:55:59
Build time:2025-07-18 09:41:42
Powered By asphinx