RAM5# RAM6# RAM7#
1 0 1 0 0 1 0000000000 1 0 1 0 0 1 1111111111 1 0 1 0 1 0 0000000000 1 0 1 0 1 0 1111111111 1 0 1 0 1 1 0000000000 1 0 1 0 1 1 1111111111 A400H A7FFH A800H ABFFH AC00H AFFFH 16.扩展内存(XMS)与扩充内存(EMS)有何不同?
扩展内存是指CPU能直接寻址的、地址大于1MB以上的内存存储空间。 扩充内存是在微机的CPU寻址范围之外所扩展的物理存储器。
17.简述高速缓冲存储器在微机系统中的作用。
第6章 I/O接口技术
1.CPU与外部设备通讯为什么要使用接口?
2.CPU与输入/输出设备通信时所用到的接口电路通常应具备的功能?
3.I/O端口有哪两种寻址方式?各有何优缺点?
4.8086CPU在执行输入/输出指令时,CPU的哪些控制管脚起作用?什么样的电平有效?
5.计算机输入/输出有哪几种控制方式?各有何优缺点?
6.在输入/输出的电路中为什么常常要用锁存和缓冲器?
7.利用三态门(74LS244)作为输入接口,接口地址规定为04E5H,试画出其与8086总线的连接图。
04E5H = 0000 0100 1110 0101B 部分译码
A2A1A0作为138的CBA输入,即CBA=101,Y5接74LS244的1G、2G引脚 A10A7A6A5=1111作为138的G1使能信号 A4A3=00相或后作为G2A使能信号 A9A8=00相或后作为G2B使能信号
26
8.在IBM PC机接口开发中用到某一大规模集成电路芯片,其内部占16个I/O端口地址300H~30FH,试设计一个片选信号CS形成电路。
300H = 11 0000 0000B 30FH = 11 0000 1111B 部分译码
A3A2A1A0:接芯片的地址线
A6A5A4:作为138的CBA输入,即CBA=000 A7:作为G2AG2B使能信号 A9A8:相与后作为G1使能信号
9.在某8086微机系统中有一外设,使用存储器映像的I/O寻址方式,要求该外设地址为01000H,试画出其译码器的连接电路,使其译码器输出满足上述地址要求,译码器使用74LS138芯片。
01000H = 0000 0001 0000 0000 0000B
A2A1A0作为138的CBA输入,即CBA=000 A12=1,作为G1使能信号
其他相或后作为G2A、G2B使能信号
10.若第9题中的外设要求用I/O映像的I/O寻址,端口地址为38H,试画出其译码器的连接图。
部分译码
38H = 011 1000B
A2A1A0作为138的CBA输入,即CBA=000 A5A4A3=111,三位地址相与后作为G1使能信号 A7A6=00,可分别作为G2A,G2B使能信号
A5A4A3A7A6A2A1A0&+Y0G1Y1G2AY2G2BY374LS138Y4CY5BY6AY7译码信号M/IO
11.试根据图6.22所示的接口原理,编写一程序段,使从键盘输入一行字符(最大长度为80个字节),该行字符以回车符结尾,输入的字符存放在BUFF开始的内存缓冲区中,并要求每读入一个字符,在终端上显示出来(使用BIOS中断或系统功能调用)。
INPUT1 PROC MOV CX,80 LEA DI,BUFF
LOP1: CMP CX,0 JZ DONE
IN AL,29H
AND AL,01H JZ LOP1
27
IN AL, 28H CMP AL,0DH JZ DONE MOV [DI],AL MOV DL,AL MOV AH,02H INT 21H DEC CX INC DI JMP LOP1
DONE: RET INPUT1 ENDP
12.试画一个流程图,说明如何用程序控制的I/O把N个字节的数据块输入到存储器中。
13.CPU响应DMA请求和响应中断请求有什么本质性的区别?
14. DMAC(8237A)占几个端口地址?这些地址在读写时的作用是什么?叙述DMAC由内存向端口传送一个数据块的过程。若希望利用8237A把内存中的一个数据块传送到内存的另一个区域,应当如何处理?当考虑8237A工作在8086系统,数据是由内存的某一段向另一段传送且数据块长度大于64K时,应当如何考虑?
15.当DMA8237A获得总线控制权后,它是怎样发出20位地址信号的?写出DMA在PC/XT机中4个通道的分工情况。
16.设8237A口址为00~0FH,编写一个以请求方式进行数据块传送,数据块长为1000H,从内存00000H传送到01000H,传送完不自动预置,DREQ、DACK均为高电平有效的程序。
28
第7章 中断系统
1.什么是中断?简述一个中断的全过程。
2.8086的可屏蔽中断与非屏蔽中断有何不同?
3.中断向量表的作用是什么?如何设置中断向量表,常用的方法有哪些?
4.类型26H的中断向量在存储器的哪些单元里?
5.已知SP=0100H,SS=0300H,FLAGS=0240H,00020H至00023H单元内容分别是40H,00H,00H,01H,同时还已知INT 8的偏移量00A0H在段基址为0900H的CS段内,试指出在执行INT 8指令并进入该指令相应的中断程序时,SP、SS、IP、CS、FLAGS和堆栈最上面三个字的内容。
解:
(1) 中断响应时,将当前的FLAGS(0240H)、CS(0900H)和IP(00A0H)内容依次压入堆栈,以便返回时恢复。
0300 : 00FA 0300 : 00FB 0300 : 00FC 0300 : 00FD 0300 : 00FE 0300 : 00FF
A0H 00H 00H 09H 40H 02H SS = 0300H,SP = 00FAH
(2) 将FLAGS中的IF标志和TF标志清零
0240H = 0000 0010 0100 0000H(从左到右:第15~0位) IF = 1(第9位),TF = 0(第8位),清零后,FLAGS = 0040H (3) 根据中断类型码,转入中断服务程序入口。 向量地址 = 08H × 4 = 00020H CS = 0100H,IP = 0040H
6.假设中断类型9的中断服务程序的起始地址为INT-POUT,试写出主程序为建立对应中断向量的程序段。
; 设置中断向量-方法1 PUSH DS MOV AX, 0 MOV MOV MOV MOV MOV MOV
; 数据段地址压栈
; 中断向量表段地址→DS ; 中断向量地址→BX
DS, AX BX, 9*4
AX, OFFSET INT-POUT ; 中断向量填入中断向量表 [BX], AX
AX, SEG INT-POUT [BX+2], AX
29
POP DS ; 设置中断向量-方法2 PUSH MOV MOV MOV MOV MOV INT POP
; 恢复数据段地址
DS
AX, SEG INT-POUT DS, AX
DX, OFFSET INT-POUT AH, 25H AL, 9 21H DS
7.设备D1、D2、D3、D4、D5是按优先级次序排列的,D1的优先权最高,而中断请求的次序如下所示,试给出各设备的中断处理程序的运行次序。假设所有的中断服务程序开始后就有STI指令,并在中断返回之前发出结束命令。
(1) D3和D4同时发出中断请求。
(2) 在D3的中断服务程序完成之前,D2发出中断请求。 (3) 在D4的中断服务程序完成之前,D5发出中断请求。
(4) 以上所有的中断服务程序完成并返回主程序后,D1、D3、D5同时发出中断请求。
8.在上题中,假设所有中断中都没有STI指令,而它们的IRET指令都可以由于FLAGS出栈而使IF=1,则各设备的中断服务程序的运行次序应是怎样的?
9.试定义一个软中断,中断类型码为79H,要求:
(1) 在中断服务程序中,完成ASCII码到BCD码的转换,ASCII码首地址为ASCMM,字节数为NUMB,转换后的BCD码放在BCDMM为首地址的存储区中;
(2) 能正确地转到中断服务程序,即需给出中断向量。试编写出中断服务程序和主程序片断。 解:(完成的是数字的ASCII码到数字的转换) ; 主程序片断
; 设置中断向量-方法1 PUSH MOV MOV MOV MOV MOV MOV
DS AX, 0
;数据段地址压栈
;中断向量表段地址→DS
DS, AX
BX, 79H*4 AX, OFFSET ATOBCD [BX], AX AX, SEG ATOBCD
;中断向量地址→BX
;中断向量填入中断向量表
MOV [BX+2], AX POP DS ; 设置中断向量-方法2 PUSH MOV MOV MOV MOV MOV
;恢复数据段地址
DS
AX, SEG ATOBCD DS, AX
DX, OFFSET ATOBCD AH, 25H AL, 79H
30