您的位置:首页 > 其它

《30天自制操作系统》 day02

2017-09-26 11:12 316 查看
; 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: