微机原理期末

一、图1虚线内为一个简化的微处理器模型,请回答以下问题

(1)微处理器由哪几部分组成?请简述各组成部分的主要功能

处理器即CPU,由运算器、控制器和内部寄存器构成

运算器用来进行算术或逻辑运算以及移位循环等操作

控制器负责把指令逐条从存储器中取出,经译码分析后向全机发出取数、执行、存数等控制命令

内部寄存器包括程序计数器PC、地址寄存器AR、数据缓冲寄存器DR、累加器A、标志寄存器FLAGS、寄存器阵列RA

内部总线是微处理器、存储器和I/O接口之间互相交换信息的公共通路

(2)若存储器中的鼠疫均以字对齐方式访问,CPU字长为16位,现需从存储单元4002H开始读取一个字数据送往CPU中某内部寄存器,请简要描述该操作的实现过程,操作完成后,该寄存器的值是多少?

4002H内存储的字节数据-----34H

4003H内存储的字节数据-----0A5H

则一个字数据为0A534H

寄存器的值为0A534H

(3)根据冯诺依曼思想,程序和数据实现存放在存储器中,计算机在工作是能够高速地从存储器中取出指令加以执行,无论从存储器中取出的是指令还是数据,都是通过外部DB现传送至数据缓冲器DR中。请问,微处理器如何区分当前送到DR中的是指令还是数据?

时间:在取指周期取出的为指令,在指令执行周期取出的为数据

空间:由PC提供存储单元地址的取出的是指令,由指令地址码部分提供存储单元地址的取出是操作数

内存取出指令送控制器,而指令执行周期从内存取的数据送运算器,往年内存写入的数据也是来自运算器

(4)请结合图1简要分析为什么CPU处理寄存器操作数的速度比处理存储单元操作数的速度快

内存离CPU比较远,所以要耗费更长的时间读取

寄存器的工作方式简单,在内存中取数据工作方式复杂

二、设存储器中有两个操作数x=0100 0100B,y=0100 1000B,将它们送到运算器作加法运算。加法运算前后,内部寄存器和存储单元的值分别如图2(a)、(b)所示,请回答以下问题

(1)x和y存放在哪个逻辑段?该逻辑段的段基址放在哪个寄存器?

数据段

DS

(2)请结合图2分析,若x和y均为无符号数,计算结果是否正确?为什么?

正确

结果存在AL中位8CH,无符号数为140

(3)若x和y均为带符号补码数,它们的真值分别为多少?

x的真值为68

y的真值为72

(4)请结合图2分析,若x和y均为带符号补码数,计算结果是否溢出?为什么?

溢出,因为x+y后的十六进制为8CH,补码真值为-116

正数+正数=负数

看标志位也可以,OV溢出

三、结合下面的图,回答以下问题

(1)简述8086CPU中BIU和EU的功能

总线接口单元BIU负责物理地址形成、取指令、指令排队、读写操作数和总线控制

执行单元EU负责进行所有指令的解释和执行,指令译码和指令执行

BIU负责完成CPU与存储器或I/O设备之间的数据传送

EU负责指令的执行

(2)指令队列缓冲器在BIU和EU并行工作中起什么作用?

指令队列的存在使8086的EU和BIU并行工作,从而减少CPU为取指令而等待的时间,提高CPU的利用率

(3)指令“ADD AX,[BX+0100H]”中存储器操作数的寻址方式是什么?请给出该存储器操作数的物理地址表达式,并结合图3,简要描述8086CPU内存分段管理的思想和计算出物理地址的过程

寄存器相对寻址

DS*10H+BX+0100H

8086处理器有20位地址,可以寻址1M字节的空间,而8086内部寄存器只有16位,只能寻址64K字节的空间,所以采用分段的方式才能访问全部地址空间

分段的目的是便于存储器的管理,可以用16位寄存器来寻址20位的内存空间

物理地址=段地址*10H+偏移地址

(4)标志寄存器中的标志位可以分为哪几类?上述加法指令执行过程中,标志寄存器的作用是什么?

6个标志状态位和3个控制标志位

CF、PF、AF、ZF、SF、OF

TF、IF、DF

作用是:执行指令后对各个标志位的产生影响,用来控制后续指令,判断数据是否发生溢出、进位等

(5)8086CPU的地址总线有多少位?其寻址范围是多少?

20位

00000H~FFFFFH

(6)参考图3,简要解释寄存器CS和IP的作用,8086CPU可以通过哪些途径更新这两个寄存器的值?

CS:代码段寄存器,用于存放代码段的段基地址

IP:指令指针寄存器,用于存放下一条要执行指令的偏移地址

CS和IP---下一条执行指令的物理地址

通过堆栈PUSH、POP指令以及JMP等跳转指令来更新

四、若从偏移地址为TABLE开始的内存单元中,存放着100个字节型数据,请阅读以下程序片段并回答问题

(1)请在横线上为第3行代码添上适当的注释

将AX寄存器清零

(2)请在横线上为第7行代码添上适当的注释

给BX寄存器加1,指向下一个字节单元

(3)请在横线上将第9行代码补充完整

JNZ LOOPER

(4)请在横线上将第10行代码补充完整

MOV SUM ,AH

(5)请用一条功能相同的指令来替换第1行代码

MOV BX,OFFSET TABLE

(6)该程序的功能是什么?

求TABLE开始的100个字节单元的累加和,结果存到SUM中

五、从内存数据段的xx单元开始连续存放有10个字节型无符号数,要求从中找出最大者送入yy单元中

(1)画出流程图

(2)请在下面框架中将程序补充完整

DATA SEGMENT

        xx DB 73,59,45,81,107,37,25,14,64

        yy DB ?

DATA ENDS

CODE SEGMENT

        ASSUME CS:CODE,DS:DATA

START:

        MOV AX,DATA

        MOV DS,AX

   MOV BX,OFFSET XX

   MOV AL,[BX]

   MOV CL,9

AGAIN:

   INC BX

   CMP AL,[BX]

   JA NEXT

   MOV AL,[BX]

NEXT:

   LOOP AGAIN

   MOV yy,AL

        MOV AH,4CH

        INT 21H

END CODE

        END START

六、图4是test2015.exe,回答一下问题

data segment
a dw 5
b dw -1
sum dw 0
data ends
code segment
assume cs:code,ds:data
start:
    mov ax,data
    mov ds,ax
    mov ax,a
    mov bx,b
    call adder
    mov sum,ax
    mov ah,4ch
    int 21h
adder proc near
    pushf
    add ax,bx
    popf
    ret
adder endp
code ends
    end start


(1)该源程序使用了子程序,请问子程序有什么优点?如果在子程序中没有ret指令会出现什么情况?

子程序节省目标代空间,运行需要保护断点和现场,返回时需要恢复断点和现场,形成的目标代码较短

没法正确返回现场,导致程序执行错误

代码重用

模块化

程序将不会返回到主程序中调用该子程序的位置继续执行。CPU会继续执行子程序之后的内存中的指令,这通常会导致程序崩溃或执行错误的代码,因为这部分内存可能不是有效的程序代码,或者不是预期要执行的代码。

(2)图4中“call 0016”执行后,寄存器IP的内容更新为多少?如何保证子程序执行完后能正确回到主程序中调用该子程序的位置?

IP=0016H

通过ret指令来返回

IP的内容更新为下一条指令的地址

压栈返回地址:call指令执行时,会将当前IP(即下一条指令的地址)压入堆栈。

ret指令:从堆栈中弹出之前保存的返回地址,并将其加载到IP寄存器中,跳转到call指令之后的那条指令继续执行

七、设某8位系统使用3片EPROM芯片2176(2K*8)进行扩展,构成所需要的ROM存储器,其连接线路如图5

(1)图5中用3片2716芯片扩展成ROM存储器属于哪种类型的扩展?扩展后的ROM存储器容量是多少?

字扩展

6KB

(2)结合图5,分析每个EPROM芯片的地址范围

ROM1:0000H~07FFFH

ROM2:0800H~0FFFH

ROM3:1000H~17FFH

(3)请结合图5分析该8位机系统最多能访问的存储空间范围是多少?

0011 1111 1111 1111

0000H~3FFFFH

八、可偏程定时器/计数器芯片8253内部有三个相互独立的16位定时/计数器,已知时钟端CLK2输入信号的频率为2MHz,要求使用8253计数器2的OUT2,连接LED灯,使之亮0.5ms、灭0.5ms,如此反复。8253与8088总线的接口电路见图6,8253的工作方式控制字格式见图7

(1)图6中8253计数器2工作在哪种工作方式?其计数初值是多少?

计数器工作在方式3

计数初值为2MHz/1MHz=2000

(2)若计数初值采用十进制计数,请写出8253的工作方式控制字

10110111B=0B7H

(3)根据图6分析8253的4个端口地址分别是多少?

(4)CPU与外设之间数据传送方式有哪几种?接口在CPU与外设的数据传送过程中起到什么作用?图6中,CPU通过哪种传送方式将数据传送给连接在OUT2引脚的LED灯

无条件传送、查询传送、中断传送、DMA方式

作用:数据缓冲、联络功能、寻址功能

无条件直接传送方式

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值