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

(进一步了解: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”。

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

 5.其他

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

说明:

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=列号

posted on 2014-02-25 11:10  阿呜的边城  阅读(295)  评论(0编辑  收藏  举报

导航