实验2.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
  mov ax, 0xb800
  mov gs,ax


; 清屏利用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

; 写入显存
	mov byte [gs:0x00], '1';
	mov byte [gs:0x01], 0xA4;
	mov byte [gs:0x02], ' ';
	mov byte [gs:0x03], 0xA4;
	mov byte [gs:0x04], 'M';
	mov byte [gs:0x05], 0xA4;
	mov byte [gs:0x06], 'B';
	mov byte [gs:0x07], 0xA4;
	mov byte [gs:0x08], 'R';
	mov byte [gs:0x09], 0xA4;

	jmp $
	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、付费专栏及课程。

余额充值