微型计算机原理应用第四版答案 下载本文

其中总线接口部分的功能是负责与存储器、I/O端口传送数据,即BIU管理在存储器中存取程序和数据的实际处理过程。

执行部件EU的功能负责指令的执行。将指令译码并利用内部的寄存器和ALU对数据进行所需的处理。

BIU由4个段寄存器(CS、ES、DS、SS)、16位指令指针寄存器IP、20位的地址加法器和6字节的指令队列组成。

EU由4个通过寄存器(AX、BX、CX、DX)、4个专用寄存器(SI、DI、SP、BP)、标志寄存器FR、算术逻辑部件ALU组成。

8086 CPU有哪些寄存器组成?各有什么用途?标志寄存器的各标志位在什么情况下置位?

答:8086 CPU由4个通用寄存器(AX、BX、CX、DX)、4个专用寄存器(SI、DI、SP、BP)、标志寄存器FR组成,共9个寄存器。

4个通用寄存器既可作为16位寄存器用,也可作为8位寄存器使用。其中AX寄存器也常称为累加器。其它寄存器的用途见教材。

标志寄存器有6个状态标志(SF、ZF、PF、CF、AF、OF)和3个控制标志位(DF、IF、TF)。

其具体置位见P75的表4-1.

8086系统中的物理地址是如何得到的?假如CS=2000H,IP=2100H其物理地址应是多少?

答:8086系统中的物理地址是通过BIU中的20位地址加法器得到的。

物理地址计算公式为CS段地址*16(即二进制左移4位,或者十六进制左移1位)+IP偏移地址。

按计算公式,本题中的物理地址为20000H+2100H=22100H。

什么叫总线周期?8086CPU的一个总线周期包括多少时钟周期,什么情况下要插入TW等待周期?插入多少个TW取决于什么因素?

答:总线周期是CPU或其他总线控制设备访问一次存储器或I/O端口所需的时间。 在总线周期中需要利用总路线。

补充:指令周期:指令周期是机器执行一条指令所需的时间。

8086CPU的一个标准总线周期包括4个时钟周期。当4个时钟周期不能完成所规定的操作时,可以插入一个或多个等待时钟周期TW。

插入多少个TW取决于所访问的存储器或者I/O设备是否准备就绪,此信号由引脚READY发出。

什么是最大模式?什么是最小模式?用什么方法将8086/8088置为最大模式和最小模式?

答:所谓最小模式,就是在系统中只有8086/8088一个微处理器。

最大模式中,饮包含两个或多个微处理器,其中主处理器是8086/8088,其他处理器是协处理器(如数值运算协处理器8087,输入/输出协处理器8089)。

用硬件方法来决定8086/8088的工作模式,具体是通过引脚MN/MX控制信号引脚来决定,其接+5伏,则为最小模式,接地为最大模式。

什么是地址锁存器?8086/8088系统中为什么要用地址锁存器?锁存的是什么信息? 答:

(1)地址锁存器就是一个寄存器,它根据控制信号的状态,将总线上的地址代码暂存起来,即用于“锁定”一个(系列)数字状态的电路。

简答:地址锁存器是用来锁存/保存地址的一个寄存器(即一个普通的时序电路),是触发器的原始形式。目的是某次传送数据并不能一次完成所以锁存地址以免CPU重复的传送一个地址。

原理:CPU送地址到锁存器8282/8283之后,内存在地址锁存器中找地址,而不是向CPU要地址。

(2)因为8060/8088系统采用的是地址/数据分时复用总线,即用同一总线传输数据又传输地址,当微处理器与存储器或IO交换信号时,首先由CPU发出存储器地址,同时发出允许锁存ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在总线上,随后才能传输数据。

个人理解:因为在总线周期的前半部分,CPU总是送出地址信号和BHE(总线高允许)信号,为了通知地址已经准备好了,可以被所锁存,CPU会送出高电平允许锁存信号ALE。此时地址信号和BHE信号被锁存。由于有了锁存器对地址信号和BHE信号的锁存,CPU在总线周期的后半部分,地址和数据都在总线上,确保了CPU对锁存器和I/O接口的读/写操作。

(3)锁存的是复用总线上的地址信息。

8086/8088系统中的8286是什么器件?起什么作用?

答:(1)8286是总线驱动器(又称总线收发器,双向数据缓冲器)。

(2)在一个系统所含的外设接口较多时,它用来增加数据总线的驱动能力。 8086/8088系统中用时钟发生器8284A产生哪些信号?

答:8284A产生恒定的时钟信号、准备信号(READY)及复位信号(RESET)。 8086最基本的操作是什么? 答:是总线操作

8086/8088系统中引入了哪些中断?是如何引入的?

答:8086共有256种类型的中断。从产生中断的方法,可以将其分为硬件中断和软件中断两大类,硬件中断中的非屏蔽中断是通过CPU的NMI引脚进入的,可屏蔽中断是通过CPU的INTR引脚进入的,并且只有当中断允许标志IF为1时,非屏蔽中断才能进入。

软件中断是CPU根据软件中的某条指令或者软件对标志寄存器中某个标志的设置而产生的。

什么是可屏蔽中断?什么是非屏蔽中断?

可屏蔽中断是指受中断标志IF屏蔽的中断,由INTR引脚进入。 非屏蔽中断是不受中断标志IF屏蔽的中断,由NMI引脚进入。

什么是中断向量?中断向量表指的是什么?中断向量表放在什么地方?

答:(1)中断向量是中断处理子程序的入口地址,每个中断类型对应一个中断向量。

(2)中断向量表是指在8086/8088微机系统的内存中,专门留出的0段的0000~03FH区域,用于存放所有的256个中断向量。 (3)中断向量表放在0段的0000~03FH区域。 假如中断类型为8,它的中断服务入口地址是多少?

答:中断类型8*4=32,即十六进制20H,所以其中断服务入口地址为20H. 第5章习题

分别指出下列指令中的源操作数和目的操作数的寻址方式: (1)MOV SI, 200 ;源操作数为立即数寻址 (2)MOV CX, DATA[SI] ;源操作数为

(3)ADD AX, [BX][DI] ;源操作数为基址加变址的寄存器间接寻址 (4)AND AX, BX 源操作数为寄存器寻址 (5)MOV [SI], AX ;源操作数为寄存器寻址 (6)PUSHF ; 为寄存器寻址

对于目的操作数,前4小题均为寄存器寻址,(5)题为寄存器间接寻址。 试述指令MOV AX, 2010H 和MOV AX, DS:[2010H]的区别中。 答:前者为将十六进制数2010H送到寄存器AX中去;

后者为将数据段DS中偏移地址为2010H、2011H两单元中的内容送到AX中去。 写出以下指令中内存操作数的所在地址。 (1)MOV AL, [BX+5]

答:源操作数的地址为[BX+5],默认段寄存器为数据段寄存器DS,又因BX为基址寄存器,所以寻址方式为数据段相对基址寻址; (2)MOV [BP+5], AX

答:目的操作数的地址为[BP+5],默认段寄存器为堆栈段寄存器SS,又因BP为基址寄存器,所以寻址方式为堆栈段相对基址寻址; (3)INC BYTE PTR [SI+3]

答:此句意思为将SI+3所指的存储单元的内容加1;PTR的意义是定义其后的内容变量的新类型为字节属性,具体用法见第7章P159.

内存操作数的地址为[SI+3],属于相对变址寻址; (4)MOV DL, ES: [BX+DI]

答:源操作数为附加段基址加变址的寻址方式; (5)MOV BX, [BX+SI+2]

答:源操作数的内存地址为[BX+SI+2],属于数据段相对基址加变址寻址。 判断下列指令书写是否正确: (1)MOV AL, BX

答:不对,一个8位,一个16位; (2)MOV AL,CL

答:正确

(3)INC [BX] 答:正确

(4)MOV 5, AL

答:不对,目的操作数不能是立即数。 (5) MOV [BX], [SI]

答:不对,两个存储单元之间不能直接传送数据; (6)MOV BL, F5H 答:正确

(7)MOV DX, 2000H 答:正确

(8)POP CS

答:不对,段寄存器CS和立即数都不能作目的操作数 (9) PUSH CS 答:正确。

注:本部分可以用DEBUG中的-a指令进行调试以确认指令是否正确 设堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,试问: (1)执行指令PUSH AX 后 SP=?

答:执行PUSH指令时,栈顶指针SP自动减2,所以SP=2000H-2= 1FFE H; (2)再执行PUSH BX 及POP AX后SP=? AX=? BX=?

答:执行PUSH BX 后SP=1FFE H- 2;再执行POP AX后SP=(1FEE H-2)+2=1FFE H;

此时AX中的内容为原BX中的内容,故AX=5000H; 而BX中的内容没有改动,即还是5000H.

要想完成把[2000H]送 [1000H]中,用指令:

MOV [1000H], [2000H]是否正确 ?如果不正确,应用什么方法? 答:不正确,因为两个存储单元之间不能直接传送数据。可以改为: MOV AX, [2000H] MOV [1000H], AX

假如想从100中减去AL中的内容,用SUB 100,AL是否正确?如果不正确,应用什么方法?

答:不正确,因为立即数不能做为目的操作数。可以改为: MOV BL, 5AH ; 100的16进制数表达式为5AH SUB BL, AL

用两种方法写出从88H端口读入信息的指令。再用两种方法写出从42H口输出100H的指令。

答:法一:IN AL, 88H;

法二:MOV DL, 88H IN AL, DL

(2) 法一:MOV AX, 0100H

OUT 42H, AX; 将AX中的内容输出到42H、43H两端口中,其中00H送42H端口中,01H送到43H端口中

法二:MOV AX,0100H MOV DX, 42H OUT DX, AX

假如AL=20H,BL=10H,当执行CMP AL,BL后,问:

(1)若AL、BL中内容是两个无符号数,比较结果如何?影响哪几个标志位? 答:对无符号数,执行CMP后影响 CF、ZF位。 故执行后标志为分别为 ZF=0;CF=0; 第一个数AL为: 0002 0000 (2)若AL、BL中内容是两个有符号数,结果又如何?影响哪几个标志位? 第二个数BL为:- 0001 0000 0001 0000