




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
输入输出和中断程序设计,中断系统 端口 输入输出,输入过程 输入设备把数据送到接口,由cpu执行输入程序把接口中的数据读入cpu,再根据需要放入存储器或寄存器中。处理程序完成对数据的处理并将处理结果放入指定的寄存器或存储器中。 输出过程 cpu执行输出程序,将存储器或寄存器中等待输出的内容送到输出接口中,然后启动输出设备,将接口中的数据通过输出设备输出。 输入/输出的基本条件 连接cpu与外设的接口电路和相应的软件-驱动程序。,输入输出,微机端口,通过总线与cpu相连的芯片除了存储器外,还有以下3种芯片: (1)各种接口卡上的接口芯片.(独立显卡等) (2)主板上接口芯片,cpu通过它们对部分外 设进行访问.(usb,键盘、鼠标接口) (3)其它芯片,用来存储相关的系统信息,或 进行相关的输入输出处理.(cmos,bios) 这些芯片都有一组可以被cpu读写的寄存器这些寄存器叫做端口。 这些寄存器在物理上处于不同的芯片中,但它们都是与cpu的总线相连,cpu通过控制线向它们所在的芯片发出端口读写命令。,端口,每个接口由一组寄存器组成,这些寄存器都分配有一个称为i/o端口的地址编码。 计算机的cpu和内存就是通过这些端口和外部设备进行通信的。,i/o接口部件中一般有三种寄存器: 1.用作数据缓冲的数据寄存器; 2.用来保存设备和接口的状态信息,供 cpu对外设进行测试的状态寄存器; 3.用来保存cpu发出的命令,以控制接 口和设备操作的控制寄存器。 这些寄存器都分配有各自的端口号,cpu就是通过不同的端口号来选择各种外部设备的。(端口地址),端口编址,i/o端口编址一般分两种方法: 1.将i/o与内存单元统一编址,其优点是节省了输入/输出指令,但缺点是占用了内存单元的有效地址空间; 2.将i/o独立编址。在80x86微机中,i/o端口编址在一个独立的地址空间中,端口的读写(cpu访问端口),在访问端口时,cpu通过端口地址(端口号)来定位端口。 因为端口所在的芯片和cpu通过总线相连,所以端口地址和内存地址一样,通过地址总线来传送。 对端口的读写不能用mov,push,pop等指令。 端口的读写指令只要两条:in和out,分别用于从端口读取数据和向端口写入数据,(1) 端口读写命令in 和out,例:in al,20h ;端口cpu out 20h,al ;cpu端口 在in和out指令中,只能用ax或al寄存器来存放从端口读入的数据或者要发到端口中的数据。 访问8位端口时用al 访问16位端口时用ax。,端口的读写,(2)对0255的端口进行读写 in al, 20h;从20h端口读取一个字节 out 20h,al;向20h端口写入一个字节 (3)对25665535的端口进行读写时,端口号放在dx中 mov dx, 3f8h ;将端口号3f8h送入dx in al, dx ;从3f8h端口读入一个字节 out dx, al ;向3f8h端口写入一个字节,端口的读写,(4)in al, 60h指令的cpu执行过程 cpu通过地址线将地址信息60h发出. cpu通过控制线发出端口读命令,选 中端口所在的芯片,并通知它,将要 从中读取数据. 端口所在的芯片将60h端口中的数据 通过数据线送入cpu.,端口的读写,对cmos ram的读写来体会对端口的访问 cmos ram芯片有一个128个存储单元的ram存储器,其中0-0dh单元用来保存时间信息,其余大部分单元用于存放系统配置信息,供系统启动时bios程序读取。 cmos ram芯片内部有2个端口,端口地址为70h和 71h。70h为地址端口,存放cpu要访问的cmos单元地址,71h为数据端口,存放从选定的cmos单元中读写的数据。,cmos ram芯片的读写,对cmos ram的读写来体会对端口的访问,cmos ram芯片的读写,其中0-0dh单元用来保存时间信息,其余大部分单元用于存放系统配置信息,供系统启动时bios程序读取。,1个128个存储单元的ram存储器,2个端口 (端口地址为70h和 71h),70h为地址端口: 存放cpu要访问的cmos单元地址; 71h为数据端口: 存放从选定的cmos单元中读写的数据。,cmos ram芯片,例: 读cmos的2号单元数据,要分2步: 将2送端口70h 从71h读出2号单元的内容 mov al, 2 out 70h, al ;将2送端口70h in al, 71h ;从71h读出2号单 元数据到al寄存 器中,例1、将cmos中用bcd码表示的月份, 以十进制的形式显示到屏幕上。 在cmos ram中,存放着当前的时间: 年,月,日,时,分,秒 这6个信息的长度都是1个字节,存放单元为: 秒:0 分:2 时:4 日:7 月:8 年:9 这些数据是以bcd码存放的,例2.将cmos中的时间信息存于msg开始的内存空间 lea si,msg mov dl,0 jj: mov al, dl ;从cmos中地址为0到9的单元内容读出 out 70h,al ;向70h端口写入要访问的单元地址 in al,71h ;从数据端口71h取出指定单元的数据 mov si,al inc si inc dl cmp dl,09h jna jj,中断,中断信息 任何一个通用的cpu都具备有一种能力,可以检测到从cpu外部发送来或者内部产生的一种特殊信息,并且可以立即对接收到的信息进行处理。这种特殊的信息称为:中断信息 中断 cpu不再接着向下执行指令,而是转去处理这个特殊信息。,中断,中断信息 任何一个通用的cpu都具备有一种能力,可以检测到从cpu外部发送来或者内部产生的一种特殊信息,并且可以立即对接收到的信息进行处理。这种特殊的信息称为:中断信息 中断 cpu不再接着向下执行指令,而是转去处理这个特殊信息。,中断,当cpu的内部有下面情况发生时,将产生中断信息: (1)除法错误 ;比如div指令产生除法溢出 (2)单步执行 (3)into溢出中断 (4)int指令 对于不同的信息要进行不同的处理,在处理前,cpu 首先要知道,所接收到的中断信息的来源,所以中断 信息中必须包含识别来源的编码,即中断类型码: (1)除法错误:0 (2)单步执行:1 (3)执行into指令:4 (4)执行int指令:指令格式int n, n即为提供给cpu的中断类型码,中断处理 中断处理程序就是对中断信息进行处理的一段指令。 cpu要执行某个中断处理程序必须获得该程序的入口地址。因此必须在中断信息(中断类型号)与中断处理程序入口地址间建立某种联系。 中断向量表 中断向量表保存在内存中,cpu用中断类型码,通过查找中断向量表,就可以得到中断处理程序的入口地址。,中断向量表 即中断类型号*4开始的4个单元存放着该类型号所 对应的中断处理程序的入口地址,cs:ip,类型0中断处理程序入口ip 类型0中断处理程序入口cs 类型1中断处理程序入口ip 类型1中断处理程序入口cs 类型2中断处理程序入口ip 类型2中断处理程序入口cs ,00000h 00001h 00002h 00003h 00004h 00005h 00006h 00007h 00008h 00009h 0000ah 0000bh ,3、中断过程 中断指令int n: (1)取中断类型号n (2)标志寄存器内容入栈(保护标志寄存器内容) (3)当前cs, ip入栈 (4)禁止外部中断 (5)取(n*4)ip, (n*4+2)cs (6)转去中断处理程序 中断返回指令iret:中断处理程序的最后一条指令,4、中断处理程序与子程序 相同点:都必须保存返回的断点cs, ip 不同点:中断处理程序需要保存标志寄存器内容. 中断处理程序不允许再产生中断. 中断可以驻留内存,不依赖于调用它的 程序.,5、用户中断的设置 (1)编写中断子程序 (2)将程序传送到指定空间(0:200h这个空间一般情况下为空) (3)设置中断向量表,这个过程可以直接向中断向量表写数据,也可以由dos的ah=25, int 21h来完成,6、bios和dos的装载过程: (1)开机后,cpu加电,初始化 cs0ffffh, ip=0, 自动从0ffffh:0单元开始执行程序。 0ffffh:0处有一跳转指令,转去执行bios中的硬件自检和初始化程序 (2)初始化程序将bios所支持的中断例行程序的入口地址登记在中断向量表中(程序是固化在rom中) (3)硬件系统检测和初始化完成后,调用int19h进行操作系统的引导 (4)dos启动后,将dos中断例行程序装入内存,并建立中断向量,例:编写、安装中断7ch的中断例程,求一个字数据的平方,ax中是要计算的数(0:200h这个空间一般情况下为空),例:编写、安装中断7ch的中断例程,求一个字数据的平 方,ax中是要计算的数 code segment assume cs:code start: ;将中断程序传送到0:200处 mov ax,cs mov ds,ax mov si,offset sqr ;设置ds:si指向源地址 mov ax,0 mov es,ax mov di,200h ;设置es:di指向目的地址 mov cx,offset sqrend-offset sqr ;设置cx为传输长度 cld rep movsb,;设置中断向量表,将程序的入口地址保存到7ch表项中 mov ax,0 mov es,ax mov word ptr es:7ch*4,200h mov word ptr es:7ch*4+2,0 mov ax,4c00h int 21h ;求平方的功能中断程序 sqr: mul ax iret sqrend:nop code ends end start,例4 调用7ch中断求ax的平方 code segment assume cs:code start:mov ax,3456 int 7ch mov ah,4ch int 21h code ends end start,bios功能调用,bios功能调用(课本p.241),bios(basic input/output system) bios是一组固化到计算机主板上的rom芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。 主要以中断处理程序的形式提供i/o设备的处理程序和常用例行程序。,表8.4 bios中断调用表,用户程序和操作系统关系示意图,bios中断程序处于dos功能调用和硬件环境之间,和dos功能调用相比其优点是效率高,缺点是编程相对复杂。,dos系统功能调用,dos系统功能调用和bios中断调用 dos操作系统或rom-bios程序提供的一组子程序,用“int n”指令调用。 dos系统功能调用:dos操作系统提供,主要用于i/o设备管理、目录及文件管理 bios中断调用:rom提供,主要用于系统加电自检、引导装入初始化程序等。 这些子程序给用户编程带来了方便,直接调用相应的功能即可。,dos系统功能调用的步骤及实例 最常用的:int 21h 21h为子程序的总入口,进入后可调用各种功能 步骤: 1.设置入口参数 2.将功能号放入ah寄存器 3.使用指令int 21h 转入子程序入口 一般:2、3步必须有;1视情况而定,bios中断调用方法,(1)设置分功能号。按实现的操作功能的要 求,给指定寄存器(通常为ah)送入分功 能号。 (2)设置入口参数。按操作要求,给寄存器填 写相应参数的内容(某些调用无参数)。 (3)使用中断语句int n。执行调用的功能,其 中n为中断号。 (4)分析出口参数。如: mov ah, 0 ;分功能号为0 mov al, 10h ;置入口参数 int 1ah ;1ah为中断号,功能 为读时间计数器的值,显示器中断调用(10h中断调用),dos中断和bios中断存在同样的功能 如:打印机输出一个字符的功能, 可以用 dos中断21h的功能5, 可以用bios中断17h的功能0. 对bios和dos调用的选择原则是:无法使用dos功能调用或者dos没有提供而bios提供了功能的情况下可以考虑使用bios中断。 如:有关显示输出的dos功能调用不多而bios调用(int 10h)的功能很强,主要包括设置显示方式,设置光标大小和位置,设置调色板号,显示字符和显示图形等,见p249表8.5。,设置显示方式(0号功能) 入口参数:ah=0,al=设置方式,见表8.6 出口参数:无 设置光标类型(1号功能) 入口参数:ah=1,ch=光标开始行,cl=光标结束行。 出口参数:无。根据cx给出光标的大小。 (要在纯dos下才能实现) mov ch,1 mov cl,3 mov ah,1 int 10h,显示器中断调用(10h中断调用),设置光标位置(2号功能) 入口参数:ah=2,bh=页号,dh=行号,dl=列号. 出口参数:无.根据dx给出确定光标的位置. 在当前光标位置写字符和属性(9号功能) 入口参数:ah=9,bh=页号,al=字符的ascii码 bl=字符属性,cx=写入字符数. 出口参数:无.在当前光标处,可连续写cx个字符.,如何在某个位置显示某些字符呢?,例1:在第0页(20,25)的位置显示3个* mov bh,0 ;第0页 mov dh,20 mov dl,25 ;坐标 mov ah,2 ; 设置光标位置 int 10h mov al,* ; 要显示的字符 mov bh,0 ; 第0页 mov bl,0c3h ; 颜色 mov cx,3 ; 字符个数 mov ah,9 ; 功能调用在光标位置显示字符 int 10h mov ah,4ch int 21h,初始始窗口或向上滚动(6号功能) 入口参数: ah=6, al=上滚行数, cx=上滚窗口左上角的行、列号, dx=上滚窗口右上角的行、列号, bh=空白行的属性.(例青底白字,bh=37h) 出口参数: 无.当滚动后,顶部为空白输入行.,初始窗口或向下滚动(7号功能) 入口参数: ah=7, al=下滚行数, cx=下滚窗口左上角的行、列号, dx=下滚窗口右上角的行、列号, bh=空白行的属性. 出口参数: 无.当滚动后,底部为空白输入行. bh属性见表8.7-表8.10,例2. 清屏幕的左半边,呈反相显示(白底黑字bh=70h),见p251,表8.9、8.10。 mov ah,7 ;下滚 mov al,0 ;行数,0为全屏 mov bh,70h ;属性白底黑字 mov ch,0 ;从0行0列开始 mov cl,0 mov dh,24 ;到24行39列为止 mov dl,39 int 10h,写字符串到指定的页面(功能号13h) 入口参数: es:bp=要显示字符串的地址 cx=字符串的长度; dh=起始光标行号, dl=列号; bh=页号;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年贵阳市城乡建设学校外聘教师招聘考试试题(含答案)
- 医院和住院环境医学必看试题带答案
- 《婚姻继承法知识点》通关试题(附答案)
- 主治医师放射科辐射安全与应急预案模拟试题(含答案)
- 院感选择题及答案
- 呼吸系统药物知识练习测试题(含答案)
- 2025义务教育语文新课程标准考试测试题库及参考答案
- 2024年小学生综合常识知识竞赛试题库及答案
- 树和喜鹊说课课件
- (2025)医疗质量安全核心制度及病历书写规范考核题与参考答案
- 二级建造师成绩复核申请
- 学习解读《医疗保障基金使用监督管理条例》PPT课件(带内容)
- GB/T 13384-2008机电产品包装通用技术条件
- GB 29541-2013热泵热水机(器)能效限定值及能效等级
- GB 11121-2006汽油机油
- 沙尔夫柴油机齿轨卡轨车课件
- 住宅项目实测实量操作指引(图文并茂)
- 房产无抵押情况说明及承诺书
- DB32-T 2860-2015散装液体化学品槽车装卸安全作业规范-(高清现行)
- 中国石油天然气集团公司井控装备技术判废检验管理规定
- T∕CAQ 10108-2018 供应商审核指南
评论
0/150
提交评论