微机原理课后习题答案 - 图文

更新时间:2023-11-23 19:11:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.3 微型计算机采用总线结构有什么优点?

解:采用总线结构,扩大了数据传送的灵活性、减少了连接。而且总线可以标准化,易于兼容和工业化生产。

2.6 IA-32结构微处理器支持哪几种操作模式?

解:IA-32结构支持3种操作模式:保护模式、实地址模式和系统管理模式。操作模式确定哪些指令和结构特性是可以访问的。

2.14 8086微处理器的总线接口不接有哪些功能?请逐一说明。

解:总线接口单元(BIU)负责与存储器接口;执行单元(EU)执行各种操作。BIU主要由段寄存器、指令指针、加法器(形成20位地址)和预取的指令流队列等组成。 2.15 8086微处理器的总线接口不见由哪几部分组成?

解:8086微处理器中的总线接口单元(BIU)负责CPU与储存器之间的信息传送。具体地说,BIU既负责从内存的指令部分取出指令,送至指令队列中排队(8086的指令队列有6个字节,而8088的指令队列只有4个字节);也负责传送执行指令时所需的操作数。执行单元(EU)负责执行指令规定的操作。

2.16 段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少? 解:指令的物理地址=12000h+FF00H=21F00H

2.17 8086微处理器的执行部件有什么功能?由哪几部分组成?

解:8086微处理器的执行部件负责指令的执行。它主要由算术逻辑单元、标志寄存器和通用寄存器等部分组成。

附:8086CPU从功能上分包括几部分,各有什么功能?

3.3 写出下指令中内存操作数的所在地址。 (1)MOV AL,[BX+10] (2)MOV [BP+10],AX (3)INC BYTE PTR[SI+5] (4)MOV DL,ES:[BX+SI] (5)MOV BX,[BP+DI+2] 解:(1)数据段BX+10单元 (2)堆栈段BP+10单元 (3)数据段SI+5字节单元

(4)附加段(ES段)BX+SI单元 (5)堆栈段BP+DI+2单元 3.4 判断下列指令书写是否正确。

(1)MOV AL , BX (错,AL与BX数据宽度不同) (2)MOV AL , CL (对)

(3)INC [BX] (错,因为不明确是增量字节还是字) (4)MOV 5, AL (错,立即数不能作为目的操作数)

(5)MOV [BX],[SI] (错,因为不明确要传送的是字节还是字) (6) MOV BL,0F5H (对)

(7) MOV DX,2000H (对)

(8)POP CS (错,CS不能作为POP指令的操作数) (9)PUSH CS (错,CS不能作为PUSH指令的操作数) 3.5 设堆栈指针SP的初值为1000H,AX=2000H,BX=3000H,试问: (1)执行指令PUSH AX后,SP的值是多少?

(2)再执行PUSH BX及POP AX后,SP、AX和BX的值是多少? 解:(1)SP=0FFEH

(2)SP=0FFEH,AX=3000H,BX=3000H

3.6 想要完成把[3000H]送[2000H]中,用指令:MOV [2000H],[3000H] 是否正确?如果不正确,应该用什么方法实现?

解:不正确。应为:MOV BL,200 SUB BL,AL

3.15 设DS=2100H,SS=5200H,BX-1400H,BP=6200H,说明下面两条指令所进行的具体操作:MOV BYTE PTR[BP],200 MOV WORD PTR[BX],2000

解:前一条指令时把立即数(应是字节)200,传送至堆栈段(BP的默认段)偏移量由BP规定的字节单元,地址为:52000H+6200H=58200H。

第二条指令时把立即数2000,传送至数据段(BX的默认段)偏移量由BX规定的字单元,地址为:21000H+1400H=22400H。

3.16 使用堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内存操作数时应该分别要注意什么问题?

解:使用堆栈指令可以把内存单元作为一个操作数(从内存到内存)。但堆栈固定在堆栈段且只能由SP指向。且堆栈操作要修改堆栈指针。MOV指令不能实现内存单元间的数据传送。XCHG指令时交换,有一个操作数必须是寄存器。

3.17 下面这些指令中哪些是正确的?哪些是错误的?若是错误的,请说明原因。 (1) XCHG CS,AX (错误,CS不能交换)

(2) MOV [BX],[1000H ] (错误,MOV指令不能在内存间传送) (3)XCHG BX,IP (错误,IP不能交换)

(4)PUSH CX (错误,CS可以作为PUSH指令的操作数) (5)POP CX (错误,CS可以作为POP指令的操作数) (6)IN BX,DX (错误,IN指令的目的操作数时累加器) (7)MOV BYTE[BX],1000 (错误,目的操作数是字节单元)

(8)MOV CS,[1000] (错误,CS不能作为MOV指令的目的操作数)

3.22 用普通运算指令执行BCD码运算时,为什么要进行十进制调整?具体地讲,在进行BCD码加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?

解:因为8086指令把操作数作为二进制数进行二进制运算,要得到正确的BCD结果,需要进行调整。在加、减、乘法指令之后加上BCD调整指令,而在除法指令之前先用BCD调整指令再用除法指令。 3.30 设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶地址为多少?当执行PUSH BX指令后,栈顶指令和栈顶两个字节的内容分别是什么? 解:当前的栈顶为:20100H+FE00H=2FF00H。执行PUSH BX后,栈顶为2FF00H-2=2FDFE,而2FF00H中的内容为57H,2FDFF中的内容为34H。

4.1 在下列程序运行后,给响应的寄存器及存储单元填入运行的结果:

MOV AL,10H MOV CX,1000H MOV BX,2000H MOV [CX],AL XCHG CX,BX MOV DH,[BX] MOV DL,01H XCHG CX,BX MOV [BX],DL HLT

解:寄存器及储存单元的内容如下:

AL=10H BL=00H BH=20H CL=00H CH=10H DL=01H DH=10H (1000H)=10H (2000H)=01H

4.2 要求同4.1,程序如下:

MOV AL,50H MOV BP,1000H MOV BX,2000H MOV [BP],AL MOV DH,20H MOV [BX],DH MOV DL,01H MOV DL,[BX] MOV CX,3000H HLT

解:寄存器及存储单元的内容如下:

AL=50H BL=00H BH=20H CL=00H CH=30H DL=20H DH=20H BP=1000H (1000H)=50H (2000H)=20H

4.3 自1000H单元开始有一个100个数的数据块,若要把它传送到自2000H开始的存储区中去,可以采用以下3种方法实现,试分别编制程序以实现数据块的传送。 (1)不用数据块传送指令;(2)用单个传送的数据块传送指令;(3)用数据块成组传送指令。

解(1) MOV SI,1000H MOV DI, 2000H MOV CX, 100 (2) MOV SI, 1000H MOV DI, 2000H MOV CX, 100 CLD L1: MOVSB LOOP L1 HLT

(3) MOV SI, 1000H MOV DI, 2000H MOV CX, 100 CLD REP MOVSW HLT

4.4 利用变址寄存器,编写一个程序,把自1000H单元开始的100个数传送到自1070H开始的存储区中去。

解: LEA SI, 1000H LEA DI, 1070H MOV CX, 100 CLD REP MOVSE HLT

4.10 把在题4.7中制定的数据块中的正数,传送到自1000H开始的存储区;而把其中的负数,传送到1100H开始的存储区。且分别统计正数和负数的个数,分别存入1200H和1201H单元中。

解: LEA SI, 0500H LEA DI, 1000H

LEA BX, 1100H MOV CX, 100 MOV DX, 0 N1: MOV AL, [SI]

TEST AL, 0 JS N2

MOV [DI], AL INC DL INC SI INC DI JMP N3

N2: MOV [BX], AL INC DH INC SI INC BX N3: LOOP N1

LEA BX, 1200H MOV [BX], DL MOV [BX+1], DH HLT

4.18 在0100H单元和010AH单元开始,存放两个各位10个字节的BCD数(地址最低处放的是最低字节),求它们的和,且把和存入0114H开始的存储单元中去。

4.28 若从0200H单元开始有100个数,编写一个程序检查这些书,正数保持不变,负数都取补后送回。

解: LEA BX, 0200H MOV CX, 100 CHE: MOV AL, [BX] AND AL, AL JS MINUA INC BX JMP L1 MINUS: NEG AL

MOV [BX], AL INC BX L1: LOOP CHE HLT

4.37 若自0500H单元开始有1000个带符号数,把它们的最小值找出来,并且放在1000H单元中。 解:

LEA BX, [0500H]

MOV AX, [BX] INC BX INC BX

MOV CX, 999 AGAIN: CMP AX, [BX] JL NEXT MOV AX,[BX] NEXT: INC BX INC BX LOOP AGAIN MOV [1000H], AX HLT

5.1 总线周期的含义是什么?8086/8088CPU的基本总线周期由几个时钟组成?如果一个CPU的时钟频率为8MHz,那么它的一个时钟周期是多少?一个基本总线周期是多少?如果主频为5MHz呢?

解:CPU访问总线(从内存储器或I/O端口读/写字节或字)所需的时间称为总线周期。8086/8088CPU的基本总线周期由4个时钟组成。若CPU的时钟频率为8(5)MHz,时钟周期为1/8MHz=125(1/5MHz=200)ns,基本总线周期为4*125(200)ns=500(800)ns。

5.2 在总线周期的T1、T2、T3、T4状态,CPU分别执行什么动作?什么情况下需要插入等待状态Tw?Tw在哪儿插入?怎样插入?

解:下面以存储器为例进行说明。在T1周期,输出地址信号、地址锁存允许信号、内存或I/O端口访问控制信号;在T2周期,CPU开始执行数据传送操作,此时8086CPU内部的多路开关进行切换,将地址/数据线AD15~AD0上的地址撤销,切换为数据总线,为读写数据做准备。8288总线控制器发出数据总线允许信号和数据发送/接收控制信号DT/R允许数据收发器工作,使数据总线与8086CPU的数据线接通,并控制数据传送的方向。同样把地址/状态线A19/S6~A16/S3切换成与总线周期有关的状态信息,指示若干与周期有关的情况。在T3周期开始的时钟下降沿上,8086CPU采样READY线。如果READY信号有效(高电平),则在T3状态结束后进入T4状态。在T4状态开始的时钟下降沿,把数据总线上的数据读入CPU或写到地址选中的单元。在T4状态中结束总线周期。如果访问的是慢速存储器或是外设接口,则应该在T1状态输出的地址,经过译码选中摸个单元或设备后,立即驱动READYA信号到低电平。8086CU在T3状态采样到BEADY信号无效,就会插入等待周期Tw,在Tw状态CPU继续采样READY信号;直至其变为有效后再进入T4状态,完成数据传送,结束总线周期。在T4状态,8086CPU完成数据传送,状态信号S2~S0变为无操作的过渡状态。在此期间,8086CPU结束总线周期,恢复各信号线的初态,准备执行下一个总线周期。 5.3 8086CPU和8088CPU是怎样解决地址线和数据线的复用问题的?ALE信号何时处于有效电平?

解:8086CPU和8088CPU是利用信号的时序来解决地址线和数据线的复用的。无论是内存或I/O端口访问,CPU总是先输出要访问的内存单元或I/O端口的地址,使内存和I/O端口有时间进行地址译码以找到要访问的单元,然后才能进行数据传送。所以CPU在T1周期输出地址,同时输出ALE信号以锁存在复用线上输出的地址。在T2周期,CPU开始执行数据传送操作,此时,8086CPU内部的多路开关进行切换,将地址/数据线AD15~AD0上的地址撤销,切换为数据总线,为读写数据作准备。

5.4 T1状态下,数据/地址线上是什么信息?用哪个信号将此信息锁存起来?数据信息是在什么时候给出的?用时序图表示出来。

解:在T1周期,数据/地址线上输出的是地址,用ALE信号把地址锁存。在T2周期在CPU内部已经把数据/地址线切换为数据线。时序图如图所示:

5.13 若在TIME开始的存储区中,已输入了以BCD码表示的时、分、秒的起始值(共用3个存储单元,时在前),利用延时1s的子程序,以CPU内部的3个寄存器中,产生实时时钟。 解:

NAME CLOCK

DATA1 SEGMENT TIME DB Y DB X

DW Z

DATA1 ENDS

STACK SEGMENT PARA STACK ‘STACK’ DB 100 DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS,CODE,DS,DATA1,SS,STACK START PROC FAR BEGIN: AGAIN: N1: START DELAY DEL20: LOP1: DELAY PUSH MOV PUSH MOV MOV LEA MOV MOV MOV CALL MOV ADD DAA

MOV CMP JNE MOV MOV ADD DAA

MOV CMP JNE MOV MOV ADD DAA

MOV CMP JNE MOV JMP ENDP PROC

PUSH PUSH MOV MOV LOOP DEC JNZ POP POP RET ENDP

DS AX, 0

AX AX DS, AX BX, TIME CH, [BX] DH, [BX+1] DL, [BX+2]

DELAY AL, DL AL, 1 DL, AL AL, 60 N1 DL, 0 AL, DH AL, 1 DH, AL AL, 60 N1 DH, 0 AL, CH CH, AL AL, 24 N1 CH, 0 AGAIN BX CX BL, 50 CX, 762 LOP1 BL

DEI, 20 CX BX CODE ENDS

END BEGIN

5.14 在存储器读周期,画出A15?A14?IO/M的波形。

5.17在输出周期,画出IO/M?WR的波形,标出它们的时间关系。

6.1 若有一单板机,具有8片2114构成的4KB RAM,连线如图所示。若以每1KB RAM作为一组,则此4组RAM的基本地址是什么?地址有没有重叠区?每一组的地址范围为多少?

解:RAM的基本地址为:

第一组 0000H~03FFH 第二组 4000H~43FFH 第三组 8000H~83FFH 第四组 C000H~C3FFH

地址有重叠区。每一组的地址范围为000H~3FFH(1024个字节)。 6.4 若要扩充1KB RAM(用2114片子),规定地址为8000H~83FFH,地址线应该如何连接?

解:扩充1KB RAM至规定地址8000H~83FFH,其地址线的低10位接芯片,高6位地址(A15~A10=100000)产生组选择信号。

6.5 若要用2114片子扩充2KB RAM,规定地址为4000H~47FFH,地址线应该如何连接? 解:

分析(1)2114是1K*4的芯片,要扩展2K*8需要4块芯片 (2) 指定地址位4000H-47FFH

A15 A14 A13 A12 A11 A10 A9 A8----------A0

0 1 0 0 , 0 0 0 0,-----------0 0 1 0 0 , 0 1 1 1,-----------1 因此,引脚该接到编号为16,17的引脚上(引脚编号从0开始) (3)连接地址线,控制线,数据线。

7.1 外部设备为什么要通过接口电路和主机系统相连?

解:因为外部设备种类繁多,输入信息可能是数字量、模拟量或开关量,而且输入速度、电平、功率与CPU差距很大。所以,通常要通过接口电路与主机系统相连。 7.2 接口电路的作用是什么?按功能可以分为几类?

解:接口电路使主机与不同种类的设备、不同信号类型、不同工作速度与不同电平和功率的外部设备能够正确连接,以保证信息的正确传送。接口电路按功能可分为并行接口电路和串行接口电路两大类。

7.3 数据信息有哪几类?举例说明它们各自的含义。 解:数据信息看分为3种基本类型:(1)数字量:由键盘等输入的信息是以二进制形式表示的数或以ASCII码表示的数或字符。(2)模拟量:当计算机用于控制时,大量的现场信息经过传感器把非电量(例如温度、压力、流量、位移等)转换为电量,并经放大即得模拟电压或电流。这些模拟量必须先经过A/D转换才能输入计算机(位数由A/D转换的精度确定);计算机的控制输出也必须先经过D/A转换才能去控制执行机构。(3)开关量:这是一些两个状态的量,例如电机的运转与停止、开关的合与断、阀门的打开与关闭等。这些量只要用1位二进制数即可表示,故字长8位的机器一次输入或输出可控制8个这样的开关量。 7.4 CPU和输入输出设备之间传送的信息有哪几类? 解:(1)数据(Data):在微型计算机中,数据通常为8位、16位或32位。(2)状态信息(Status):在输入时,有输入设备的信息是否准备好(Ready);在输出时有输出设备是否有空(Empty),若输出设备正在输出信息,则以忙(Busy)指示等。(3)控制信息(Control):例如,控制输入输出设备启动或停止等。

7.5 什么叫端口?通常有哪几类端口?计算机对I/O端口编制时通常采用哪两种方法?在8086/8088系统中,用哪种方法对I/O端口进行编址?

解:端口是信息输入或输出的通路。在计算机中用地址来区分不同的端口。计算机对I/O端口编址时通常采用两种方法。(1)存储器对应输入输出方法:在这种方式下,把一个外设端口作为储存器的一个单元来对待,故每一个外设端口占有存储器的一个地址。从外部设备输入一个数据,作为一次存储器读的操作;而向外部设备输出一个数据,则作为一次存储器写的操作。(2)端口寻址的输入输出方式:在这种工作方式中:CPU有专门的I/O指令,用地址来区分不同的外设。但要注意实际上是以端口(Port)作为地址的单元,因为一个外设不仅有数据寄存器还有状态寄存器和控制命令寄存器,它们各需要一个端口才能加以区分,故一个外设往往需要数个端口地址。CPU用地址来选择外设。 在8086/8088中,采用端口

寻址的输入输出方式。

7.6 为什么有时候可以使两个端口对应同一个地址?

解:若两个端口的数据传送方向不同,或两个端口所使用的信息,占用端口的不同位,则它们可以对应同一个地址。

7.7 CPU和外设之间的数据传送方式有哪几种?实际选择某种传送方式时,主要依据是什么? 解:(1)查询传送方式;(2)中断传送方式;(3)直接数据通道传送(DMA)方式。 具体采用哪种传送方式,取决于数据传送的速度和数量。当外部设备传送速度较低或要求实时处理时,采用中断方式;当外设速度与CPU相当时,采用查询方式;当要求传送速度快且是批量传送时,采用DMA方式。

7.8 条件传送方式的工作原理是怎样的?主要用在什么场合?画出条件传送(查询)方式输出过程的流程图。

解:条件传送方式(即查询方式),主要是在数据传送前,先查询传送的条件是否满足(输入的信息是否已就绪,输出设备是否忙)。若未满足就继续查询;当查询到条件满足时,就进行数据传送。主要用于输入输出信息的速度与CPU的速度相当的场合。流程图如图所示。

7.10 查询式传送方式有什么优缺点?中断方式为什么能弥补查询方式的缺点? 解:查询方式时程序不停地主动地对输入状态信息进行查询。优点是保证在条件具备时才进行输入或输出,传送可靠。但若输入速度较慢,则CPU的大量时间用于查询等待,而只有较少的时间实现输入输出,这样使得CPU的效率很低。中断方式是在程序启动输入输出过程后,程序不等待,继续执行……直至外部设备条件具备后,由外设通过中断信号通知CPU,条件已经具备,则CPU暂停程序的执行,处理输入输出工作。故CPU的效率高。 7.11与DMA方式比较,中断传输方式有什么不足之处?

解:中断传送仍是由CPU通过程序来传送,每次要保护断点、保护现场都需用多条指令,每条指令要有取指和执行时间。这对于一个高速I/O设备,以及成组交换数据的情况,例如磁盘与内存间的信息交换,就显得速度太慢了。所以希望用硬件在外设与内存间直接进行数据交换(DMA)而不通过CPU,这样数据传送的速度的上限就取决于存储器的工作速度。但是,通常系统的地址和数据总线以及一些控制信号线(例如IO/M、RD、WR等)是由CPU管理的,在DMA方式时,就希望CPU把这些总线让出来(即CPU连到这些总线上的线处于第三态——高阻状态),而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束等信号。这些都是由硬件实现的。 7.17试说明在DMA方式时内存向外设传输数据的过程?

解(1)当DMA要使用总线传输数据时,DMA管理器先向CPU的引脚HOLD发出使用总线的申请。(2) CPU如果能够相应DMA的请求就会在引脚HLDA上发出响应信号。(3)DMA管理器接收到响应信号以后,接管对总线的控制权。发出读写信号与地址信息,把内存的数据输出到外设。(4)然后判断是否传送完毕,如未完,修改内存地址,重复输出过程。如果完毕,结束DMA请求,交出系统总线。

7.19 DMA控制器8237A何时作为主模板工作?何时作为从模板工作?在这两种情况下,个控制信号处于什么状态?试做说明。

7.20 8237A有哪几种工作模式?各自用在什么场合? 7.23 DMA控制器8237的优先权管理?

解:两种:固定优先权,通道0优先权最高,通道3最低。

另一种方式是 优先权旋转,在这种方式下,刚服务过的通道优先权变为最低的,其它通道的优先权也相应的旋转。

8.1 在中断响应过程中,8086CPU向8259A发出的两个INTA信号分别起什么作用? 解:CPU发出的第一个INTA脉冲告诉外部电路,其提出的中断请求已被响应,应准备将类型号发给CPU,8259A接到了这个INTA脉冲时,把中断的最高优先级请求置入中断状态寄存器(ISR)中,同时把IRR(中断请求寄存器)中的相应位复位。CPU发出的第二个INTA脉冲告诉外部电路将中断的类型号放在数据总线上。

8.2 8086CPU最多可以有多少个中断类型?按照产生中断的方法分为那两大类?

解:8086CPU最多可以有256个中断类型。按照产生中断的方法,可以分为内部中断(软件中断)和外部(硬件中断)中断两大类。

8.3 非屏蔽中断有什么特点?可屏蔽中断有什么特点?它们分别用在什么场合?

解:非屏蔽中断不受CPU中断标志的影响,无论中断标志是允许中断或禁止中断,在非屏蔽中断引线上的中断请求,CPU在当前指令执行完以后,都要响应此中断。可屏蔽中断则受中断标志影响,只是在开中断(允许中断)情况下,CPU才响应可屏蔽中断。非屏蔽中断,使用在CPU必须要响应的场合,例如电源故障等。

8.4 什么叫中断向量?它放在哪里?对应于1CH的中断向量存放在哪里?如果1CH的中断处理子程序从5110H:2030H开始,则中断向量应该怎样存放?

解:中断向量是区分不同中断和获取相应的中断服务程序的一个字节的量,它由CPU产生(对于软件中断)或由外设在中断响应周期输送至CPU的。8086在内存的前1KB有一个中断向量表,并放最多为256个中断服务程序入口。题中的中断在中断向量表中的存放,如图所示。

8.7 简述可屏蔽中断的响应过程,一个可屏蔽中断或者非屏蔽中断响应后,堆栈顶部6个单元中的内容是什么?

解:CPU响应可屏蔽中断的过程如下:(1)推入标志寄存器(2)关中断:8086在CPU响应中断后,发出中断响应信号INTA的同时,内部自动实现关中断。(3)保留断点:CPU响应中断,封锁IP+1,且把IP和CS推入堆栈保留,以备中断处理完毕后能返回主程序。(4)保护现场:为了使中断处理程序不影响主程序的运行,故要把断点处的有关的各个寄存器的内容和标志位的状态,推入堆栈保护起来。8086是由软件(即在中断服务程序中)把要用的寄存器的内容用PUSH指令推入堆栈。(5)给出中断入口,转入响应的中断服务程序:8086是由中断源提供的中断矢量形成中断入口地址(即中断服务程序的起始地址)。在中断服务程序完成后,还要做下述的(6)、(7)两步。(6)恢复现场:把所保存的各个内部寄存器的内容和标志位的状态,从堆栈弹出,送回CPU中的原来位置。这个操作在8086中也是由服务程序中用POP指令来完成的。(7)开中断与返回:在中断程序的最后,要开中断(以便CPU能响应新的中断请求)和安排一条返回指令,将堆栈内保存的IP、CS值和标志寄存器内容弹回,运行就恢复到主程序。CPU响应中断要保护标志寄存器和断点,故堆栈顶部的内容为标志寄存器IP和CS。

8.10 中断指令执行时,堆栈的内容有什么变化?中断处理子程序的入口地址是怎样得到的?

解:因为要保护现场,故堆栈中会保存现场的内容。中断处理子程序的入口地址是由中断向

本文来源:https://www.bwwdw.com/article/cpct.html

Top