关注
;Myos/chapter1/boot/mbr.S
;主引导程序
;BIOS刚跳转到MBR时,CS:ip寄存器值为0x0:0x7c00
;
SECTION MBR vstart=0x7c00 ;告诉编译器,把这段程序的起始地址编译为0x7c00,将来BIOS会将这段程序加载到物理地址0x7c00处
mov ax,cs ;将ds,es,fs初始化为0
mov ds,ax
mov es,ax
mov fs,ax
mov sp,0x7c00 ;MBR被加载到0x7c00地址处,0x7c00地址往下的内存空间可以作为MBR运行时所需要的栈空间(栈顶指针往下增长)
mov ax,0xb800 ;借助ax寄存器设置显存段基址
mov gs,ax
;清屏
;利用0x06号功能,上卷全部行,即可清屏
;---------------------------------------------------------------
;INT 0x10 功能号:0x06 功能描述:上卷窗口
;---------------------------------------------------------------
;输入:
;AH 功能号= 0x06
;AL = 上卷的行数(如果为0,表示全部)
;BH = 上卷行的属性
;(CL,CH) = 窗口左上角的(X,Y)的位置
;(DL,DH) = 窗口右下角的(X,Y)的位置
;无返回值:
mov ax, 0600h
mov bx, 0700h
mov cx, 0 ; 左上角(0,0)
mov dx, 184fh ; 右下角(80,25)
; VGA文本模式中,一行只能容纳80个字符,共25行,
; 下标从0开始,所以0x18=24,0x4f=79
int 10h ; 调用0x10中断例程
;输出背景色绿色,前景色红色,并且跳动的字符串"1 MBR"
mov byte [gs:0x00], '1' ; 从显存地址 0xb8000 开始,每两个字节为一组,低字节保存数据内容,即字符的ASCII值
mov byte [gs:0x01], 0xA4 ; 高字节保存显示的属性,低四位控制前景色,高四位控制背景色
mov byte [gs:0x02], '0'
mov byte [gs:0x03], 0xA4
mov byte [gs:0x04], '2'
mov byte [gs:0x05], 0xA4
mov byte [gs:0x06], '4'
mov byte [gs:0x07], 0xA4
jmp $ ; 通过死循环使程序停止在这个位置
times 510-($-$$) db 0 ; 用0填充0磁盘0磁道1扇区512字节剩下的空间,$是当前行的位置,$$是文件起始
db 0x55, 0xaa ; 512字节的MBR最后两字节是0x55和0xaa 操作系统 MBR 引导程序, bochs虚拟机 输出 1024 字符。
查看原帖
2 2
相关推荐
点赞 评论 收藏
分享
10-10 18:54
北京航空航天大学 机械设计/制造 点赞 评论 收藏
分享
牛客热帖
正在热议
# 25届秋招总结 #
322775次浏览 2996人参与
# 上班苦还是上学苦呢? #
69877次浏览 616人参与
# 阿里云管培生offer #
36374次浏览 421人参与
# 地方国企笔面经互助 #
4399次浏览 12人参与
# 如果有时光机,你最想去到哪个年纪? #
20656次浏览 353人参与
# 选完offer后,你后悔学本专业吗 #
21536次浏览 155人参与
# 百度开奖 #
180123次浏览 1127人参与
# 如何一边实习一边秋招 #
995857次浏览 12661人参与
# 我的实习求职记录 #
6067360次浏览 83521人参与
# 招聘要求与实际实习内容不符怎么办 #
10677次浏览 276人参与
# 入职第一天,你准备什么时候下班 #
21491次浏览 144人参与
# 许愿池 #
214541次浏览 2534人参与
# bilibili求职进展汇总 #
32885次浏览 354人参与
# 学历or实习经历,哪个更重要 #
53490次浏览 418人参与
# 实习工作,你找得还顺利吗? #
247552次浏览 2902人参与
# 海康威视求职进展汇总 #
400354次浏览 3407人参与
# 通信硬件薪资爆料 #
607467次浏览 5150人参与
# 正在实习的你,几点下班 #
52983次浏览 395人参与
# 如果再来一次,你还会学硬件吗 #
95067次浏览 1169人参与
# 工作两年想退休了 #
52956次浏览 672人参与
# 软件开发薪资爆料 #
2192350次浏览 21878人参与
# 我的失利项目复盘 #
668151次浏览 11247人参与