实验1.第一次编写mbr

简介

实验 1:编写 mbr,在屏幕上显示字符。

代码

boot/mbr.s

; boot/mbr.s
; 功能:在屏幕上显示字符

SECTION MBR vstart=0x7c00
	mov ax,cs
	mov ds,ax
	mov es,ax
	mov ss,ax
	mov fs,ax
	mov sp,0x7c00

; 清屏利用0x06号功能,上卷全部行,则可清屏。
; 输入:
; AH 功能号=0x06
; AL = 上卷的行数(如果为0,表示全部)
; BH = 上卷行属性
; (CL,CH) = 窗口的左上角的(X,Y)位置
; (DL,DH) = 窗口的右上角的(X,Y)位置
; 无返回值:
	mov ax,0x600
	mov bx,0x700
	mov cx,0
	mov dx,0x184f
	int 0x10


; 获取光标位置
; 输入:
; ah 功能号3
; bh 页号
; 输出:
; ch=光标开始行
; cl=光标结束行
; dh=光标所在行号
; dl=光标所在列号
	mov ah,3
	mov bh,0
	int 0x10

; 调用13号子功能打印字符串
; 输入:
; ah 功能号13
; al设置写字符方式 ah=01:显示字符串,光标跟随移动
; bh设置要显示的页号,此处是第0页
; ;bl中是字符属性,属性是黑底绿字(bl=02h)
; es:bp为串首地址
; cx为串长度,不包括结束符0
	mov ax,message
	mov bp,ax
	mov ax,0x1301
	mov bx,0x2
	mov cx,9
	int 0x10

	jmp $

	message db "hello mbr"
	times 510-($-$$) db 0
	db 0x55,0xaa

编译

Makefile

BUILD_DIR = ./build

.PHONY : mk_dir bootloader clean all

mk_dir: #创建build目录
	if [ ! -d $(BUILD_DIR) ]; then mkdir $(BUILD_DIR); fi

bootloader: #编译启动内核的文件 bootloader
	nasm -I include/ -o $(BUILD_DIR)/mbr.bin boot/mbr.s

	dd if=/home/c/tityos/build/mbr.bin of=/home/c/tityos/hd60M.img bs=512 count=1 conv=notrunc

clean: #删除build目录里的全部文件
	cd $(BUILD_DIR) && rm -f  ./*

# 创建build目录。编译启动内核的文件。
all: mk_dir bootloader

运行

start.sh

# !/bin/bash
# 功能:启动bochs

bin/bochs -f bochsrc.disk

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值