微机原理试题 答案
一、填空
1. 01011101.101B = 93.625D = 5D.AH= 1001 0011 . 0110 0010 0101 BCD
2. 一个有16个字的数据区,它的起始地址为70A0DDF6,那么该数据区的最后一个字的物理首地址为7E814H
3IBMPC/XT中,外设是通过8259器件对CPU产生中断请求。这些中断的中断类型码为08H—0FH。 
48088在访问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提供RESETREADYCLK信号;
        8282 三片:锁存20位地址;
        8286 一片:增强总线带负载能力,(或数据驱动);
        8288 一片:从CPU接收S2S1S0信号,发出相应的控制信号。
2.PC/XT机的输入输出方式有哪几种?各有什么特点?
    答:(1)无条件:需要外设处于就绪状态,硬件简单;
      2)查询:CPU需要不断地查询外设是否就绪,浪费CPU时间,硬件较简单;
      3)中断:外设准备好后,向CPU发中断请求,请求CPU完成数据传输,外设与CPU并行;硬件又比前两者复杂。
      4DMACPUDMAC初始化后,由DMAC控制总线完成数据传送;CPUI/O并行。速度快,用于大量数据传输。DMAC占用总线时,CPU不能用。硬件更复杂。
四、下图是一个存储器系统,地址总线共有20位,数据总线8位,试分析电路,回答1234题问题。
1.单片EPROM和单片SRAM的容量各为多少?
2.74LS138的作用是什么?
3.EPROM2的地址范围是多少?
4.SRAM2的地址范围是多少?
答:1. EPROM单片容量为4K×8位,SRAM单片容量为2K×8位。
    2.74LS138的作用是译码。
3.ERROM2的地址范围为:F9000HF9FFFH
4.SRAM2的地址范围为:FC800H~FCFFFH
五、设在最大方式下,8086系统中有一块主8259A和一块从8259A,从8259A接至主8259AIR1上,主、从8259A的偶地址分别是0200H0210H。主8259AIR 0中断类型码是30H,从8259AIR0的中断类型码是38H。所有请求都是边沿触发,用EOI命令清ISR位,两块8259A采用级联方式连接。主、从8259AIMR都清除,用作输入。试编写该中断系统的初始化程序。
    答:对于8086 CPU,若主8259A的偶地址为0200H,则奇地址为0202H;若从8259A的偶地址为0210H,则奇地址为0212H
;主8259A初始化程序:
        INTA0    EQU    0200H
        INTA1    EQU    0202H
        MOV    AL11H        00010001B
        MOV    DXINTA0
        OUT    DXAL            ICW1
        MOV    AL30H
        MOV    DXINTA1
        OUT    DXAL            ICW2
        MOV    AL02H        00000010B
        OUT    DXAL            ICW3
        MOV    AL11H        00010001B
        OUT    DXAL            ICW4
;从8259A初始化程序:
        INTA0    EQU    0210H
        INTA1    EQU    0212H
        MOV    AL11H
        MOV    DXINTA0
        OUT    DXAL            ICW1
        MOV    AL38H
        MOV    DXINTA1
        OUT    DXAL            ICW2
        MOV    AL01H
        OUT    DXAL            ICW3
        MOV    AL01H        00000001B
        OUT    DXAL            ICW4
六、设外部有一脉冲信号源PLUS,要求用8253—5的计数器0对该信号源连续计数,当计数器计为0时向CPU发出中断请求。要求:
    1.画出8253-5CLK0GATE0OUT0的信号连接图。
    2.若该芯片的端口地址为40H43H,计数初值为1234H,写出该计数器工作在方式2按二进制计数的初始化程序。
3.若计数初值为12345H,在上述基础上增加计数器1如何连接以实现计数。
答:1.
        2.    MOV  AL34H
              OUT  43HAL
              MOV  AL34H
              OUT  40HAL
              MOV  AL12H
              OUT  40HAL
3.    PLUSCLK0的输入,OUT0的输出作CLK1的输入信号。OUT1的输出作CPU的请求信号。用两个计数器串联计数实现20位二进制的计数
七、假设8255A芯片起始端口地址为60H,编写指令序列,分别完成:
1.设置端口A组和B组都是方式0,其中端口BC是输出口,A为输入口。
2.设置端口A组为方式2B组为方式0且端口B为输出。
3.设置端口A组为方式1且端口A为输入、PC6PC7为输出;设置端口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        X1X2X3X4X5X6X7X8X9X10
Y                DW        Y1Y2Y3Y4Y5Y6Y7Y8Y9Y10
Z                DW        Z1Z2Z3Z4Z5Z6Z7Z8Z9Z10
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        AX0
                PUSH        AX
                MOV        AXDATA
        MOV        DSAX
                MOV        BX0
                MOV        CX10
                MOV        DXLOGIC_RULE
NEXT            MOV        AXX[BX]
                SHR            DX1
                JC            SUBTRACT
                ADD        AXY[BX]
                JMP            SHORT    RESULT
SUBTRACT    SUB            AXY[BX]
RESULT        MOV        Z[BX]AX
                INC            BX
                LOOP        NEXT
                RET
START            ENDP
CODE            ENDS
                END        BEGIN
答:设有数组XYX数组中有X1…,X10Y数组中有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小时内删除。