简介
上一节我们使用C语言实现了3.5寸虚拟软盘文件结构,操作系统文件必须突破头512字节的限制,需要把数据写入其他扇区,在头512字节中实现加载其他扇区文件到内存。
目标
使用自制的C语言虚拟软盘模块,把显示的字符串数据写入1磁道、0磁头、2扇区,在内核加载器中读取该扇区字符串显示在屏幕上。
1.BIOS:
BIOS是英文"Basic Input Output System"的缩略词,直译过来中文名称就是"基本输入输出系统"。它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
使用汇编读取软盘我们要调用相应的BIOS中断,将要读取的磁头号,柱面,扇区号传给中断代码,读取软盘的汇编代码如下:
mov ch, 1 ;CH 用来存储柱面号
mov dh, 0 ;DH 用来存储磁头号
mov cl, 2 ;CL 用来存储扇区号
es:bx寄存器作为读取磁盘扇区数据的缓存区
mov ah, 0x02 ; AH = 02 表示要做的是读盘操作
mov al, 1 ; AL 表示要练习读取几个扇区
mov dl, 0 ;驱动器编号,一般我们只有一个软盘驱动器,所以写死
;为0
int 0x13 ;调用BIOS中断实现磁盘读取功能
jc error ; 如果读盘出现错误,跳转到error处执行相应
2.代码: