王爽《汇编语言》第三版 第十五章 外中断

引言

  CPU 除了有运算能力外,还要有 I/O( Input/Output ,输入/输出)能力。

15.1 接口芯片和端口

  在PC系统的接口卡和主板上,装有各种接口芯片。这些外设接口芯片的内部有若干寄存器,CPU将这些寄存器当作端口来访问。

  外设的输入不直接送入内存和CPU ,而是送入相关的接口芯片的端口中。

  CPU向外设的输出也不是直接送入外设,而是先送入端口中,再由相关的芯片送到外设。

15.2 外中断信息

  当CPU 检测到可屏蔽中断信息时:
  1.如果IF=1,则CPU 在执行完当前指令后响应中断,引发中断过程;
  2.如果IF=0,则不响应可屏蔽中断。

  可屏蔽中断信息来自于CPU外部,中断类型码是通过数据总线送入CPU的。

  8086CPU 提供的设置IF的指令如下:
  1.sti,用于设置IF=1;
  2.cli,用于设置IF=0。

  对于8086CPU不可屏蔽中断的中断类型码固定为2。所以中断过程中,不需要取中断类型码。

15.3 PC机键盘的处理过程

  键盘输入的处理过程:
  1.键盘输入
  2.引发9号中断
  3.执行int 9中断例程

  按下一个键时,开关接通,该芯片就产生一个扫描码,扫描码说明了按下的键在键盘上的位置。扫描码被送入主板上的相关接口芯片的寄存器中,该寄存器的端口地址为60H。

  松开按下的键时,也产生一个扫描码,扫描码说明了松开的键在键盘上的位置。松开按键时产生的扫描码也被送入60H端口中。

  扫描码长度为一个字节,通码的第7位为0,断码的第7位为1,即:断码 = 通码+80H。

  

  BIOS键盘缓冲区可以存储15个键盘输入,因为int9中断例程除了接收扫描码外,还要产生和扫描码对应的字符码,所以在BIOS键盘缓冲区中,一个键盘输入用一个字单元存放,高位字节存放扫描码,低位字节存放字符码。

  0040:17 单元存储键盘状态字节,该字节记录了控制键和切换键的状态。键盘状态字节各位记录的信息如下:

  

15.4 编写int 9中断例程

15.5 安装新的int 9中断例程

参考资料:《小甲鱼汇编零基础入门》

     《汇编语言》第三版

时间: 2024-11-10 17:25:55

王爽《汇编语言》第三版 第十五章 外中断的相关文章

王爽汇编语言第三版第5章实验4

第(3)小题 下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序.上机调试,跟踪运行结果. assume cs:code code segment mov ax,     cs       ;cs为程序入口的段地址,我们就是要从这里开始复制 mov ds,ax mov ax,0020h mov es,ax mov bx,0 mov cx,     cx        ;程序刚加载完成时,cx存放的是程序的大小,这里我不确定答案,我试过后看到mov ax,4

汇编语言(王爽 第三版)实验十五

assume cs:code stack segment db 128 dup (0) stack ends code segment start: mov ax,stack mov ss,ax mov sp,128 push cs pop ds mov ax,0 mov es,ax mov si,offset int9 mov di,204h mov cx,offset int9end-offset int9 cld rep movsb push es:[9*4] pop es:[200h]

【汇编语言】(王爽著第三版)实验二

实验二 实验任务(一) 实验前要求我们将书本P74的程序段按理论分析,将结果进行填空.之后用Debug,将该程序段写入内存,逐条执行之后, 根据指令执行后的实际运行的结果填空如下. mov ax,0021 mov  ax , ffff mov  ds , ax mov  ax , 2200 mov  ss , ax mov  sp , 0100 mov  ax , [0]                       ;ax=3130 add  ax , [2]                 

王爽汇编第三版检测点10.5

(1)下面的程序执行后,ax 中的数值是多少? 1 assume cs:code 2 stack segment 3 dw 8 dup (0) 4 stack ends 5 code segment 6 start: mov ax,stack 7 mov ss,ax 8 mov sp,16 9 mov ds,ax 10 mov ax,0 11 call word ptr ds:[0] 12 inc ax 13 inc ax 14 inc ax 15 mov ax,4c00h 16 int 21h

王爽汇编第三版实验10

1. 显示字符串 1 assume cs:code 2 3 data segment 4 db 'Welcome to masm!',0 5 data ends 6 7 stack segment 8 db 16 dup (0) 9 stack ends 10 11 code segment 12 start: 13 mov dh,8 14 mov dl,3 15 mov cl,2 16 mov ax,data 17 mov ds,ax 18 mov si,0 19 call show_str

JavaScript高级程序设计(第三版)第五章 引用类型

5.2 Array类型 1 var colors = new Array(3); //创建一个包含3项的数组 2 var names = new Array("Greg"); //创建一个包含1项,即字符串“Greg”的数组 5.2.2 转换方法 1 var colors = ["red", "blue", "green"]; //创建一个包含3个字符串的数组 2 alert(colors.toString()); //red

最强大的王爽汇编语言学习环境使用教程

最强大的王爽汇编语言学习环境使用教程 一.前言 这是采用VMwere Workstation 12 pro虚拟机软件,搭建的MS-DOS学习环境,在windowsXP/8/10及linux中均可以使用,在这个环境中,我集成了CCDOS中文系统,pdos中文系统,使用这些系统,可以进行中文输入与显示.还集成了,十分著名的汇编语言调试工具TR,它比debug更加强大.并且集成了适合王爽汇编语言学习的微软汇编语言编译器masm5和dos中最强大的文本编辑器 vim73 for DOS,这是一个支持彩色

Gradle 1.12用户指南翻译——第三十五章. Sonar 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个

第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表、课程机构表、讲师表

第三百七十五节,Django+Xadmin打造上线标准的在线教育平台-创建课程机构app,在models.py文件生成3张表,城市表.课程机构表.讲师表 创建名称为app_organization的课程机构APP,写数据库操作文件models.py models.py文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from __future__ import unicode_literals from datetime import datetim