; hello-os
; TAB=4
ORG 0x7c00 ; 指明程序的装载到内存中的指定地址,0x00007c00-0x00007dff 启动区内容的装载地址
; 以下的记述用于标准FAT12格式的软盘
JMP entry ;跳转到入口
DB 0x90
DB "HELLOIPL" ;
DW 512 ;
DB 1 ;
DW 1 ;
DB 2 ;
DW 224 ;
DW 2880 ;
DB 0xf0 ;
DW 9 ;
DW 18 ;
DW 2 ;
DD 0 ;
DD 2880 ;
DB 0,0,0x29 ;
DD 0xffffffff ;
DB "HELLO-OS " ;
DB "FAT12 " ;
RESB 18 ;
; 程序核心
entry:
MOV AX,0 ;初始化寄存器,mov指令相当于赋值,ax累加寄存器
MOV SS,AX ;SS栈段寄存器
MOV SP,0x7c00 ;SP栈指针寄存器
MOV DS,AX ;DS数据段寄存器
MOV ES,AX ;ES附加段寄存器
MOV SI,msg
putloop:
MOV AL,[SI] ;把si地址的1个字节的内容读入AL中
ADD SI,1 ; 给SI加1
CMP AL,0 ;比较指令
JE fin ;JE 条件跳转指令 fin 结束
MOV AH,0x0e ; 显示一个文字
MOV BX,15 ;指定字符颜色,BX基址指针寄存器,适合做计算内存地址的基点
INT 0x10 ;中断指令 调用显卡BIOS
JMP putloop
fin:
HLT ; 让CPU停止,等待指令
JMP fin ; 无限循环
msg:
DB 0x0a, 0x0a ;换行两次
DB "hello, world"
DB 0x0a ; 换行
DB 0
RESB 0x7dfe-$ ; 0x7dfe‚܂łð0x00‚Å–„‚߂閽—ß
DB 0x55, 0xaa
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 4600
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 1469432
《30天自制操作系统》 day02
最新推荐文章于 2025-02-06 18:50:23 发布
本文记录了作者进行《30天自制操作系统》挑战的第二天,详细介绍了在操作系统开发过程中遇到的概念和实践操作,包括内存管理、启动加载器的基础知识以及相关的编程实现。
3347

被折叠的 条评论
为什么被折叠?



