微机原理试题 答案
一、填空
1. 01011101.101B = 93.625D = 5D.AH=( 1001 0011 . 0110 0010 0101 )BCD
2. 一个有16个字的数据区,它的起始地址为70A0:DDF6,那么该数据区的最后一个字的物理首地址为7E814H。
3.在IBM-PC/XT中,外设是通过8259器件对CPU产生中断请求。这些中断的中断类型码为08H—0FH。
4.8088在访问4个当前段时,代码段、数据段及堆栈段的偏移量分别由IP、由寻址方式决定的16位偏移量和SP提供。
5.在8088读存储器周期中,采样Ready线的目的是确定是否在T3周期后插入Tw周期。
二、(8)、下列程序段的功能是完成S=(a*b+c)/a的运算,其中变量a,b ,c,和s均为带符号的字数据,结果的商存入s,余数则不计,请在下列空格中填入合适的指令(注:请按注释
填空)。
MOV AX, a
IMUL b
A*b在CX:BX中
MOV CX,DX
MOV BX,AX
MOV AX,C
C在DX:AX中
CWD
ADD AX, BX
a*b+c在DX:AX中
ADC DX, CX
IDIV a
商存入S
令数组全部的值为0MOV S, AX
三、简答题
1. 在8088 CPU的最大方式系统中,设20位地址全部需要锁存,数据线使用总线收发器,
请问该CPU与系统总线的接口逻辑中需要哪些芯片?各需多少片?并叙述每块芯片的作用。
答: 8284 一片:给CPU提供RESET、READY、CLK信号;
8282 三片:锁存20位地址;
8286 一片:增强总线带负载能力,(或数据驱动);
8288 一片:从CPU接收S2S1S0信号,发出相应的控制信号。
2.PC/XT机的输入输出方式有哪几种?各有什么特点?
答:(1)无条件:需要外设处于就绪状态,硬件简单;
(2)查询:CPU需要不断地查询外设是否就绪,浪费CPU时间,硬件较简单;
(3)中断:外设准备好后,向CPU发中断请求,请求CPU完成数据传输,外设与CPU并行;硬件又比前两者复杂。
(4)DMA:CPU对DMAC初始化后,由DMAC控制总线完成数据传送;CPU与I/O并行。速度快,用于大量数据传输。DMAC占用总线时,CPU不能用。硬件更复杂。
四、下图是一个存储器系统,地址总线共有20位,数据总线8位,试分析电路,回答1、2、3、4题问题。
1.单片EPROM和单片SRAM的容量各为多少?
2.74LS138的作用是什么?
3.EPROM2的地址范围是多少?
4.SRAM2的地址范围是多少?
答:1. EPROM单片容量为4K×8位,SRAM单片容量为2K×8位。
2.74LS138的作用是译码。
3.ERROM2的地址范围为:F9000H~F9FFFH。
4.SRAM2的地址范围为:FC800H~FCFFFH。
五、设在最大方式下,8086系统中有一块主8259A和一块从8259A,从8259A接至主8259A的IR1上,主、从8259A的偶地址分别是0200H和0210H。主8259A的IR 0中断类型码是30H,从8259A的IR0的中断类型码是38H。所有请求都是边沿触发,用EOI命令清ISR位,两块8259A采用级联方式连接。主、从8259A的IMR都清除,用作输入。试编写该中断系统的初始化程序。
答:对于8086 CPU,若主8259A的偶地址为0200H,则奇地址为0202H;若从8259A的偶地址为0210H,则奇地址为0212H。
;主8259A初始化程序:
INTA0 EQU 0200H;
INTA1 EQU 0202H
MOV AL,11H ; 00010001B
MOV DX,INTA0
OUT DX,AL ;ICW1
MOV AL,30H
MOV DX,INTA1
OUT DX,AL ;ICW2
MOV AL,02H ;00000010B
OUT DX,AL ;ICW3
MOV AL,11H ;00010001B
OUT DX,AL ;ICW4
;从8259A初始化程序:
INTA0 EQU 0210H
INTA1 EQU 0212H
MOV AL,11H
MOV DX,INTA0
OUT DX,AL ;ICW1
MOV AL,38H
MOV DX,INTA1
OUT DX,AL ;ICW2
MOV AL,01H
OUT DX,AL ;ICW3
MOV AL,01H ;00000001B
OUT DX,AL ;ICW4
六、设外部有一脉冲信号源PLUS,要求用8253—5的计数器0对该信号源连续计数,当计数器计为0时向CPU发出中断请求。要求:
1.画出8253-5的CLK0、GATE0和OUT0的信号连接图。
2.若该芯片的端口地址为40H~43H,计数初值为1234H,写出该计数器工作在方式2按二进制计数的初始化程序。
3.若计数初值为12345H,在上述基础上增加计数器1如何连接以实现计数。
答:1.
2. MOV AL,34H
OUT 43H,AL
MOV AL,34H
OUT 40H,AL
MOV AL,12H
OUT 40H,AL
3. PLUS作CLK0的输入,OUT0的输出作CLK1的输入信号。OUT1的输出作CPU的请求信号。用两个计数器串联计数实现20位二进制的计数
七、假设8255A芯片起始端口地址为60H,编写指令序列,分别完成:
1.设置端口A组和B组都是方式0,其中端口B和C是输出口,A为输入口。
2.设置端口A组为方式2、B组为方式0且端口B为输出。
3.设置端口A组为方式1且端口A为输入、PC6和PC7为输出;设置端口B组为方式1且端口B为输入。
答: 1. MOV DX, 0063H
MOV AX, 0090H
OUT DX, AX
2. MOV DX, 0063H
MOV AX, 00D0H
OUT DX, AX
3. MOV DX, 0063H
MOV AX, 00B2H
OUT DX, AX
八、在8086系统下,编写完整程序,出字节数组ARRAY中的最大值和最小值。假设ARRAY的长度为100个字节,每个字节为一个无符号数,程序执行后最大值将存放到字节变量MAX中,最小值则存放到字节变量MIN中。
参考程序:
DATA SEGMENT
ARRAY DB 100 DUP(?) ;字节数组
MAX DB ? ;最大值
MIN DB ? ;最小值
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
MAIN PROC FAR
PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DATA
MOV DS, AX
LEA SI, ARRAY
CLD
MOV BH, 0 ;存放临时最大值的寄存器
MOV BL, 0FFH ;存放临时最小值的寄存器
MOV CX, 100
AGAIN: LODSB
CMP AL, BH
JNA NEXT1
MOV BH, AL ;如果当前数值比临时最大值大,则代替
NEXT1: CMP AL, BL
JNB NEXT2
MOV BL, AL ;如果当前数值比临时最小值小,则代替
NEXT2: LOOP AGAIN
MOV MAX, BH
MOV MIN, BL
RET
MAIN ENDP
CODE ENDS
END MAIN
九、(15分)阅读下列程序,说明程序的功能,画出流程图。
DATA SEGMENT
X DW X1,X2,X3,X4,X5,X6,X7,X8,X9,X10
Y DW Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9,Y10
Z DW Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10
LOGIC_RULE DW 00DCH
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
DB 100 DUP (?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
START PROC FAR
BEGIN: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV CX,10
MOV DX,LOGIC_RULE
NEXT: MOV AX,X[BX]
SHR DX,1
JC SUBTRACT
ADD AX,Y[BX]
JMP SHORT RESULT
SUBTRACT: SUB AX,Y[BX]
RESULT: MOV Z[BX],AX
INC BX
LOOP NEXT
RET
START ENDP
CODE ENDS
END BEGIN
答:设有数组X和Y。X数组中有X1,…,X10;Y数组中有Y1,…,Y10。以上该程序功能为计算下列各式:
Z1=X1+Y1 Z2=X2+Y2 Z3=X3-Y3 Z4=X4-Y4 Z5=X5-Y5
Z6=X6+Y6 Z7=X7-Y7 Z8=X8-Y8 Z9=X9+Y9 Z10=X10+Y10
并将结果存入Z数组。
程序参考流程图:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论