第6章 存储器 习题答案(部分)
6.1 试说明半导体存储器的分类。
答:半导体分为:RAM 和ROM。RAM 分为静态RAM 和动态RAM。ROM 分为:掩膜ROM、
PROM、EPROM、E2PROM。
6.2 试说明CMOS 静态存储器基本存储电路数据读、写的原理。
第7章 基本输入/输出接口 习题答案(部分)
7.1 简述I/O 接口的主要功能。
答:(1)对输入输出数据进行缓冲和锁存
(2)对信号的形式和数据的格式进行变换
(3)对I/O 端口进行寻址
(4)提供联络信号
7.2 CPU 与外设之间的数据传输方式有哪些?简要说明各自含义。
答:(1)程序方式:微机系统与外设之间的数据传输过程在程序的控制下进行
(2)中断方式:在中断传输方式下,当输入设备将数据准备好或输出设备可以接收数
据时,便向CPU 发出中断请求,使CPU 暂时停止执行当前程序,而去执行数据输入/输出
的中断服务程序,与外设进行数据传输操作,中断服务程序执行完后,CPU 又返回继续执
行原来的程序。
(3)直接存储器存取(DMA)方式:DMA 方式是指不经过CPU 的干预,直接在外设
和内存之间进行数据传输的方式。
7.3 什么是端口?通常有哪几类端口?计算机对I/O 端口编址时通常采用哪?在80x86
系统中,采用哪一种方法?
每个I/O 接口内部一般由三类寄存器组成。CPU 与外设进行数据传输时,各类信息在
接口中进入不同的寄存器,一般称这些寄存器为I/O 端口。
I/O 端口通常有数据端口、状态端口、控制端口。
计算机对I/O 端口编址时通常采用:I/O 端口与内存统一编址、I/O 端口独立编址两种
方法。
在80x86 系统中,采用I/O 端口独立编址方法。
7.4 现有一输入设备,其数据端口地址为FFE0H,状态端口地址为FFE2H,当其D0
为1 时表明输入数据准备好。试采用查询方式,编程实现从该设备读取100 个字节数据并保
存到2000H:2000H 开始的内存中。
程序为:
CODE SEGMENT
ASSUME CS:CODE
START: MOV AX,2000H
MOV DS,AX
MOV SI,2000H
MOV CX,100
CONT: MOV DX,0FFE2H
CONT1:IN AL,DX
TEST AL,01
JZ CONT1
MOV DX,0FFE0H
IN AL,DX
MOV [SI],AL
INC SI
LOOP CONT
MOV AH,4CH
INT 21H
CODE ENDS
END START
7.5 硬件如图7.5 所示,试编程实现:S0 控制8 个发光二极管1 亮7 暗,S1 控制8
个 8 个发光二极管7 亮1 暗,S2 控制某一亮点(或暗点)以一定时间间隔循环向左移动,
S3 控制某一亮点(或暗点)以一定时间间隔循环向右移动,两个或两个以上开关闭合,则
结束程序。
CODE SEGMENT
ASSUME CS:CODE
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
NEXT1: MOV AH,1
INT 16H
CMP AL 1BH
JZ EXIT1
MOV DX 200H
IN AL,DX
TEST AL,0FEH
JZ NEXT2
TEST AL 0FDH
IN AL,0BFH
MOV CX,8
JPM NEXT3
NEXT2:MOV CX,8
NOT AL
NEXT3:ROR AL,1
MOV DX,200H
OUT DX,AL
LOOP NEXT3
EXIT: RET
MAIN ENDP
CODE ENDPS
END START
程序段为:(省略伪指令)
DATA SEGMENT
BUF1 DB 01H
BUF2 DB 80H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV DX,200H
AGAIN: IN AL,DX
XOR BL,BL
MOV CX,8
CONT: ROR AL,1
JNC NEXT
INC BL
NEXT: LOOP CONT
CMP BL,2
JAE EXIT
CMP AL,0FEH
JZ 1L7A
CMP AL,0FDH
JZ 1A7L
CMP AL,0FBH
JZ ZSHL
CMP AL,0F7H
JZ YSHR
1L7A: MOV AL,80H
OUT DX,AL
JMP AGAIN
7A7L: MOV AL,7F
OUT DX,AL
JMP AGAIN
ZSHL: MOV AL,BUF1
ROL AL,1
MOV BUF1,AL
OUT DX,AL
CALL D500MS
JMP AGAIN
YSHR: MOV AL,BUF2
ROR AL,1
MOV BUF1,AL
OUT DX,AL
CALL D500MS
JMP AGAIN
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END
第8 章 中断习题
8.1 80x86 的中断系统有哪几种类型中断?其优先次序如何?
80x86 的中断系统可处理256 种个中断源。这些中断源可分为两大类:外部中断(硬件
中断)、内部中断(软件中断)。软件中断包括:除法中断、单步中断、指令中断、溢出中断。
硬件中断包括:INTR 和NMI。
中断优先级的次序是:内部中断(高)_非屏蔽中断_可屏蔽中断_单步中断(低)
8.3 已知中断向量表表中地址0020H ~ 0023H 的单元中依次是40H,00H,00H,01H,
并知INT 08H 指令本身所在的地址为9000H:00A0H。若SP=0100H,SS=0300H,标志寄
存器内容为0240H,试指出在执行INT 08H 指令,刚进入它的中断服务程序时,SP,SS,
IP,CS 和堆栈顶上三个字的内容(用图表示)。
执行后 SS=0300H SP=00FAH
CS=0100H IP=0040H ,堆栈顶上三个字的内容如下所示:
0 0 F AH
0 0 F CH
执行后:0300H:00FEH
初始: 0300H:01000H
8.4 某一用户中断源的中断类型号为40H,其中断服务程序名为INTR40,请用两种不
同的方法设置它的中断向量。
法一:MOV AX,0000H
MOV DS,AX
MOV SI,0100H
MOV AX,OFFSET INTR40
MOV [SI],AX
MOV AX,SEG INTR40
MOV [SI+2],AX
法二:MOV BX,SEG INTR40
MOV DS,BX
MOV DX,OFFSET INTR40
MOV AH,25H
INT 21H
8.5 试编写一段将8259A 中IRR、ISR、IMR 的内容读出,存入到BUFFER 开始的数
据缓冲区去的程序。8259A 的端口地址为30H、31H。
START: MOV AX,DATA ;取BUFFER 所在数据段的段基址DS
MOV DS,AX
LEA SI,BUFFER ;取BUFFER 所在数据段的偏移地址SI
MOV AL,0AH ;读出命令字OCW,P=0,RR=1,RIS=0,选IRR
栈区
A2H
00H
00H
90H
40H
02H
XX
OUT 30H,AL
IN AL,30H ;读出IRR 的内容
MOV [SI],AL ;IRR 内容送内存
MOV AL,0BH ;读出命令字OCW,P=0,RR=1,RIS=1,选ISR
OUT 30H,AL
IN AL,30H ;读出ISR 的内容
MOV [SI+1],AL ;ISR 内容送内存
IN AL,31H ;读IMR 的内容
MOV [SI+2],AL ;IMR 的内容送内存
8.6 某一8086CPU 系统中,采用一片8259A 进行中断管理。设8259A 工作在全嵌套
方式,发送EIO 命令结束中断,边沿触发方式,IR0 对应的中断向量号为90H,8259A 在系
统中的端口地址为FFDCH(A0=0)和FFDDH(A0=1),试编写8259A 的初始化程序段。
初试化程序段为:
MOV AX,0FFDCH ;取8259A 的偶地址端口
MOV DX,AX
MOV AL,13H ;控制初始化命令字ICW1 设为13H,中断请求为边沿触
;发方式,单片8259A,需写入ICW4
OUT DX,AL ;设置ICW1
MOV AX,0FFDDH ;取8259A 的奇地址端口
MOV DX,AX
MOV AL,90H ;中断类型码初始化命令字ICW2 设为90H,对应于
;IR0 ~IR7 的中断类型码为90H~97H
OUT DX,AL ;设置ICW2
MOV AL,01H ;方式控制初始化命令字ICW4 设为01H,全嵌套方式,
;非缓冲方式,非自动中断结束方式,工作于8086 系统中
OUT DX,AL ;设置ICW4
第九章 可编程接口芯片及应用习题
9.1 试按如下要求分别编写初始化程序,已知计数器0 ~ 2 和控制字寄存器的端口地址
依次为204H ~ 207H。
(1)使计数器1 工作在方式0,仅用8 位二进制计数,计数初值为128。
(2)使计数器0 工作在方式1,按BCD 码计数,计数值为3000。
(3)使计数器2 工作在方式2,按二进制计数,计数值为02F0H。
初始化程序为:
(1) MOV DX,207H
MOV AL,50H
OUT DX,AL
MOV DX,205H
MOV AL,80H
OUT DX,AL
(2) MOV DX,207H
MOV AL,33H
OUT DX,AL
MOV DX,204H
MOV AX,3000H ;注意,不是3000
OUT DX,AL
MOV AL,AH
OUT DX,AL
(3) MOV DX,207H
MOV AL,0B4H
OUT DX,AL
MOV DX,206H
MOV AL,0F0H
OUT DX,AL
MOV AL,02
OUT DX,AL
9.2 硬件如题9.2 图,利用PC 内部8253 定时器0,并用中断方式实现每隔1s 使发光
二极管亮暗交替显示。(PC 内部8253 输入时钟频率为1.1932MHz,8253 定时器0 端口地址
为40H,控制寄存器端口地址为43H。Y0 为350H)。
定时器计数值=1.1932MHz÷5=32864=83D5H
软件计数值:50
程序为:(硬件图见教材P345 题9.2 图)
MOV AL,34H
OUT 43H,AL
MOV AL,0D5H
OUT 40H,AL
MOV AL,83H
OUT 40H,AL
MOV BL,50
┇
T0 中断服务程序为:
DEC BL
JNZ EXIT1
MOV BL,50
MOV AL,BUF
NOT AL
MOV BUF,AL
MOV DX,350H
OUT DX,AL
EXIT1:MOV AL,20H
OUT 20H,AL;(设8259A 的端口地址为20H,21H)
IRET
9.3 硬件如题9.3 图,8253 采用方式0,BCD 码计数方式,初始值为1000,每按一次
按钮S,计数器值减1。试编程实现显示8253 当前计数值,直至计数值为0。8253 端口地
址范围为80H ~ 83H。
(略。在何处显示---屏幕/LED/液晶?)
9.4 图9.4 为一简化的键盘/数码管显示接口电路,假设端口线a’ ~ h’及1、2 脚送“1”
电平,可使显示点亮并能实现扫描,试问U1、U2 及数码显示器的选用。
(1)U1 为 (同相驱动器 / 反相驱动器)。
(2)U2 为 (同相驱动器 / 反相驱动器)。
(3)数码显示器为 (共阴 / 共阳)数码管。
(4)若A 键闭合,则端口线3,4 的电平为 。
图9.4 见教材P295
选用同相驱动器
选用反相驱动器
选用共阴数码管
若A 键闭合,则端口线3,4 的电平为0,1
9.5 硬件如题 9.5 图,试编程实现循环检测S0、S1,当S0 按下,数码管显示0,当
S1 按下,数码管显示1,S0、S1 同时按下,则结束程序。8255 的端口地址范围为80H83H。
程序为:
MOV AL,82H
OUT 83H,AL
AGAIN: IN AL,81H
TEST AL,03
JZ EXIT
TEST AL,01
JZ NEXT
MOV AL,3FH
OUT 80H,AL
JMP AGAIN
NEXT: TEST AL,02
JZ NEXT1
MOV AL,06
OUT 80H,AL
JMP AGAIN
NEXT1: MOV AL,00
OUT 80H,AL
JMP AGAIN
EXIT: MOV AH,4CH
INT 21H__