首页 > 其他 > 详细

学习笔记——1.1自己写操作系统 引导程序相关知识

时间:2014-02-25 21:19:26      阅读:373      评论:0      收藏:0      [点我收藏+]

(进一步了解:http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf

1.ORG 07c00H

将引导程序定位到07c00H,因为BIOS会从此处加载引导程序。

2.512字节

引导扇区大小。

times 510-($-$$) db 0将引导程序大小填充到510字节,加上结尾的aa55,正好512。

3.0xaa55

引导程序终结标识,无此标识的不会被认为是引导程序。

4.BIOS中断

使用int 10H中断来向显示器写字符。

BIOS中断向量

I/O ADDR
INT TYPE(16进制)
FUNCTION
40 ~43
10
视频显示 I/O
44 ~ 47
11
设备检验
48 ~ 4B
12
测定存储器容量
4C ~ 4F
13
磁盘 I/O
50 ~ 53
14
54 ~ 57
15
系统描述表指针
58 ~ 5B
16
键盘 I/O
5C ~ 5F
17
打印机 I/O
60 ~ 63
18
ROM BASIC 入口代码
64 ~ 67
19
引导装入程序
68 ~ 6B
1A
日时钟

 

 

示例:在显示器上依次添加字符显示,最后显示出“Hello”。

bubuko.com,布布扣
org 07c00h

mov ah,0x0e

mov al,H
int 10H

mov al,e
int 10H

mov al,l
int 10H

mov al,l
int 10H

mov al,o
int 10H


times 510-($-$$) db 0

dw 0xaa55
bubuko.com,布布扣

 5.其他

bubuko.com,布布扣
org 07c00h
mov ax,cs
mov ds,ax
mov es,ax
call DispStr
jmp $
DispStr:
    mov ax,BootMessage
    mov bp,ax
    mov cx,8
    mov ax,01301h
    mov bx,000ch
    mov dl,0
    int 10h
    ret
BootMessage: db "Hello,OS"
times 510-($-$$) db 0
dw 0xaa55
bubuko.com,布布扣

说明:

mov ax, BootMessage
mov bp, ax ;这条指令与上一条指令合二为一,应该写成:lea bp,BootMessage
mov cx, 8 ;要显示的"Hello,os"字符数
mov ax, 01301h ;AH=13h,int 10h,即视频中断13h号功能:写字符串;AL=01H,表示写完字符串后,更新光标位置
mov bx, 000ch ;BH=0,页号(视频缓冲区分页的);BL=0CH,字符显示属性,以黑底亮红显示字符
mov dl, 0 ;DH、DL=写串的光标位置,DH=行号,DL=列号

学习笔记——1.1自己写操作系统 引导程序相关知识

原文:http://www.cnblogs.com/dev2007/p/3564971.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!