欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

跟大师学习系统编程---操作系统加载(3)

程序员文章站 2022-06-24 17:00:05
...

获取磁盘参数

ok_load_setup:

! Get disk drive parameters, specifically nr of sectors/track

    mov dl,#0x00
    mov ax,#0x0800      ! AH=8 is get drive parameters
    int 0x13
    mov ch,#0x00
    seg cs
    mov sectors,cx
    mov ax,#INITSEG
    mov es,ax

获取磁盘参数,主要是获取每磁道的扇区数,这样做的目的是为了判断当前的启动磁盘的类型(当时还流行软盘驱动器,而软盘有2种尺寸的——1.2M和1.44M). 他们每磁道包含的扇区数目不同。

第8行代码将ch清0,主要是为了第10行的代码,因为扇区数目是存储在cl中的,所以,要排除ch的干扰。sectors为本程序的一个变量,在程序文件的某位有定义。保存每磁道扇区数目。

第11行和第12行代码用于恢复es寄存器的值,因为取磁盘参数中断程序修订了es寄存器的值,需要重新初始化es。