###int 9中断例程对键盘输入的处理 一般的键盘输入,在CPU执行完int 9中断例程后,都放到了键盘缓冲区中。键盘缓冲区中又16个字单元,可以存储15个按键的扫描码和对应的ASCII码
键盘缓冲区是用环形队列结构管理的内存区
观看flash
###使用int 16h中断例程读取键盘缓冲区 int 16h 包含的最重要的一个功能是从键盘缓冲区中读取一个键盘输入,该功能的编号为0,进行如下工作:
- 检测键盘缓冲区中是否有数据
- 没有则继续做第1步
- 读取缓冲区第一个字单元中的键盘输入
- 将读取的扫描码送入ah,ASCII码送入al
- 将已读取的键盘输入从缓冲区中删除
int 9中断例程向键盘缓冲区中写入,int 16h 中断例程从缓冲区中读出
int 9中断例程是在有键盘按下的时候向键盘缓冲区中写入数据;而int 16h中断例程在应用程序对其进行调用的时候,将数据从键盘缓冲区中读出
###字符串的输入 字符串的存储空间实际上是一个字符栈 源代码
###应用int 13h 中断例程对磁盘进行读写 以3.5英寸软盘为例,分为上下两面,每面有80个磁道,每个磁道又分为18个扇区,每个扇区的大小为512个字节
则:2面 * 80磁道 * 18扇区 * 512字节 = 1440KB 约等于 1.44MB
只能以扇区为单位对磁盘进行读写。在读写扇区的时候,要给出面号、磁道号、和扇区号。面号和磁道号从0开始,而扇区号从1开始。
读取0面0道1扇区的内容到0:200的程序:
mov ax,0
mov es,ax
mov bx,200h
mov al,1 ;读取的扇区数
mov ch,0 ;磁道号
mov cl,1 ;扇区号
mov dl,0 ;驱动器号 软驱从0开始,0:软驱A,硬盘从80h开始,80h:硬盘C
mov dh,0 ;磁头号(对于软盘即面号,因为一个面用一个磁头来读写)
mov ah,2 ;int 13h的功能号(2表示读扇区,3表示写扇区)
int 13h
返回参数:
操作成功:(ah)=0,(al)=读入的扇区数
操作失败:(ah)=出错代码
千万不要随便对硬盘中的扇区进行写入,很可能覆盖掉重要的数据