《30天自制操作系统》 day02

本文记录了作者进行《30天自制操作系统》挑战的第二天,详细介绍了在操作系统开发过程中遇到的概念和实践操作,包括内存管理、启动加载器的基础知识以及相关的编程实现。
; 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值