《《基本输入输出》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基本输入输出》PPT课件.ppt(26页珍藏版)》请在三一办公上搜索。
1、第五部分 基本输入输出,Assembly Language Programming,IN和OUT指令,端口输入/输出INOUT两种寻址方式直接寻址IN AL/AX,nOUT n,AL/AXn为端口地址,范围为0-255间接寻址IN AL/AX,DXOUT DX,AL/AXDX为端口地址,范围为0-64K,输入输出的控制方式,I/O设备与主机(CPU和存储器)的通信是通过外设接口进行的,传送控制、状态、数据三种不同的信息,IN/OUT指令执行这些操作。程序控制方式CPU利用指令反复查询I/O的状态,直到I/O准备好,才进行输入/输出。此间CPU处于循环等待状态,未做有效的工作。中断方式CPU在执
2、行程序的同时兼顾对I/O设备的控制或数据传送。当I/O设备准备好(空闲),由I/O通知CPU暂停正在运行的程序,转而处理I/O设备的请求,处理完即返回主程序继续执行。DMA方式主要适用于高速I/O设备(如磁盘),CPU向I/O接口提供控制信息(如数据块的首地址及字节数),I/O设备直接和存储器进行成批数据的快速传送。,1 程序直接控制I/O方式,外设接口由一组寄存器(数据寄存器/状态寄存器/命令寄存器)组成,每个寄存器有一个端口地址(端口号),IBM-PC机的I/O地址空间可达64K(0000FFFFH)。I/O指令例:测试某状态寄存器(端口号27H)的第2位是否为1IN AL,27HTEST
3、 AL,00000100BJNZ ERROR,例CPU要从3个设备轮流输入数据,设备1,2,3的状态寄存器 端口号分别用STAT1,STAT2,STAT3表示,第5位是输入 准备位。INPUT:IN AL,STAT1 TEST AL,20H JZ DEV2 CALL FAR PTR PROC1DEV2:IN AL,STAT2 TEST AL,20H JZ DEV3 CALL FAR PTR PROC2DEV3:IN AL,STAT3 TEST AL,20H JZ NO_INPUT CALL FAR PTR PROC3NO_INPUT:,2 中断传送方式IBM-PC中断系统能处理256种类型的中
4、断,类型号为00FFH。中断向量表是各种中断处理程序的地址表。中断操作的5个步骤:,(1)取中断类型号(2)计算中断向量地址(3)取中断向量,偏移地址送IP,段地址送CS(4)转入中断处理程序(5)中断返回到INT指令的下一条指令,例:BIOS中断 INT 4AH 4AH4=128H 4AH4+2=12AH(128H)IP(12AH)CS,软件中断 vs.硬件中断,中断源:引起中断的事件外中断(硬中断):外设的I/O请求 可屏蔽中断 电源掉电/奇偶错 非屏蔽中断内中断(软中断):INT指令/CPU错(除法错、溢出)硬件中断 触发的事件来源于硬件,例如I/O设备完成I/O操作 事件可发生在程序执
5、行的任何时候 CPU在每条指令执行完毕,检查是否发生了硬件中断软件中断 触发的事件来源于程序中软件中断指令(也称为系统调用指令)通过运行软件中断指令,CPU处理中断,中断处理程序和中断向量,中断处理程序操作系统中处理特定中断的函数该函数以IRET返回,而非RET中断向量表由256个中断向量组成每个中断向量都是由4字节的相应的中断处理程序的入口地址组成较高2字节的地址对应中断处理程序的CS地址较低2字节的地址对应中断处理程序的IP地址占用内存低端地址的1024字节的区域,中断调用和返回 INT vs.IRET,INT指令格式:INT interrupt_type 动作:标志寄存器入栈,然后TF和
6、IF清0CS 和 IP 依次入栈根据interrupt_type设置CS:IP 中断向量的地址IRET指令格式:IRET 动作:将堆栈中保存的IP内容弹回到IP将堆栈中保存的CS内容弹回到CS将堆栈中保存的标志寄存器内容弹回到标志寄存器,BIOS vs.DOS系统调用,BIOS功能调用是对DOS或者用户程序服务的基本I/O请求操作的服务.BIOS functions:INT 0 到 INT 1BHDOS system calls:INT 21H各种不同的系统调用功能是由AH指定的,1 DOS 系统调用,Assembly Language Programming,字符的显示 INT 21H wi
7、th 02H,显示一个字符 INT 21H with 02H输入:AH:09HDL:显示的字符例:MOV AH,02HMOV DL,53H;SINT 21H,字符串的显示 INT 21H with 09H,显示字符串 INT 21H 输入:AH:09HDX:串的起始地址偏移量该串的结束符号必须是$例:MSG DBNAME?,$MOV AH,09HLEA DX,MSGINT 21H,键盘输入INT 21H with 0AH,第1步:键盘输入参数表PARA_LIST LABEL BYTEMAX_LEN DB20ACT_LENDB?KB_DATADB 20 DUP()第2步:功能设置MOV AH,0
8、AHLEA DX,PARA_LISTINT 21H,14 06 W i l s o n 0D,总长度 实际长度 回车符号,注意:最大长度加上回车符号不超过20,最大长度实际长度数据缓冲区,综合例子,提示用户输入姓名,然后用户输入不超过20个字符,.DATA;Define data segmentMSG DBNAME?,$PARA_LIST LABEL BYTEMAX_LEN DB 20ACT_LENDB?KB_DATADB 20 DUP(),.CODEMAINPROC FARMOV AX,data;Set address of dataMOV DS,AX;segment in DSMOV AH
9、,09HLEA DX,MSGINT 21HMOV AH,0AHLEA DX,PARA_LISTINT 21HMOV AX,4C00H;End processingINT 21HMAINENDPEND MAIN,控制字符的显示,根据其ASCII码显示出来,CREQU 13LFEQU 10TABEQU 09MSG DB TAB,MESSAGE FROM SYS,CR,LF,$,2 BIOS功能调用,Assembly Language Programming,屏幕的特征,25行,80列文本显示按页存储,编号从0到7,页0默认。2580 4000字节 每页4K字节(96字节未用),其中2K存字符,2K
10、存属性各页的默认起始地址:B800H,B900H,BA00H,00H,00H,00H,4FH,0CH,27/28H,18H,4FH,视频显示区,B800(0)H,设置光标 INT 10H with 02H,光标的位置决定了输入、输出的位置设置光标 INT 10H 的 02H功能设置:AH:02HBH:页数DH:行数(between 0 and 24)DL:列数(between 0 and 79),例mov ah,02hmov bh,00hmov dx,080Fhint 10h,清屏 INT 10H with 06H,清屏 INT 10H 的 06H 功能设置:AH:06HAL:滚动的线数,00
11、H代表全屏BH:属性值(颜色、闪烁等)CX:起始的 row:columnDX:结束的 row:column,另外一种清屏,设置显示方式00H功能也能实现清屏的功能例:MOV AH,00H MOV AL,03H;设置彩色文本显示INT 10H,3 中断处理程序的编写,Assembly Language Programming,DOS功能调用(21H)存取中断向量设置中断向量:AH=25HAL=中断类型号DS:DX=中断向量INT 21H取中断向量:AH=35HAL=中断类型号INT 21H返回时送ES:BX=中断向量,设置CPU中断允许位标志寄存器中的IF位=1 允许中断(STI 开中断)=0 禁止中断(CLI 关中断)中断程序的编写步骤:主程序:(1)设置中断向量(2)设置CPU中断允许位(3)设置中断屏蔽位中断处理子程序:(1)中断处理功能(2)IRET中断返回,P195,