Chinaunix首页 | 论坛 | 博客
  • 博客访问: 497186
  • 博文数量: 161
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1947
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-25 01:20
文章分类

全部博文(161)

文章存档

2011年(44)

2010年(47)

2009年(48)

2008年(22)

我的朋友

分类:

2009-08-29 04:51:14

使用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工作方式

       
        
 
阅读(1578) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-06-05 02:16:58

大连法律咨询在线 http://www.fabowang.com 大连律师在线咨询 http://www.fabowang.com 大连法律顾问网 http://www.fabowang.com 大连律师咨询 http://www.fabowang.com