使用bios进行键盘输入和磁盘读写
int 9 中断例程对键盘输入:
按键a,引发中断
从60读a键的通码
检测状态字节,是否有shift 。。等切换键
没有则将a键的扫描码,和对应的ascii码写入缓冲区(高-扫描码,低-ascii)
按下shift,引发中断
cpu从端口接收
设置0040:17处的状态字节的第1位为1
使用int 16h中断例程读取键盘缓冲区
从键盘缓冲区读取一个键盘输入,并且将其从缓冲区删除
mov ah,0
int 16h
int16h中断例程的0号功能
1检测键盘缓冲区是否有数据
2没有继续第一部
3读取缓冲区第一个字单元的键盘输入
4将读取的扫描码送入ah,ascii码送入al
5将已读取的键盘输入从缓冲区删除
int 13h中断例程对磁盘进行读写
软盘:
上下两面
每面:80个磁道
每个磁道:18个扇区
每个扇区:512B
容量=512B*18*80*2=1440KB (1.4mb)
磁盘由磁盘控制器控制
通过控制磁盘控制来访问磁盘,如果通过直接控制磁盘控制来访问磁盘,需要涉及许多硬件细节,bios提供了对扇区进行读写的中断例程
只能以扇区为单位对磁盘进行读写
面号,磁道号,扇区号
读取0面0到1扇区的内容到0:200
mov ax,0
mov es,ax
mov bx,200h ;ES:BX指向接收从扇区读入数据的内存区
mov al,1 ;读取的扇区数
mov ch ,0 ;磁道号
mov cl,1 ;扇区号
mov dl,0 ;驱动器号
mov dh,0 ;磁头号,对软盘是面号
mov ah,2 ;int 13h的功能号 2表示读扇区
int 13h
返回参赛
操作成功(ah)=0,(al)=写入的扇区数
操作失败(ah)=出错代码
面号,磁道号,扇区号 ---->逻辑区号
逻辑区号=(面号*80+磁道号)*18+扇区号-1
课程设计
1开机cpu自动进入ffff:0,跳转指令
2转去执行bios中的硬件系统检测和初始化程序
3初始化程序:将建立bios所支持的中断向量,即:将bios提供的中断例程的入口地址登记在中断向量表中
4调用int 19h进行操作系统的引导,完成的工作是:
如果是软盘启动,完成的工作
控制0号软驱:将读取软盘0道0面1扇区内容(操作系统的引导程序)到0:7c00
将cs:ip 指向0:7c00
如果0号软驱中没有软盘,或发生i/o错误,则int 19完成,以下工作
读取硬盘c的0道,0面,1扇区的内容到0:7c00
将cs:ip 指向0:7c00
80386
可以工作在3个模式下工作
实模式:工作方式相当于8086
保护模式:提供支持多认为环境的工作方式,建立保护机制
虚拟8086模式:可以从保护模式切换至其中的一种8086工作方式
阅读(1598) | 评论(1) | 转发(0) |