第一章 作业
1. 主板主要由哪几部分组成?
CPU 插座、芯片组(北桥芯片、南桥芯片等)、BIOS 芯片、系统时钟发生器芯片、总线(前端系统总线FSB 、QPI 总线、内存总线、图形总线 AGP、外围设备总线PCI-E 等)、接口(集成驱动电子设备接口IDE 、通用串行设备接口USB 、以太网接口LAN 、音频接口AC ’97、超级输入输出接口SIO 等)。
2. 微处理器、微型计算机和微型计算机系统三者之间有什么不同? 微处理器是微型计算机的核心,是微型计算机的一部分。它是集成在一块芯片上的CPU ,由运算器和控制器组成。 微型计算机包括微处理器、存储器、I/O接口和系统总线,是微型计算机系统的主体。 微型计算机系统包括微型计算机、外设及系统软件三部分。 3. 微型计算机的性能指标有哪些?
CPU 的位数、CPU 的主频、内存容量和速度、硬盘容量。
第二章 习题
1. 若(AL)=0C0H, (BX)=03523H,则执行指令ADD AL,BL之后
(AL)=_____,(BL)=_____,标志位OF,SF,ZF,AF,CF,PF 的状态对应为_____.
2. 设(SS )=2250H, (SP )=0140H, 若在堆栈中放入5个数据, 则栈顶的物理地址为___,如果又从堆栈中取出3个数据, 则栈顶的物理地址为____.
3. 两个逻辑地址分别为2003H :1009H 和2101H :0029H ,它们对应的物理地址是多少?说明了什么?
4. 在8088/8086中,逻辑地址FFFF ∶0001, 00A2∶37F 和B800∶173F 的物理地址分别是多少?
物理地址=段地址×10H +偏移地址
所以FFFF :0001的物理地址是FFFFH ×10H +0001H =FFFF1H 00A2:37F 的物理地址是00A2×10H +037FH=00D9FH
B800:173F 的物理地址是B800×10H +173F=B973FH
5. 在8088/8086中,从物理地址388H 开始顺序存放下列三个双字节的数据,651AH, D761H 和007BH ,请问物理地址388H, 389H, 38AH, 38BH, 38CH和38DH 6个单元中分别是什么数据?
6. 已知当前(DS)=7F06H ,在偏移地址为0075H 的存储器中连续存放6个字节的数据:11H ,22H ,33H ,44H ,55H ,66H 。请指出这些数据在存储器中的物理地址。如果要从存储器中读出这些数据,需要访问几次存储器?各读出哪些数据? 作业
1.8086内部主要包括哪些功能部件?它们完成什么功能?
总线接口单元BIU ,负责与存储器、I/O 端口传送数据;执行单元EU ,负责指令执行。
2. 总线周期的含义是什么?8088/8086的基本总线周期由几个时钟 组成?如果一个CPU 的时钟频率为24MHz ,它的一个时钟周期为 多少?一个基本总线周期为多少?
总线周期的含义是总线接口部件完成一个取指令或传送数据的完整操作所需的最少时钟周期数。
8086/8088的基本总线周期由4个时钟周期组成。
当主频为24MHz 时,T φ=1/24MHz≈41.7ns ,T 总=4Tφ≈167ns 。 当主频为15MHz 时,T φ=1/15MHz≈66.7ns ,T 总=4Tφ≈267ns 。 3.CPU 启动时如何寻找系统的启动程序?
(CPU 启动时,有以下特征:内部寄存器等置为初值;禁止中断(可屏蔽中断);从FFFF0H 开始执行程序;三态总线处于高阻状态。)
8086/8088系统的启动程序从FFFF0H 单元开始的无条件转移指令转入执行。 在FFFF0H 处存放一条无条件转移指令,系统加电复位时,会自动转到FFFF0H 单元执行,转向系统初始化程序。
4. 画出8086最小模式时的典型配置,说明为什么要使用8282。
5. 画出8086最小模式时的写周期时序,注明地址数据总线的状态。
6. 什么叫中断向量?它放在哪里?对应于1CH 的中断向量放在哪 里?如果1CH 对应的中断处理子程序从5110H:2030H开始,则中 断向量该如何存放?
中断处理子程序的入口地址就是中断向量。
中断向量放在0段的0~3FFH区域的中断向量表中。
对应于类型号为1CH 的中断向量应放在00070~00073H的4个单元中。 若1CH 的中断向量为5110H:2030H,则中断向量的存放方法为:00070H 存放30H ,00071H 存放20H (IP);00072H 存放10H ,00073H 存放51H (CS)。 7.8086如何区分存储器操作和I/O操作?怎样用16位寄存器实现对 20位地址的寻址?
(8086存储空间最大为220=1MB。)
采用分段的方法实现16位寄存器实现对20位地址的寻址。 物理地址=段基址×10H+偏移地址
第三章 作业
1. 解释Pentium 中的分支预测技术。
(分支转移指令的转移目标地址是可以预测的,预测的依据就是前一次的转移目标地址即所谓的历史状态。)
使用BTB (branch target buffer,分支目标缓冲器)预测转移是否发生。 预测依据:前一次的转移目标地址。 基于的规律:大多数分支指令转向每个分支的机会是不均等的;大多数分支指令在循环体中。
方法:1KB 容量的Cache ,容纳256条转移指令的目标地址和历史状态;两个预取缓冲器,按照两个方向预取指令。
2.Pentium 有几种工作方式?各有何特点?各方式之间如何切换?
实地址方式、保护虚拟地址方式(保护方式/本性方式)、虚拟8086方式。 实地址方式:刚加电或复位时进入,目的是系统初始化,配置和准备保护方式所需要的数据结构;寻址机构、存储器管理和中断处理机构同8086;操作数默认为16位;存储器容量最大1MB ,采用分段方式;存储器保留两个固定区域,初始化程序入口区和中断向量区。 保护方式:存储器用逻辑地址空间、线性地址空间和物理地址空间三种方式描述;采用虚拟存储器扩大程序可访问的空间;可进行16位运算,也可进行32位运算。 虚拟8086方式:在保护方式下,通过软件切换到该方式;是保护方式下多任务中的某一个任务;类似于实地址方式,可执行8086的应用程序;与实地址方式不同之处,实地址方式针对整个CPU ,而虚拟8086方式是保护方式下某个任务对应的方式,虚拟8086方式下,存储器除了分段,还进行分页。
3. 什么是超标量流水线机制?请说明Pentium 的两条流水线全速运行的条件。 所谓超标量流水线技术,就是在一个处理器中有多条指令流水线的技术。两条流水线并行执行两条指令,V 流水线只能执行和U 流水线当前执行的指令符合配对规则的指令。
两条指令都是RISC 指令;互相没有寄存器关联性。
4.Pentium 的逻辑地址、线性地址、物理地址分别指什么?它们的寻址能力如何?
逻辑地址就是程序员所看到的地址,也叫虚拟地址。 线性地址是单一的32位地址。
物理地址和芯片引脚上的地址信号相对应,它为每个存储单元在存储体中指定唯一的地址。
寻址能力都是32位。
5.Pentium 中的段基址与8086中的有何异同?
6. 简述Pentium 在保护方式下存储器物理地址的形成过程。
7. 试比较8086最小模式下读周期与Pentium 的非流水线式读周期有何不同。
8. 试比较Pentium 流水线式读/写周期与突发式读/写周期有何不同。
第四章 习题
1. DRAM2164(64K ×1)外部引脚有(B )。 A.16条地址线、2条数据线 B.8条地址线、1条数据线 C.16条地址线、1条数据线 D.8条地址线、2条数据线
2. 若用1K ×4的芯片组成2K ×8的RAM ,需要(C )片。 A.2片 B.16片 C.4片 D.8片
3. 8086在进行存储器写操作时,引脚信号M/IO 和DT/R 应该是(D )。 A.00 B.01 C.10 D.11
4. 计算一个存储器芯片容量的公式为(A )。
A. 编址单元数×数据线位数 B.编址单元数×字节 C. 编址单元数×字长 D.数据线位数×字长
5. 为8088CPU 设计一个8KB 容量的存储器系统, 要求存储器地址从02000H 开始,采用6116(2K×8) 芯片。试求: ①对各芯片地址分配。
②指出各芯片的片内选择地址线和芯片选择地址线。 ③采用74LS138,画出全译码法与8088CPU 的连接图。
6. 为8086CPU 设计一个8KB 容量的存储器系统, 要求存储器地址从02000H 开始,采用6116(2K×8) 芯片。试求: ①对各芯片地址分配。
②指出各芯片的片内选择地址线和芯片选择地址线。 ③采用74LS138,画出全译码法与8086CPU 的连接图。 注. 第6可以仅仅指明与第5题解法的不同之处。
7. 在8086系统中,AD 0和有什么用途? 例题
1. 2011年全国统考试题
2. 2009年全国统考试题
请求分页管理系统中,假设某进程的页表内容如下表所示。
页面大小为4KB ,一次内存的访问时间是100ns ,一次快表(TLB)的访问时间是10ns ,处理一次缺页的平均时间为108ns(已含更新TLB 和页表的时间) ,进程的驻留集大小固定为2,采用最近最少使用置换算法(LRU)和局部淘汰策略。假设①TLB 初始为空;②地址转换时先访问TLB ,若TLB 未命中,再访问页表(忽略访问页表之后的TLB 更新时间) ;③有效位为0表示页面不在内存,产生缺页中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。设有虚地址访问序列2362H 、1565H 、25A5H ,请问:
(1)依次访问上述三个虚地址,各需多少时间?给出计算过程。
(2)基于上述访问序列,虚地址1565H 、25A5H 的物理地址是什么?请说明理由。
3. 2010年全国统考试题
某计算机的主存地址空间大小为256MB ,按字节编址。指令Cache 和数据Cache 分离,均有8个Cache 行,每个Cache 行大小为64B ,数据Cache 采用直接映射方式。现有两个功能相同的程序A 和B ,其伪代码如下所示: 程序A :
int a[256][256]; ……
int sum_array1(){ int i,j,sum=0; for(i=0;i
for(j=0;j
return sum; }
程序B :
int a[256][256]; ……
int sum_array1(){ int i,j,sum=0; for(j=0;j
for(i=0;i
return sum; }
假定int 类型数据用32位补码表示,程序编译时i,j,sum 均分配在寄存器中,数组a 按行优先方式存放,其首地址为320(十进制数)。请回答下列问题,要求说明理由或给出计算过程。
(1)若不考虑用于Cache 一致性维护和替换算法的控制位,则数据Cache 的总容量为多少?
(2)数组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache 行号分别是多少(Cache 行号从0开始)?
(3)程序A 和B 的数据访问命中率各是多少?哪个程序的执行时间更短? 作业
1. 存储器的片选信号有哪几种构成方式?各有何优缺点?
2. 存储器访问中的对准状态的含义是什么?程序设计中避免非对准状态有何好处?如何做到?
3. 区域性定律(局部性原理)适用于哪一方面?它包含哪两类特征?
大部分软件对存储器的访问并不是任意的、随机的,而是有着明显的区域性。 1. 时间区域性:存储体中某一个数据被存取后,可能很快又被存取。 2. 空间区域性:存储体中某个数据被存取了,附近的数据也很快被存取。
第五章 作业
1. 外设为什么需要通过接口与主机系统相连?存储器需要接口与总线相连么?为什么?
因为外设的功能多种多样,对于模拟量信息的外设必须要进行A/D和D/A转换,而对于串行信息的外设则必须转换为并行的信息,对于并行信息的外设还要选
通。而且外设的速度比CPU 慢的多,必须增加缓冲功能。只有这样计算机才能使用这些外设。而所有这些信息转换和缓冲功能均由接口电路才能完成。 存储器不需要接口电路和总线相连。
因为存储器功能单一,且速度与CPU 相当。因此可直接挂在CPU 总线上。 2.CPU 和外设之间传送的信息有哪几类? 数据信息、控制信息、状态信息。 3.8086/8088系统中,用哪种方法对I/O端口编址?地址如何形成?试举例说明。 在8086/8088系统中,用I/O端口单独寻址方式编址。
4. 设一个接口的输入端口地址为0100H ,状态端口地址为0104H ,状态端口的第5位为1表示输入缓冲器有一个字节准备好,可输入。设计程序实现查询式输入。 DATA SEGMENT
BUFFER DB 20 DUP(?) ; 接收数据缓冲区 DATA ENDS CODE SEGMENT
ASSUME DS:DATA,CS:CODE STAT: MOV AX ,DATA ; 对DS 初始化 MOV DS ,AX MOV DI ,OFFSET BUFFER MOV DX ,0104H
STATIN: IN AL ,DX
TEST AL ,20H ; 测试第5位
JZ STATIN ; 第5位为0继续测试 MOV DX ,0100H
IN AL ,DX ; 输入数据 MOV [DI],AL CODE ENDS END STAT
第六章 例题
现要求用一个8255A 作为终端机的接口。由端口A 输出字符到终端机的显示器,端口B 用于键盘输入字符,端口C 为终端状态信息输入端口。当PC0=1表示键盘输入字符就绪,PC7=0表示显示缓冲器已空。要求用查询方法把从键盘输入的每个字符都送到终端机的显示缓冲器上,当输入的是回车符(ASCII 码为0DH )时操作结束。假设该8255A 芯片的端口地址是60H~66H(8086)(间隔为2划分输入,若题目改为60H~63H,间隔为1划分输入),试编写包括8255A 的初始化程序在内的输入输出驱动程序。
CSEG SEGMENT
ASSUME CS:CSEG
START:MOV AL,10001011B
OUT 66H,AL(此处对应题目终止范围,若~63H,此处66H 改为63H ) KEY: IN AL,64H(64H 改62H ) TEST AL,01 JZ KEY
IN AL,62H(62H 改61H ) CMP AL,0DH JZ STOP MOV AH,AL
DISP: IN AL,64H(64H 改62H ) TEST AL,80H JNZ DISP MOV AL,AH
OUT 60H,AL(此处对应题目起始范围) JMP KEY STOP: MOV AH,4CH INT 21H CSEG ENDS
END START 作业
1. 对8255A 设置工作方式。控制口地址为0C6H 。要求:端口A 工作在方式1,输入;端口B 工作在方式0,输出;端口C 的部分位配合A 工作,其余设置为输入。
2. 设8086系统中8255A 的地址为0C0H~0C6H。用置0/置1方式对PC 6置1,PC 4置0。
3. 若采用查询式实现8255A 与打印机接口,用PB 口传送内存DATA 单元开始的100个字节数据,PC7用作STB 号、PC3作为BUSY 信号,如下图所示。试完成控制程序设计。
说明:当CPU 通过接口要求打印机打印数据时,先查看BUSY 信号,当BUSY=‘L ’时,才向打印机输出数据,在把数据送上DATA 线后,先发STB 选通打印机,打印机接到STB 后,发BUSY=‘H ’, 接收数据,当数据接收号并存入内部打印缓冲区后,送出ACK 信号,表示打印机已准备好接收新数据,并撤销BUSY(0)。 LEA DI , DATA MOV CX , 100
MOV AL,81H ; 方式控制字 OUT 83H,AL
NEXT: MOV AL,0FH ; PC7=1 OUT 83H,AL TESBY :IN AL,82H TEST AL,08H JNZ TESBY MOV AL,[DI]
OUT 81H,AL ;送数 INC DI
MOV AL,0EH ; PC7发送低电平选通打印机 OUT 83H,AL CALL DELAY LOOP NEXT RET
4. 某32位计算机,CPU 主频为800MHz ,Cache 命中时的CPI 为4,Cache 块大小为32字节;主存采用8体交叉存储方式,每个体的存储字长为32位,存储周期为40ns ;存储器总线宽度为32位,总线时钟频率为200MHz ,支持突发传送总线事务。每次读突发传送总线事务的过程包括:送首地址和命令、存储器准备数据、传送数据。每次突发传送32字节,传送地址或32位数据均需要一个总线时钟周
期。请回答下列问题,要求给出理由或计算过程。
(1)CPU 和总线的时钟周期各为多少?总线的带宽(即最大数据传输率)为多少?
(2)Cache 缺失时,需要用几个读突发传送总线事务来完成一个主存块的读取?
(3)存储器总线完成一次读突发传送总线事务所需时间是多少?
(4)若程序BP 执行过程中,共执行了100条指令,平均每条指令需进行1.2次访存,Cache 缺失率为5%,不考虑替换等开销,则BP 的CPU 执行时间是多少?
(1)CPU 的时钟周期为:1/800MHz=1.25ns
总线的时钟周期为:1/200MHz=5ns
总线带宽为:4B ×200MHz=800MB/s
或4B/5ns=800MB/s
(2)Cache 块大小是32B ,因此Cache 缺失时需要一个读突发传送总线事务读取一个主存块。
(3)一次读突发传送总线事务包括一次地址传送和32B 数据传送:用1个总线时钟周期传输地址;每隔40ns/8=5ns启动一个体工作(各进行1次存取),第一个体读数据花费40ns ,之后数据存取与数据传输重叠;用8个总线时钟周期传输数据。读突发传送总线事务时间:5ns+40ns+8×5ns=85ns
(4)BP 的CPU 执行时间包括Cache 命中时的指令执行时间和Cache 缺失时带来的额外开销。
命中时的指令执行时间:100×4×1.25ns=500ns
指令执行过程中Cache 缺失时的额外开销:1.2×100×5%×85ns=510ns BP 的CPU 执行时间:500ns+510ns=1010ns
习题
1. 在数据通信系统,什么情况下可用全双工方式,什么情况下可用半双工方式? 对于近距离较大信息量的传输应采用全双工方式。而对于远距离或较少信息量的传输或单向的输入或输出设备时应采用半双工方式。
2. 什么叫同步通信方式?什么叫异步通信方式?它们各有什么优缺点?
在同一时钟控制下需用同步字符同步的信息按组传送的方式叫同步通信方式。 在两个相近频率的时钟分别控制下只需一个起始位的信息按字符传送的方式叫异步通信方式。
在传输率相同时同步方式的信息有效率要比异步方式下的高。但同步方式必须传送时钟信号,异步方式只要两端的时钟频率相近即可。
3. 什么叫波特率因子?什么叫波特率?设波特率因子为64,波特率为1200,那么时钟频率为多少?
波特率因子:时钟频率和位传输率的比值(必须为16、32或64)。 波特率:位传输率即为波特率。
时钟频率=波特率因子×波特率=64×1200=76800Hz。
4. 设异步传输时,每个字符对应1个起始位、7个信息位、1个奇偶校验位和1个停止位。如果波特率为9600,则每秒钟能传输的最大字符数为多少个?
每个字符所占的总位数为:1+7+1+1=10位。所以每秒钟能传输的最大字符数为:9600/10=960个字符。
5.8251A 的状态字格式如何?哪几位和引脚信号有关?状态为TxRDY 和引脚信号TxRDY 有何区别?它们在系统设计中有什么用处?
8251A 的状态字格式为:
DSR 、SYNDET 、TxE 、RxRDY 四个状态位与其对应的引腿信号有关。
状态位TxRDY 只要数据输出缓冲器为空就置1。而引腿TxRDY 为1的条件是:数据输出缓冲器为空、为有效低电平、TxEN 为1才可以,缺一不行。
能让CPU 随时了解当前8251A 的工作状态,而执行相应的操作。对查询方式的设计非常方便。
6. 参考初始化流程,用程序段对8251A 进行同步模式设置。奇地址端口为66H ,规定用内同步方式,同步字符为2个,用奇校验,7个数据位。
模式字为:00011000B=18H。两个同步字符取16H ,控制字为97H ,它使8251A 对同步字符进行检索;同时使状态寄存器中的3个出错标志复位;使8251A 的发送器启动,接收器也启动;CPU 当前已准备好进行数据传输。
具体程序段如下:
MOV AL ,18H ; 设置模式字
OUT 66H ,AL
MOV AL ,16H ; 发送两个同步字符
OUT 66H ,AL
OUT 66H ,AL
MOV AL ,97H ; 设置控制字
OUT 66H ,AL
7. 设计一个采用异步通信方式输出字符的程序段,规定波特率因子为64,7个数据位,1个停止位,偶校验,端口地址为40H 、42H ,缓冲区首地址为4000H :3000H 。共需输出100个字符。
模式字为:01111011B=7BH。控制字为:00110101B=35H。
MOV AL ,0 ; 为发复位命令作准备
OUT 42H ,AL
OUT 42H ,AL
OUT 42H ,AL
MOV AL ,40H ; 发复位命令
OUT 42H ,AL
MOV AL ,7BH ; 设置模式字,异步方式,规定波特率因子为64
;7个数据位,1个停止位,偶校验
OUT 42H ,AL
MOV AL ,35H ; 设置控制字,使发送器和接收器启动,并清除
; 出错标志
OUT 42H ,AL
PUSH DS
MOV BX ,2000H ;DS:BX指向输出缓冲区首址
MOV DS ,BX
MOV BX ,3000H ; 缓冲区指针初始化
MOV CX ,100H ; 发送100H 个字节
BEGIN: IN AL ,42H ; 读取状态字,测试TxRDY 是否为1
TEST AL ,01H
JZ BEGIN ; 为0表示外设还未取走字符
MOV AL ,[BX] ; 从输出缓冲区取数
OUT 40H ,AL ; 发送字符
INC BX ; 修改缓冲区指针
LOOP BEGIN ; 则再发送下一个字符
POP DS
┆
第七章
作业
1.8259A 的初始化命令字和操作命令字有何不同?它们分别对应编程结构中的哪些内部寄存器?哪些写入奇地址?哪些写入偶地址?编程时如何区分它们? 8259A 的初始化命令字是计算机系统启动时,由初始化程序设置的。初始化命令字一旦设定,一般在系统工作过程中就不再改变。操作命令字则是由应用程序设定的,它们用来对中断处理过程作动态控制,在一个系统运行过程中,操作命令字可以多次设置。
初始化命令字对应于编程结构的ICW1、ICW2、ICW3、ICW4共4个寄存器。操作命令字对应于编程结构的OCW1、OCW2、OCW3共3个寄存器。
2.8259A 的中断屏蔽寄存器IMR 和8086/8088的IF 有何区别?在中断响应过程中,它们怎么配合起来工作?
若IMR 的某位为0则该位对应的引腿上的中断请求未加屏蔽,让它通过而进入中断优先级裁决器作裁决。若IMR 的某位为1则屏蔽该位对应的引腿上的中断请求,不让它进入中断优先级裁决器。而8086/8088CPU的中断允许标志IF 为1则允许INTR 引腿进入的中断,IF 为0则屏蔽INTR 引腿进入的中断。与8259A 的IMR 位为0为1正好相反。
在中断响应过程中,IMR 用于对外设向8259A 发中断申请的允许/屏蔽,而CPU 的IF 用于对8259A 由INT 向CPU 的INTR 引腿发中断申请的允许/屏蔽。
3.8259A 的全嵌套和特殊嵌套方式有何不同?分别用在什么场合?
全嵌套工作方式,只有更高级的中断请求来到时,才会进行嵌套。而特殊全嵌套方式则能被同级和高级的中断请求所嵌套。
全嵌套方式用于单片8259A 的场合。特殊全嵌套方式用于多片8259A 系统。
4.8259A 的优先级自动循环和特殊循环方式有何差别?
在优先级特殊循环方式中,一开始的最低优先级是由编程确定的,从而最高优先级也由此而定。而优先级自动循环方式初始优先级队列为IR0~IR7。
5.8259A 有几种结束中断处理的方式?各自应用在什么场合?
8259A 有三种结束中断处理的方式。
中断自动结束方式用于只有一片8259A ,并且多个中断不会嵌套的情况。一般的中断结束方式用在全嵌套情况下及多片8259A 的级联系统中。特殊中断结束方式用于循环优先级的8259A 中。
6. 试按照如下要求对8259A 编程设置初始化命令字:系统中有一片8259A ,中断请求信号采用电平触发方式,下面要用ICW4,中断类型码为60~67H,用特殊全嵌套方式,不用缓冲方式,采用中断自动结束方式。端口地址为90H 、92H 。 MOV AL ,1BH ;ICW1的命令字为00011011B=1BH
OUT 90H ,AL ;ICW1送偶地址端口
MOV AL ,60H ;ICW2的命令字为60H
OUT 92H ,AL ;ICW2送奇地址端口
MOV AL ,13H ;ICW4的命令字为00010011B=13H
OUT 92H ,AL ;ICW4送奇地址端口
第七章
作业
1. 试说明在DMA 方式下内存往外设传输数据的过程。
当一个接口要由内存往其输出数据时,就往DMA 控制器发一个DMA 请求;DMA 控制器接到请求以后,便往控制总线上发一个总线请求;若CPU 允许让出总线便发出一个总线允许信号;DMA 控制器接到此信号后,就将地址寄存器的内容送到地址总线上,同时往接口发一个DMA 回答信号并发一个I/O写信号和一个内存读信号;内存接到读信号后将数据送到数据总线,I/O写信号将数据送到接口,并撤除DMA 请求信号,于是DMA 控制器的地址寄存器的内容加1或减1,计数器的值减1,而且撤除总线请求信号,就完成了对一个数据的DMA 输出传输。
2. 对一个DMA 控制器的初始化工作包括哪些内容?
将数据传输缓冲区的起始地址或者结束地址送到地址寄存器中;
将传输的字节数或字数送到计数器中;
通过模式寄存器设置工作方式等。
3.DMA 控制器8237A 什么时候作为主模块工作?什么时候作为从模块工作?两种情况下,相关控制信号处于什么状态?试作说明。
在外设向8237A 发DMA 请求,8237A 向CPU 发总线请求得到CPU 总线允许时,获得了总线控制权就作为总线主模块工作。
当CPU 把数据送到8237A 的寄存器或者从8237A 的寄存器取出时,8237A 就象I/O接口一样作为总线的从模块工作。
主模块工作时的控制信号:DREQx 有效,HRQ 高,HLDA 高,DACKx 有效,AEN 高,IOR 、MEMW 或IOW 、MEMR 有效,16位地址送地址总线。从模块工作时的控制信号: CS 和HRQ 为低,A3~A0为某一确定值,IOR 或IOW 有效。
4. 设计8237A 的初始化工作。8237A 的端口地址为0000~000FH。设通道0工作在块传输模式,传输类型为读传输,地址加1变化,自动预置功能;通道1工作于单字节写传输,地址减1变化,无自动预置功能。然后对8237A 设置控制命令,使DACK 为高电平有效,DREQ 为低电平有效,用固定优先级方式,并启动8237A 工作。
MOV AL ,04H
MOV DX ,DMA+8 ;DMA 为端口首地址0000H ,DMA+8为控制寄
; 存器端口号
OUT DX ,AL ; 输出控制命令,关闭8237A
MOV AL ,00
MOV DX ,DMA+0DH ;DMA+0DH为总清命令端口号
OUT DX ,AL ; 发总清命令(即复位命令)
MOV DX ,DMA+0BH ;DMA+0BH为模式寄存器的端口号
MOV AL ,98H
OUT DX ,AL ; 对通道0选择模式,模式字为98H :块读传输模
; 式,地址加1变化,自动预置功能
MOV AL ,69H
OUT DX ,AL ; 对通道1选择模式,模式字为69H :单字节读传 ; 输,地址减1变化,无自动预置功能
MOV AL ,6AH
OUT DX ,AL ; 对通道2选择模式,模式字为6AH:功能同通道1 MOV AL ,6BH
OUT DX ,AL ; 对通道3选择模式,模式字为6BH:功能同通道1 MOV DX ,DMA+8
MOV AL ,0C0H ; 控制字格式为C0H: DACK高电平有效,DREQ
; 低电平有效,固定优先级,启动工作
OUT DX ,AL
MOV DX ,DMA+0FH ;DMA+0FH为综合屏蔽命令端口号
MOV AL ,0
OUT DX ,AL ; 去除四个通道的屏蔽
┆
第九章
作业
1.8253计数器/定时器中,时钟信号CLK 和门控信号Gate 分别起什么作用? 时钟信号CLK 决定了计数的速率,是计数减1的依据。而门脉冲信号GATE 是作为对时钟的控制信号,以控制计数的启停。
2.8253工作于模式4和模式5时有何不同?
模式4是用软件触发启动,GATE 为低电平时停止计数;而模式5则用门控GATE 的上升沿触发即硬件触发启动,GATE 为低电平时不影响计数。
3. 编程将8253计数器0设置为模式1,计数初值为3000H ;计数器1设置为模式2,计数初值为2010H ,计数器2设置为模式4,计数初值为4030H ;计数器3设置为模式3,计数初值为5060H 。
MOV AL ,32H ; 设置计数器0为模式1
OUT 76H ,AL
MOV AX ,3000H ; 写计数初值
OUT 70H ,AL
MOV AL ,AH
OUT 70H ,AL
MOV AL ,74H ; 设置计数器1为模式2
OUT 76H ,AL
MOV AX ,2010H ; 写计数初值
OUT 72H ,AL
MOV AL ,AH
OUT 72H ,AL
MOV AL ,0B8H ; 设置计数器2为模式4
OUT 76H ,AL
MOV AX ,4030H ; 写计数初值
OUT 74H ,AL
MOV AL ,AH
OUT 74H ,AL
4. 现有一个高精密晶体振荡电路,输出信号是脉冲波,频率为1MHz 。要求利用8253做一个秒信号发生器,其输出接一发光二极管,以1秒点亮,1秒熄灭的方式闪烁指示。设8253的端口地址为80H ~86H 。画出原理图并编写程序完成以上功能。
1. 时间常数计算:
要求用8253作一个分频电路,而且其输出应该是方波,否则发光二极管不可能等间隔闪烁指示。频率为1MHz 信号的周期为1微秒,而1Hz 信号的周期为1秒,所以分频系数N 可按下式进行计算:
由于8253一个通道最大的计数值是65536,所以对于N=1000000这样的大数,一个通道是不可能完成上述分频要求的。由于N=1000000=1000*1000=N1*N2,即取两个计数器,采用级联方式。
2. 电路:
3. 工作方式选择:
由于通道1要输出方波信号推动发光二极管,所以通道1应选工作方式3。对于通道0,只要能起分频作用就行,对输出波形不做要求,所以方式2和方式3都可以选用。这样对于通道0,取工作方式2,BCD 计数;对于通道1,取工作方式3,二进制计数(当然也可选BCD 计数)。
4. 程序:
mov al,00110101b ;通道0控制字
out 86h,al
mov al,00 ;通道0初始计数值
out 80h,al
mov al,10h
out 80h,al
mov al,01110110b;通道1控制字
out 86h,al
mov al,0e0h ;通道1初始计数值,03E8H=1000BCD
out 82h,al
mov al,03h
out 82h,al
第一章 作业
1. 主板主要由哪几部分组成?
CPU 插座、芯片组(北桥芯片、南桥芯片等)、BIOS 芯片、系统时钟发生器芯片、总线(前端系统总线FSB 、QPI 总线、内存总线、图形总线 AGP、外围设备总线PCI-E 等)、接口(集成驱动电子设备接口IDE 、通用串行设备接口USB 、以太网接口LAN 、音频接口AC ’97、超级输入输出接口SIO 等)。
2. 微处理器、微型计算机和微型计算机系统三者之间有什么不同? 微处理器是微型计算机的核心,是微型计算机的一部分。它是集成在一块芯片上的CPU ,由运算器和控制器组成。 微型计算机包括微处理器、存储器、I/O接口和系统总线,是微型计算机系统的主体。 微型计算机系统包括微型计算机、外设及系统软件三部分。 3. 微型计算机的性能指标有哪些?
CPU 的位数、CPU 的主频、内存容量和速度、硬盘容量。
第二章 习题
1. 若(AL)=0C0H, (BX)=03523H,则执行指令ADD AL,BL之后
(AL)=_____,(BL)=_____,标志位OF,SF,ZF,AF,CF,PF 的状态对应为_____.
2. 设(SS )=2250H, (SP )=0140H, 若在堆栈中放入5个数据, 则栈顶的物理地址为___,如果又从堆栈中取出3个数据, 则栈顶的物理地址为____.
3. 两个逻辑地址分别为2003H :1009H 和2101H :0029H ,它们对应的物理地址是多少?说明了什么?
4. 在8088/8086中,逻辑地址FFFF ∶0001, 00A2∶37F 和B800∶173F 的物理地址分别是多少?
物理地址=段地址×10H +偏移地址
所以FFFF :0001的物理地址是FFFFH ×10H +0001H =FFFF1H 00A2:37F 的物理地址是00A2×10H +037FH=00D9FH
B800:173F 的物理地址是B800×10H +173F=B973FH
5. 在8088/8086中,从物理地址388H 开始顺序存放下列三个双字节的数据,651AH, D761H 和007BH ,请问物理地址388H, 389H, 38AH, 38BH, 38CH和38DH 6个单元中分别是什么数据?
6. 已知当前(DS)=7F06H ,在偏移地址为0075H 的存储器中连续存放6个字节的数据:11H ,22H ,33H ,44H ,55H ,66H 。请指出这些数据在存储器中的物理地址。如果要从存储器中读出这些数据,需要访问几次存储器?各读出哪些数据? 作业
1.8086内部主要包括哪些功能部件?它们完成什么功能?
总线接口单元BIU ,负责与存储器、I/O 端口传送数据;执行单元EU ,负责指令执行。
2. 总线周期的含义是什么?8088/8086的基本总线周期由几个时钟 组成?如果一个CPU 的时钟频率为24MHz ,它的一个时钟周期为 多少?一个基本总线周期为多少?
总线周期的含义是总线接口部件完成一个取指令或传送数据的完整操作所需的最少时钟周期数。
8086/8088的基本总线周期由4个时钟周期组成。
当主频为24MHz 时,T φ=1/24MHz≈41.7ns ,T 总=4Tφ≈167ns 。 当主频为15MHz 时,T φ=1/15MHz≈66.7ns ,T 总=4Tφ≈267ns 。 3.CPU 启动时如何寻找系统的启动程序?
(CPU 启动时,有以下特征:内部寄存器等置为初值;禁止中断(可屏蔽中断);从FFFF0H 开始执行程序;三态总线处于高阻状态。)
8086/8088系统的启动程序从FFFF0H 单元开始的无条件转移指令转入执行。 在FFFF0H 处存放一条无条件转移指令,系统加电复位时,会自动转到FFFF0H 单元执行,转向系统初始化程序。
4. 画出8086最小模式时的典型配置,说明为什么要使用8282。
5. 画出8086最小模式时的写周期时序,注明地址数据总线的状态。
6. 什么叫中断向量?它放在哪里?对应于1CH 的中断向量放在哪 里?如果1CH 对应的中断处理子程序从5110H:2030H开始,则中 断向量该如何存放?
中断处理子程序的入口地址就是中断向量。
中断向量放在0段的0~3FFH区域的中断向量表中。
对应于类型号为1CH 的中断向量应放在00070~00073H的4个单元中。 若1CH 的中断向量为5110H:2030H,则中断向量的存放方法为:00070H 存放30H ,00071H 存放20H (IP);00072H 存放10H ,00073H 存放51H (CS)。 7.8086如何区分存储器操作和I/O操作?怎样用16位寄存器实现对 20位地址的寻址?
(8086存储空间最大为220=1MB。)
采用分段的方法实现16位寄存器实现对20位地址的寻址。 物理地址=段基址×10H+偏移地址
第三章 作业
1. 解释Pentium 中的分支预测技术。
(分支转移指令的转移目标地址是可以预测的,预测的依据就是前一次的转移目标地址即所谓的历史状态。)
使用BTB (branch target buffer,分支目标缓冲器)预测转移是否发生。 预测依据:前一次的转移目标地址。 基于的规律:大多数分支指令转向每个分支的机会是不均等的;大多数分支指令在循环体中。
方法:1KB 容量的Cache ,容纳256条转移指令的目标地址和历史状态;两个预取缓冲器,按照两个方向预取指令。
2.Pentium 有几种工作方式?各有何特点?各方式之间如何切换?
实地址方式、保护虚拟地址方式(保护方式/本性方式)、虚拟8086方式。 实地址方式:刚加电或复位时进入,目的是系统初始化,配置和准备保护方式所需要的数据结构;寻址机构、存储器管理和中断处理机构同8086;操作数默认为16位;存储器容量最大1MB ,采用分段方式;存储器保留两个固定区域,初始化程序入口区和中断向量区。 保护方式:存储器用逻辑地址空间、线性地址空间和物理地址空间三种方式描述;采用虚拟存储器扩大程序可访问的空间;可进行16位运算,也可进行32位运算。 虚拟8086方式:在保护方式下,通过软件切换到该方式;是保护方式下多任务中的某一个任务;类似于实地址方式,可执行8086的应用程序;与实地址方式不同之处,实地址方式针对整个CPU ,而虚拟8086方式是保护方式下某个任务对应的方式,虚拟8086方式下,存储器除了分段,还进行分页。
3. 什么是超标量流水线机制?请说明Pentium 的两条流水线全速运行的条件。 所谓超标量流水线技术,就是在一个处理器中有多条指令流水线的技术。两条流水线并行执行两条指令,V 流水线只能执行和U 流水线当前执行的指令符合配对规则的指令。
两条指令都是RISC 指令;互相没有寄存器关联性。
4.Pentium 的逻辑地址、线性地址、物理地址分别指什么?它们的寻址能力如何?
逻辑地址就是程序员所看到的地址,也叫虚拟地址。 线性地址是单一的32位地址。
物理地址和芯片引脚上的地址信号相对应,它为每个存储单元在存储体中指定唯一的地址。
寻址能力都是32位。
5.Pentium 中的段基址与8086中的有何异同?
6. 简述Pentium 在保护方式下存储器物理地址的形成过程。
7. 试比较8086最小模式下读周期与Pentium 的非流水线式读周期有何不同。
8. 试比较Pentium 流水线式读/写周期与突发式读/写周期有何不同。
第四章 习题
1. DRAM2164(64K ×1)外部引脚有(B )。 A.16条地址线、2条数据线 B.8条地址线、1条数据线 C.16条地址线、1条数据线 D.8条地址线、2条数据线
2. 若用1K ×4的芯片组成2K ×8的RAM ,需要(C )片。 A.2片 B.16片 C.4片 D.8片
3. 8086在进行存储器写操作时,引脚信号M/IO 和DT/R 应该是(D )。 A.00 B.01 C.10 D.11
4. 计算一个存储器芯片容量的公式为(A )。
A. 编址单元数×数据线位数 B.编址单元数×字节 C. 编址单元数×字长 D.数据线位数×字长
5. 为8088CPU 设计一个8KB 容量的存储器系统, 要求存储器地址从02000H 开始,采用6116(2K×8) 芯片。试求: ①对各芯片地址分配。
②指出各芯片的片内选择地址线和芯片选择地址线。 ③采用74LS138,画出全译码法与8088CPU 的连接图。
6. 为8086CPU 设计一个8KB 容量的存储器系统, 要求存储器地址从02000H 开始,采用6116(2K×8) 芯片。试求: ①对各芯片地址分配。
②指出各芯片的片内选择地址线和芯片选择地址线。 ③采用74LS138,画出全译码法与8086CPU 的连接图。 注. 第6可以仅仅指明与第5题解法的不同之处。
7. 在8086系统中,AD 0和有什么用途? 例题
1. 2011年全国统考试题
2. 2009年全国统考试题
请求分页管理系统中,假设某进程的页表内容如下表所示。
页面大小为4KB ,一次内存的访问时间是100ns ,一次快表(TLB)的访问时间是10ns ,处理一次缺页的平均时间为108ns(已含更新TLB 和页表的时间) ,进程的驻留集大小固定为2,采用最近最少使用置换算法(LRU)和局部淘汰策略。假设①TLB 初始为空;②地址转换时先访问TLB ,若TLB 未命中,再访问页表(忽略访问页表之后的TLB 更新时间) ;③有效位为0表示页面不在内存,产生缺页中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。设有虚地址访问序列2362H 、1565H 、25A5H ,请问:
(1)依次访问上述三个虚地址,各需多少时间?给出计算过程。
(2)基于上述访问序列,虚地址1565H 、25A5H 的物理地址是什么?请说明理由。
3. 2010年全国统考试题
某计算机的主存地址空间大小为256MB ,按字节编址。指令Cache 和数据Cache 分离,均有8个Cache 行,每个Cache 行大小为64B ,数据Cache 采用直接映射方式。现有两个功能相同的程序A 和B ,其伪代码如下所示: 程序A :
int a[256][256]; ……
int sum_array1(){ int i,j,sum=0; for(i=0;i
for(j=0;j
return sum; }
程序B :
int a[256][256]; ……
int sum_array1(){ int i,j,sum=0; for(j=0;j
for(i=0;i
return sum; }
假定int 类型数据用32位补码表示,程序编译时i,j,sum 均分配在寄存器中,数组a 按行优先方式存放,其首地址为320(十进制数)。请回答下列问题,要求说明理由或给出计算过程。
(1)若不考虑用于Cache 一致性维护和替换算法的控制位,则数据Cache 的总容量为多少?
(2)数组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache 行号分别是多少(Cache 行号从0开始)?
(3)程序A 和B 的数据访问命中率各是多少?哪个程序的执行时间更短? 作业
1. 存储器的片选信号有哪几种构成方式?各有何优缺点?
2. 存储器访问中的对准状态的含义是什么?程序设计中避免非对准状态有何好处?如何做到?
3. 区域性定律(局部性原理)适用于哪一方面?它包含哪两类特征?
大部分软件对存储器的访问并不是任意的、随机的,而是有着明显的区域性。 1. 时间区域性:存储体中某一个数据被存取后,可能很快又被存取。 2. 空间区域性:存储体中某个数据被存取了,附近的数据也很快被存取。
第五章 作业
1. 外设为什么需要通过接口与主机系统相连?存储器需要接口与总线相连么?为什么?
因为外设的功能多种多样,对于模拟量信息的外设必须要进行A/D和D/A转换,而对于串行信息的外设则必须转换为并行的信息,对于并行信息的外设还要选
通。而且外设的速度比CPU 慢的多,必须增加缓冲功能。只有这样计算机才能使用这些外设。而所有这些信息转换和缓冲功能均由接口电路才能完成。 存储器不需要接口电路和总线相连。
因为存储器功能单一,且速度与CPU 相当。因此可直接挂在CPU 总线上。 2.CPU 和外设之间传送的信息有哪几类? 数据信息、控制信息、状态信息。 3.8086/8088系统中,用哪种方法对I/O端口编址?地址如何形成?试举例说明。 在8086/8088系统中,用I/O端口单独寻址方式编址。
4. 设一个接口的输入端口地址为0100H ,状态端口地址为0104H ,状态端口的第5位为1表示输入缓冲器有一个字节准备好,可输入。设计程序实现查询式输入。 DATA SEGMENT
BUFFER DB 20 DUP(?) ; 接收数据缓冲区 DATA ENDS CODE SEGMENT
ASSUME DS:DATA,CS:CODE STAT: MOV AX ,DATA ; 对DS 初始化 MOV DS ,AX MOV DI ,OFFSET BUFFER MOV DX ,0104H
STATIN: IN AL ,DX
TEST AL ,20H ; 测试第5位
JZ STATIN ; 第5位为0继续测试 MOV DX ,0100H
IN AL ,DX ; 输入数据 MOV [DI],AL CODE ENDS END STAT
第六章 例题
现要求用一个8255A 作为终端机的接口。由端口A 输出字符到终端机的显示器,端口B 用于键盘输入字符,端口C 为终端状态信息输入端口。当PC0=1表示键盘输入字符就绪,PC7=0表示显示缓冲器已空。要求用查询方法把从键盘输入的每个字符都送到终端机的显示缓冲器上,当输入的是回车符(ASCII 码为0DH )时操作结束。假设该8255A 芯片的端口地址是60H~66H(8086)(间隔为2划分输入,若题目改为60H~63H,间隔为1划分输入),试编写包括8255A 的初始化程序在内的输入输出驱动程序。
CSEG SEGMENT
ASSUME CS:CSEG
START:MOV AL,10001011B
OUT 66H,AL(此处对应题目终止范围,若~63H,此处66H 改为63H ) KEY: IN AL,64H(64H 改62H ) TEST AL,01 JZ KEY
IN AL,62H(62H 改61H ) CMP AL,0DH JZ STOP MOV AH,AL
DISP: IN AL,64H(64H 改62H ) TEST AL,80H JNZ DISP MOV AL,AH
OUT 60H,AL(此处对应题目起始范围) JMP KEY STOP: MOV AH,4CH INT 21H CSEG ENDS
END START 作业
1. 对8255A 设置工作方式。控制口地址为0C6H 。要求:端口A 工作在方式1,输入;端口B 工作在方式0,输出;端口C 的部分位配合A 工作,其余设置为输入。
2. 设8086系统中8255A 的地址为0C0H~0C6H。用置0/置1方式对PC 6置1,PC 4置0。
3. 若采用查询式实现8255A 与打印机接口,用PB 口传送内存DATA 单元开始的100个字节数据,PC7用作STB 号、PC3作为BUSY 信号,如下图所示。试完成控制程序设计。
说明:当CPU 通过接口要求打印机打印数据时,先查看BUSY 信号,当BUSY=‘L ’时,才向打印机输出数据,在把数据送上DATA 线后,先发STB 选通打印机,打印机接到STB 后,发BUSY=‘H ’, 接收数据,当数据接收号并存入内部打印缓冲区后,送出ACK 信号,表示打印机已准备好接收新数据,并撤销BUSY(0)。 LEA DI , DATA MOV CX , 100
MOV AL,81H ; 方式控制字 OUT 83H,AL
NEXT: MOV AL,0FH ; PC7=1 OUT 83H,AL TESBY :IN AL,82H TEST AL,08H JNZ TESBY MOV AL,[DI]
OUT 81H,AL ;送数 INC DI
MOV AL,0EH ; PC7发送低电平选通打印机 OUT 83H,AL CALL DELAY LOOP NEXT RET
4. 某32位计算机,CPU 主频为800MHz ,Cache 命中时的CPI 为4,Cache 块大小为32字节;主存采用8体交叉存储方式,每个体的存储字长为32位,存储周期为40ns ;存储器总线宽度为32位,总线时钟频率为200MHz ,支持突发传送总线事务。每次读突发传送总线事务的过程包括:送首地址和命令、存储器准备数据、传送数据。每次突发传送32字节,传送地址或32位数据均需要一个总线时钟周
期。请回答下列问题,要求给出理由或计算过程。
(1)CPU 和总线的时钟周期各为多少?总线的带宽(即最大数据传输率)为多少?
(2)Cache 缺失时,需要用几个读突发传送总线事务来完成一个主存块的读取?
(3)存储器总线完成一次读突发传送总线事务所需时间是多少?
(4)若程序BP 执行过程中,共执行了100条指令,平均每条指令需进行1.2次访存,Cache 缺失率为5%,不考虑替换等开销,则BP 的CPU 执行时间是多少?
(1)CPU 的时钟周期为:1/800MHz=1.25ns
总线的时钟周期为:1/200MHz=5ns
总线带宽为:4B ×200MHz=800MB/s
或4B/5ns=800MB/s
(2)Cache 块大小是32B ,因此Cache 缺失时需要一个读突发传送总线事务读取一个主存块。
(3)一次读突发传送总线事务包括一次地址传送和32B 数据传送:用1个总线时钟周期传输地址;每隔40ns/8=5ns启动一个体工作(各进行1次存取),第一个体读数据花费40ns ,之后数据存取与数据传输重叠;用8个总线时钟周期传输数据。读突发传送总线事务时间:5ns+40ns+8×5ns=85ns
(4)BP 的CPU 执行时间包括Cache 命中时的指令执行时间和Cache 缺失时带来的额外开销。
命中时的指令执行时间:100×4×1.25ns=500ns
指令执行过程中Cache 缺失时的额外开销:1.2×100×5%×85ns=510ns BP 的CPU 执行时间:500ns+510ns=1010ns
习题
1. 在数据通信系统,什么情况下可用全双工方式,什么情况下可用半双工方式? 对于近距离较大信息量的传输应采用全双工方式。而对于远距离或较少信息量的传输或单向的输入或输出设备时应采用半双工方式。
2. 什么叫同步通信方式?什么叫异步通信方式?它们各有什么优缺点?
在同一时钟控制下需用同步字符同步的信息按组传送的方式叫同步通信方式。 在两个相近频率的时钟分别控制下只需一个起始位的信息按字符传送的方式叫异步通信方式。
在传输率相同时同步方式的信息有效率要比异步方式下的高。但同步方式必须传送时钟信号,异步方式只要两端的时钟频率相近即可。
3. 什么叫波特率因子?什么叫波特率?设波特率因子为64,波特率为1200,那么时钟频率为多少?
波特率因子:时钟频率和位传输率的比值(必须为16、32或64)。 波特率:位传输率即为波特率。
时钟频率=波特率因子×波特率=64×1200=76800Hz。
4. 设异步传输时,每个字符对应1个起始位、7个信息位、1个奇偶校验位和1个停止位。如果波特率为9600,则每秒钟能传输的最大字符数为多少个?
每个字符所占的总位数为:1+7+1+1=10位。所以每秒钟能传输的最大字符数为:9600/10=960个字符。
5.8251A 的状态字格式如何?哪几位和引脚信号有关?状态为TxRDY 和引脚信号TxRDY 有何区别?它们在系统设计中有什么用处?
8251A 的状态字格式为:
DSR 、SYNDET 、TxE 、RxRDY 四个状态位与其对应的引腿信号有关。
状态位TxRDY 只要数据输出缓冲器为空就置1。而引腿TxRDY 为1的条件是:数据输出缓冲器为空、为有效低电平、TxEN 为1才可以,缺一不行。
能让CPU 随时了解当前8251A 的工作状态,而执行相应的操作。对查询方式的设计非常方便。
6. 参考初始化流程,用程序段对8251A 进行同步模式设置。奇地址端口为66H ,规定用内同步方式,同步字符为2个,用奇校验,7个数据位。
模式字为:00011000B=18H。两个同步字符取16H ,控制字为97H ,它使8251A 对同步字符进行检索;同时使状态寄存器中的3个出错标志复位;使8251A 的发送器启动,接收器也启动;CPU 当前已准备好进行数据传输。
具体程序段如下:
MOV AL ,18H ; 设置模式字
OUT 66H ,AL
MOV AL ,16H ; 发送两个同步字符
OUT 66H ,AL
OUT 66H ,AL
MOV AL ,97H ; 设置控制字
OUT 66H ,AL
7. 设计一个采用异步通信方式输出字符的程序段,规定波特率因子为64,7个数据位,1个停止位,偶校验,端口地址为40H 、42H ,缓冲区首地址为4000H :3000H 。共需输出100个字符。
模式字为:01111011B=7BH。控制字为:00110101B=35H。
MOV AL ,0 ; 为发复位命令作准备
OUT 42H ,AL
OUT 42H ,AL
OUT 42H ,AL
MOV AL ,40H ; 发复位命令
OUT 42H ,AL
MOV AL ,7BH ; 设置模式字,异步方式,规定波特率因子为64
;7个数据位,1个停止位,偶校验
OUT 42H ,AL
MOV AL ,35H ; 设置控制字,使发送器和接收器启动,并清除
; 出错标志
OUT 42H ,AL
PUSH DS
MOV BX ,2000H ;DS:BX指向输出缓冲区首址
MOV DS ,BX
MOV BX ,3000H ; 缓冲区指针初始化
MOV CX ,100H ; 发送100H 个字节
BEGIN: IN AL ,42H ; 读取状态字,测试TxRDY 是否为1
TEST AL ,01H
JZ BEGIN ; 为0表示外设还未取走字符
MOV AL ,[BX] ; 从输出缓冲区取数
OUT 40H ,AL ; 发送字符
INC BX ; 修改缓冲区指针
LOOP BEGIN ; 则再发送下一个字符
POP DS
┆
第七章
作业
1.8259A 的初始化命令字和操作命令字有何不同?它们分别对应编程结构中的哪些内部寄存器?哪些写入奇地址?哪些写入偶地址?编程时如何区分它们? 8259A 的初始化命令字是计算机系统启动时,由初始化程序设置的。初始化命令字一旦设定,一般在系统工作过程中就不再改变。操作命令字则是由应用程序设定的,它们用来对中断处理过程作动态控制,在一个系统运行过程中,操作命令字可以多次设置。
初始化命令字对应于编程结构的ICW1、ICW2、ICW3、ICW4共4个寄存器。操作命令字对应于编程结构的OCW1、OCW2、OCW3共3个寄存器。
2.8259A 的中断屏蔽寄存器IMR 和8086/8088的IF 有何区别?在中断响应过程中,它们怎么配合起来工作?
若IMR 的某位为0则该位对应的引腿上的中断请求未加屏蔽,让它通过而进入中断优先级裁决器作裁决。若IMR 的某位为1则屏蔽该位对应的引腿上的中断请求,不让它进入中断优先级裁决器。而8086/8088CPU的中断允许标志IF 为1则允许INTR 引腿进入的中断,IF 为0则屏蔽INTR 引腿进入的中断。与8259A 的IMR 位为0为1正好相反。
在中断响应过程中,IMR 用于对外设向8259A 发中断申请的允许/屏蔽,而CPU 的IF 用于对8259A 由INT 向CPU 的INTR 引腿发中断申请的允许/屏蔽。
3.8259A 的全嵌套和特殊嵌套方式有何不同?分别用在什么场合?
全嵌套工作方式,只有更高级的中断请求来到时,才会进行嵌套。而特殊全嵌套方式则能被同级和高级的中断请求所嵌套。
全嵌套方式用于单片8259A 的场合。特殊全嵌套方式用于多片8259A 系统。
4.8259A 的优先级自动循环和特殊循环方式有何差别?
在优先级特殊循环方式中,一开始的最低优先级是由编程确定的,从而最高优先级也由此而定。而优先级自动循环方式初始优先级队列为IR0~IR7。
5.8259A 有几种结束中断处理的方式?各自应用在什么场合?
8259A 有三种结束中断处理的方式。
中断自动结束方式用于只有一片8259A ,并且多个中断不会嵌套的情况。一般的中断结束方式用在全嵌套情况下及多片8259A 的级联系统中。特殊中断结束方式用于循环优先级的8259A 中。
6. 试按照如下要求对8259A 编程设置初始化命令字:系统中有一片8259A ,中断请求信号采用电平触发方式,下面要用ICW4,中断类型码为60~67H,用特殊全嵌套方式,不用缓冲方式,采用中断自动结束方式。端口地址为90H 、92H 。 MOV AL ,1BH ;ICW1的命令字为00011011B=1BH
OUT 90H ,AL ;ICW1送偶地址端口
MOV AL ,60H ;ICW2的命令字为60H
OUT 92H ,AL ;ICW2送奇地址端口
MOV AL ,13H ;ICW4的命令字为00010011B=13H
OUT 92H ,AL ;ICW4送奇地址端口
第七章
作业
1. 试说明在DMA 方式下内存往外设传输数据的过程。
当一个接口要由内存往其输出数据时,就往DMA 控制器发一个DMA 请求;DMA 控制器接到请求以后,便往控制总线上发一个总线请求;若CPU 允许让出总线便发出一个总线允许信号;DMA 控制器接到此信号后,就将地址寄存器的内容送到地址总线上,同时往接口发一个DMA 回答信号并发一个I/O写信号和一个内存读信号;内存接到读信号后将数据送到数据总线,I/O写信号将数据送到接口,并撤除DMA 请求信号,于是DMA 控制器的地址寄存器的内容加1或减1,计数器的值减1,而且撤除总线请求信号,就完成了对一个数据的DMA 输出传输。
2. 对一个DMA 控制器的初始化工作包括哪些内容?
将数据传输缓冲区的起始地址或者结束地址送到地址寄存器中;
将传输的字节数或字数送到计数器中;
通过模式寄存器设置工作方式等。
3.DMA 控制器8237A 什么时候作为主模块工作?什么时候作为从模块工作?两种情况下,相关控制信号处于什么状态?试作说明。
在外设向8237A 发DMA 请求,8237A 向CPU 发总线请求得到CPU 总线允许时,获得了总线控制权就作为总线主模块工作。
当CPU 把数据送到8237A 的寄存器或者从8237A 的寄存器取出时,8237A 就象I/O接口一样作为总线的从模块工作。
主模块工作时的控制信号:DREQx 有效,HRQ 高,HLDA 高,DACKx 有效,AEN 高,IOR 、MEMW 或IOW 、MEMR 有效,16位地址送地址总线。从模块工作时的控制信号: CS 和HRQ 为低,A3~A0为某一确定值,IOR 或IOW 有效。
4. 设计8237A 的初始化工作。8237A 的端口地址为0000~000FH。设通道0工作在块传输模式,传输类型为读传输,地址加1变化,自动预置功能;通道1工作于单字节写传输,地址减1变化,无自动预置功能。然后对8237A 设置控制命令,使DACK 为高电平有效,DREQ 为低电平有效,用固定优先级方式,并启动8237A 工作。
MOV AL ,04H
MOV DX ,DMA+8 ;DMA 为端口首地址0000H ,DMA+8为控制寄
; 存器端口号
OUT DX ,AL ; 输出控制命令,关闭8237A
MOV AL ,00
MOV DX ,DMA+0DH ;DMA+0DH为总清命令端口号
OUT DX ,AL ; 发总清命令(即复位命令)
MOV DX ,DMA+0BH ;DMA+0BH为模式寄存器的端口号
MOV AL ,98H
OUT DX ,AL ; 对通道0选择模式,模式字为98H :块读传输模
; 式,地址加1变化,自动预置功能
MOV AL ,69H
OUT DX ,AL ; 对通道1选择模式,模式字为69H :单字节读传 ; 输,地址减1变化,无自动预置功能
MOV AL ,6AH
OUT DX ,AL ; 对通道2选择模式,模式字为6AH:功能同通道1 MOV AL ,6BH
OUT DX ,AL ; 对通道3选择模式,模式字为6BH:功能同通道1 MOV DX ,DMA+8
MOV AL ,0C0H ; 控制字格式为C0H: DACK高电平有效,DREQ
; 低电平有效,固定优先级,启动工作
OUT DX ,AL
MOV DX ,DMA+0FH ;DMA+0FH为综合屏蔽命令端口号
MOV AL ,0
OUT DX ,AL ; 去除四个通道的屏蔽
┆
第九章
作业
1.8253计数器/定时器中,时钟信号CLK 和门控信号Gate 分别起什么作用? 时钟信号CLK 决定了计数的速率,是计数减1的依据。而门脉冲信号GATE 是作为对时钟的控制信号,以控制计数的启停。
2.8253工作于模式4和模式5时有何不同?
模式4是用软件触发启动,GATE 为低电平时停止计数;而模式5则用门控GATE 的上升沿触发即硬件触发启动,GATE 为低电平时不影响计数。
3. 编程将8253计数器0设置为模式1,计数初值为3000H ;计数器1设置为模式2,计数初值为2010H ,计数器2设置为模式4,计数初值为4030H ;计数器3设置为模式3,计数初值为5060H 。
MOV AL ,32H ; 设置计数器0为模式1
OUT 76H ,AL
MOV AX ,3000H ; 写计数初值
OUT 70H ,AL
MOV AL ,AH
OUT 70H ,AL
MOV AL ,74H ; 设置计数器1为模式2
OUT 76H ,AL
MOV AX ,2010H ; 写计数初值
OUT 72H ,AL
MOV AL ,AH
OUT 72H ,AL
MOV AL ,0B8H ; 设置计数器2为模式4
OUT 76H ,AL
MOV AX ,4030H ; 写计数初值
OUT 74H ,AL
MOV AL ,AH
OUT 74H ,AL
4. 现有一个高精密晶体振荡电路,输出信号是脉冲波,频率为1MHz 。要求利用8253做一个秒信号发生器,其输出接一发光二极管,以1秒点亮,1秒熄灭的方式闪烁指示。设8253的端口地址为80H ~86H 。画出原理图并编写程序完成以上功能。
1. 时间常数计算:
要求用8253作一个分频电路,而且其输出应该是方波,否则发光二极管不可能等间隔闪烁指示。频率为1MHz 信号的周期为1微秒,而1Hz 信号的周期为1秒,所以分频系数N 可按下式进行计算:
由于8253一个通道最大的计数值是65536,所以对于N=1000000这样的大数,一个通道是不可能完成上述分频要求的。由于N=1000000=1000*1000=N1*N2,即取两个计数器,采用级联方式。
2. 电路:
3. 工作方式选择:
由于通道1要输出方波信号推动发光二极管,所以通道1应选工作方式3。对于通道0,只要能起分频作用就行,对输出波形不做要求,所以方式2和方式3都可以选用。这样对于通道0,取工作方式2,BCD 计数;对于通道1,取工作方式3,二进制计数(当然也可选BCD 计数)。
4. 程序:
mov al,00110101b ;通道0控制字
out 86h,al
mov al,00 ;通道0初始计数值
out 80h,al
mov al,10h
out 80h,al
mov al,01110110b;通道1控制字
out 86h,al
mov al,0e0h ;通道1初始计数值,03E8H=1000BCD
out 82h,al
mov al,03h
out 82h,al