输入输出与中断
Posted howbin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入输出与中断相关的知识,希望对你有一定的参考价值。
输入输出与中断
题目1
问题描述
设有一输入设备,其数据端口的地址为FFE0H,并从端口FFE2H提供状态,当其D0位为1时表明输入数据准备好。试编写采用查询方式进行数据传送的程序段,要求从该设备读取64个字节并输入到从2000H开始的内存中
解答:
data segment
IOEA equ FFE0H
iosA equ FFE0H
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,64
w:
mov dx,IOSA
in al,dx
test al,01h
jz w
l: mov dx,IOEA
in al,dx
mov [2000h],al
loop w
mov ah,4ch
int 21h
code ends
end start
题目2
问题描述
如下图,假设LED数码管为共阴管,且段a接数据的最低位,段dp(小数点)接最高位,请编写显示内存单元DS:[1200H]中数据(为1位非压缩BCD码)的程序段。
解答:
程序一
data segment
IOA equ 83h
mytab db 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH; 共阳极数码管
mydata db 00000001b
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
xor bx,bx
mov bl,mydata;
mov al,mytab[bx]
mov dx,IOA
out dx,al
mov ah,4ch
int 21h;
code ends
end start
程序2 利用xlat指令
data segment
IOA equ 83h
mytab db 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH; 共阳极数码管
mydata db 00000001b
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea bx,mytab;
mov al,mydata
xlat
mov dx,IOA
out dx,al
mov ah,4ch
int 21h;
code ends
end start
题目3
问题描述
下图所示为一个I/O接口电路。
1)该接口的操作类型是(输入)还是(输出);
2)主机对其I/O的传送控制方式是什么? 查询
3)图中信号IOR当执行什么指令时有效? IN
4)结合一次数据的I/O过程,写出有关的几条指令。
解答
- 输入
- 程序传送方式中的查询
- IN
- 相关指令如下
data segment
IOA equ 200H
IOS equ 201H
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
w:
mov dx,IOS
in al,dx
test al,80h;
jz w
mov dx,IOA
in al,dx
mov ah,4ch
int 21h;
code ends
end start
题目4
题目描述
设某系统中CPU的寄存器和存储区的一段内容如下:
(20H)=3CH、(21H)=00H、(22H)=86H、(23H)=0EH、CS=2000H、IP=0010H、SS=1000H、SP=0100H、FLAGS=0240H
这时执行INT 8指令
(1) 程序转向何处执行?
(2) 堆栈栈顶6个内存单元的地址及内容分别是什么?
解答:
- 程序转向何处执行
-
堆栈栈顶6个内存单元的地址及内容分别是什么?
这个问题主要考察中断时,系统是如何保护现场的
具体过程如下
结果如如表4-1
题目5
题目描述
什么是中断向量?什么是中断向量表?若某外部可屏蔽中断的类型号为30H,则中断服务程序的入口地址为1020H:3040H,用8086汇编语言编程实现将该中断服务程序的入口地址装入中断向量表中。
解答:
-
中断向量是指中断服务程序的入口地址
-
中断向量表是存放256个中断向量的存储区域
-
装入中断服务子程序
程序1:基于DOS中断 无需计算中断向量地址 功能号:AH=25H 入口参数: AL=中断类型号 DS=中断服务程序入口地址的段地址 DX=中段服务程序入口地址的偏移地址 具体程序
push ds ;准备入口参数 mov dx,3040H mov ax,1020H mov ds,ax ;调用dos中断 ;设置功能号 mov ah,25h ;设置入口参数 mov al,30h int 21h
程序2直接装入法 需要计算向量入口地址
中断号×4即为中断向量地址,依次装入IP,与CS。
可知中断向量地址为 COH
具体程序如下
;设置段地址
push ds
xor ax,ax
mov ds,ax
;首先装入IP
mov ax,3040H
mov [0COH],ax
;装入CS
mov ax,1020H
mov [0C2],ax
题目6
题目描述
若某8086系统采用单片8259A管理外部中断,其中的一个中断类型号为0DH,则它的中断向量地址指针是多少?这个中断源应接在8259A的哪个输入端上?若该中断服务程序的入口地址为D000H:3200H,则其向量区对应4个单元的数值依次是多少?
解答:
- 中断向量指针
- 8259A中断引脚的确定
取低3位,101b=5d,所以对应IR5
以上是关于输入输出与中断的主要内容,如果未能解决你的问题,请参考以下文章