《基本输入输出》PPT课件.ppt_第1页
《基本输入输出》PPT课件.ppt_第2页
《基本输入输出》PPT课件.ppt_第3页
《基本输入输出》PPT课件.ppt_第4页
《基本输入输出》PPT课件.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五部分 基本输入输出,Assembly Language Programming,IN和OUT指令,端口输入/输出 IN OUT 两种寻址方式 直接寻址 IN AL/AX, n OUT n, AL/AX n为端口地址,范围为0-255 间接寻址 IN AL/AX, DX OUT DX, AL/AX DX为端口地址,范围为0-64K,输入输出的控制方式,I/O设备与主机(CPU和存储器)的通信是通过外设接口进行的,传送控制、状态、数据三种不同的信息,IN/OUT指令执行这些操作。 程序控制方式 CPU利用指令反复查询I/O的状态,直到I/O准备好,才进行输入/输出。此间CPU处于循环等待状态,

2、未做有效的工作。 中断方式 CPU在执行程序的同时兼顾对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

3、)的第2位是否为1 IN AL, 27H TEST AL, 00000100B JNZ ERROR,例CPU要从3个设备轮流输入数据,设备1,2,3的状态寄存器 端口号分别用STAT1,STAT2,STAT3表示,第5位是输入 准备位。 INPUT: IN AL, STAT1 TEST AL, 20H JZ DEV2 CALL FAR PTR PROC1 DEV2: IN AL, STAT2 TEST AL, 20H JZ DEV3 CALL FAR PTR PROC2 DEV3: IN AL, STAT3 TEST AL, 20H JZ NO_INPUT CALL FAR PTR PROC3

4、 NO_INPUT:,2 中断传送方式 IBM-PC中断系统能处理256种类型的中断,类型号为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请求 可屏蔽中断 电源掉电/奇偶错 非屏蔽中断 内中断(软中断

5、):INT指令/CPU错(除法错、溢出) 硬件中断 触发的事件来源于硬件,例如I/O设备完成I/O操作 事件可发生在程序执行的任何时候 CPU在每条指令执行完毕,检查是否发生了硬件中断 软件中断 触发的事件来源于程序中软件中断指令(也称为系统调用指令) 通过运行软件中断指令,CPU处理中断,中断处理程序和中断向量,中断处理程序 操作系统中处理特定中断的函数 该函数以IRET返回,而非RET 中断向量表 由256个中断向量组成 每个中断向量都是由4字节的相应的中断处理程序的入口地址组成 较高2字节的地址对应中断处理程序的CS地址 较低2字节的地址对应中断处理程序的IP地址 占用内存低端地址的10

6、24字节的区域,中断调用和返回 INT vs. IRET,INT指令 格式:INT interrupt_type 动作: 标志寄存器入栈,然后TF和IF清0 CS 和 IP 依次入栈 根据interrupt_type设置CS:IP 中断向量的地址 IRET指令 格式:IRET 动作: 将堆栈中保存的IP内容弹回到IP 将堆栈中保存的CS内容弹回到CS 将堆栈中保存的标志寄存器内容弹回到标志寄存器,BIOS vs. DOS系统调用,BIOS功能调用是对DOS或者用户程序服务的基本I/O请求操作的服务. BIOS functions: INT 0 到 INT 1BH DOS system call

7、s: INT 21H 各种不同的系统调用功能是由AH指定的,1 DOS 系统调用,Assembly Language Programming,字符的显示 INT 21H with 02H,显示一个字符 INT 21H with 02H 输入: AH: 09H DL: 显示的字符 例: MOV AH, 02H MOV DL, 53H ;S INT 21H,字符串的显示 INT 21H with 09H,显示字符串 INT 21H 输入: AH: 09H DX: 串的起始地址偏移量 该串的结束符号必须是 $ 例: MSG DBNAME?, $ MOV AH, 09H LEA DX, MSG INT

8、 21H,键盘输入INT 21H with 0AH,第1步:键盘输入参数表 PARA_LIST LABEL BYTE MAX_LEN DB20 ACT_LENDB ? KB_DATADB 20 DUP( ) 第2步:功能设置 MOV AH, 0AH LEA DX, PARA_LIST INT 21H,14 06 W i l s o n 0D,总长度 实际长度 回车符号,注意:最大长度加上回车符号 不超过20,最大长度 实际长度 数据缓冲区,综合例子,提示用户输入姓名,然后用户输入不超过20个字符,DATA;Define data segment MSG DBNAME?, $ PARA_LIST

9、 LABEL BYTE MAX_LEN DB 20 ACT_LENDB ? KB_DATADB 20 DUP(,CODE MAINPROC FAR MOV AX,data;Set address of data MOV DS,AX; segment in DS MOV AH, 09H LEA DX, MSG INT 21H MOV AH, 0AH LEA DX, PARA_LIST INT 21H MOV AX,4C00H;End processing INT 21H MAINENDP END MAIN,控制字符的显示,根据其ASCII码显示出来,CREQU 13 LFEQU 10 TABEQ

10、U 09 MSG DB TAB, MESSAGE FROM SYS, CR, LF, ,2 BIOS功能调用,Assembly Language Programming,屏幕的特征,25行,80列 文本显示按页存储,编号从0到7,页0默认。 2580 4000字节 每页4K字节(96字节未用),其中2K存字符,2K存属性 各页的默认起始地址:B800H, B900H, BA00H,00H, 00H,00H, 4FH,0CH, 27/28H,18H, 4FH,视频显示区,B800(0)H,设置光标 INT 10H with 02H,光标的位置决定了输入、输出的位置 设置光标 INT 10H 的

11、02H功能 设置: AH: 02H BH: 页数 DH: 行数 (between 0 and 24) DL: 列数(between 0 and 79,例 mov ah, 02h mov bh, 00h mov dx, 080Fh int 10h,清屏 INT 10H with 06H,清屏 INT 10H 的 06H 功能 设置: AH: 06H AL: 滚动的线数, 00H代表全屏 BH: 属性值(颜色、闪烁等) CX: 起始的 row:column DX: 结束的 row:column,另外一种清屏,设置显示方式00H功能 也能实现清屏的功能 例: MOV AH, 00H MOV AL, 03H;设置彩色文本显示 INT 10H,3 中断处理程序的编写,Assembly Language Programming,DOS功能调用(21H)存取中断向量 设置中断向量: AH=25H AL=中断类型号 DS:DX=中断向量 INT 21H 取中断向量: AH=35H AL=中断类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论