微机原理与接口技术课后习题答案周明德.docx

上传人:b****8 文档编号:28417168 上传时间:2023-07-13 格式:DOCX 页数:36 大小:131.31KB
下载 相关 举报
微机原理与接口技术课后习题答案周明德.docx_第1页
第1页 / 共36页
微机原理与接口技术课后习题答案周明德.docx_第2页
第2页 / 共36页
微机原理与接口技术课后习题答案周明德.docx_第3页
第3页 / 共36页
微机原理与接口技术课后习题答案周明德.docx_第4页
第4页 / 共36页
微机原理与接口技术课后习题答案周明德.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术课后习题答案周明德.docx

《微机原理与接口技术课后习题答案周明德.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课后习题答案周明德.docx(36页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术课后习题答案周明德.docx

微机原理与接口技术课后习题答案周明德

第一章

1.1IA-32结构微处理器直至Pentillm4,有哪几种?

解:

80386、30486、Pentium、PentiumPro、PeruiumII、PentiumIII、Pentium4。

1.6微处理器、微型计算机和微型计算机系统三者之间有什么不同?

解:

把CPU(运算器和控制器)用大规模集成电路技术做在一个芯片上,即为微处理

器。

微处理器加上一定数量的存储器和外部设备(或外部设备的接口)构成了微型

计算机。

微型计算机与管理、维护计算机硬件以及支持应用的软件相结合就形成

了微型计算机系统。

1.7CPU在内部结构上由哪几部分组成?

CPU应该具备哪些主要功能?

解:

CPU主要由起运算器作用的算术逻辑单元、起控制器作用的指令寄存器、指

令译码器、可编程逻辑阵列和标志寄存器等一些寄存器组成。

其主要功能是进行

算术和逻辑运算以及控制计算机按照程序的规定自动运行。

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

解:

采用总线结构,扩大了数据传送的灵活性、减少了连线。

而且总线能够标准

化,易于兼容和工业化生产。

1.9数据总线和地址总线在结构上有什么不同之处?

如果一个系统的数据和地

址合用一套总线或者合用部分总线,那么要靠什么来区分地址和数据?

解:

数据总线是双向的(数据既能够读也能够写),而地址总线是单向的。

8086CPU

为了减少芯片的引脚数量,采用数据与地址线复用,既作数据总线也作为地址总

线。

它们主要靠信号的时序来区分。

一般在读写数据时,总是先输出地址(指定要

读或写数据的单元),过一段时间再读或写数据。

1.13在给定的模型中,写出用累加器的办法实现15×15的程序。

解:

LD

LD

A,0

H,15

A,15

H

LOOP:

ADD

DEC

JP

NZ,LOOP

HALT

第二章

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

解:

IA一32结构支持3种操作模式:

保护模式、实地址模式和系统管理模式。

操作

模式确定哪些指令和结构特性是能够访问的。

2.8IA-32结构微处理器的地址空间如何形成?

解:

由段寄存器确定的段基地址与各种寻址方式确定的有效地址相加形成了线性

地址。

若末启用分页机制,线性地址即为物理地址;若启用分页机制,则它把线

1

性地址转为物理地址。

2.158086微处理器的总线接口部件由哪几部分组成?

解:

8086微处理器中的总线接口单元(BIU)负责CPU与存储器之间的信息传送。

体地说,BIU既负责从内存的指定部分取出指令,送至指令队列中排队(8086的指

令队列有6个字节,而8088的指令队列只有4个字节);也负责传送执行指令时所需

的操作数。

执行单元(EU)负责执行指令规定的操作。

2.16段寄存器CS=120OH,指令指针寄存器IP=FFOOH,此时,指令的物理地址为多

少?

解:

指令的物理地址=1H+FFOOH=21FOOH

第三章

3.1分别指出下列指令中的源操作数和目的操作数的寻址方式。

(1)MOVSI,

(2)MOVCX,

(3)ADDAX,

(4)ANDAX,

30O

DATA[DI]

[BX][SI]

CX

(5)MOV[BP],AX

(6)PUSHF

解:

(1)源操作数为立即寻址,目的操作数为寄存器寻址。

(2)源操作数为变址寄存器加位移量寻址,目的操作数为寄存器寻址。

(3)源操作数为基址加变址寻址,目的操作数为寄存器寻址。

(4)源操作数和目的操作数都为寄存器寻址。

(5)源操作数为寄存器寻址,目的操作数为寄存器间接寻址。

(6)为堆栈操作。

3.2试述指令MOVAX,H和MOVAX,DS:

[H]的区别。

解:

前一条指令是立即寻址,即把立即数H传送至寄存器AX。

后一条指令是直

接寻址,是把数据(DS)段中的地址为200OH单元的内容传送至寄存器AX。

3.3写出以下指令中内存操作数的所在地址。

(1)MOVAL,[BX+10]

(2)MOV[BP+10],AX

(3)INCBYTEPTR[SI十5]

(4)MOVDL,ES:

[BX+SI]

(5)MOVBX,[BP+DI+2]

解:

(1)数据段BX+10单元。

(2)堆栈段BP+10单元。

(3)数据段SI+5字节单元。

(4)附加段(ES段)BX+SI单元。

2

(5)堆栈段BP+DI+2单元。

3.4判断下列指令书写是否正确。

(1)MOV

(2)MOV

AL,BX

AL,CL

(3)INC

(4)MOV

(5)MOV

(6)M0V

(7)MOV

(8)POP

[BX]

5,

AL

[BX],[SI]

BL,

DX,

CS

OF5H

H

(9)PUSHCS

解:

(l)不正确,AL与BX数据宽度不同。

(2)正确。

(3)不正确,因为不明确是增量字节还是字。

(4)不正确,立即数不能作为目的操作数。

(5)不正确,因为不明确要传送的是字节还是字。

(6)正确。

(7)正确。

(8)不正确,CS不能作为:

pop指令的操作数。

(9)不正确,CS不能作为PUSH指令的操作数。

3.5设堆钱指针SP的初值为1000H,AX=H,BX=3000H,试问:

(1)执行指令PUSHAX后SP的值是多少?

(2)再执行PUSHBX及POPAX后,SP、AX和BX的值各是多少?

解:

(1)SP=OFFEH。

(2)SP=OFFEH;AX=3000H,BX=3000H。

3.6要想完成把[3000H]送[H]中,用指令:

MOM[200OH],[300OH]

是否正确?

如果不正确,应该用什么方法实现?

解:

不正确。

正确的方法是:

MOV

MOV[H],AL

AL,

[300OH]

3.7假如想从200中减去AL中的内容,用SUB200,AL是否正确?

如果不正确,应该

用什么方法?

3

解:

不正确。

正确的方法是:

MOV

SUB

BL,200

BL,AL

3.8试用两种方法写出从8OH端口读入信息的指令。

再用两种方法写出从4OH口

输出10OH的指令。

解:

(1)IN

(2)MOVDX,8OH

AL,DX

AL,80H

IN

(3)MOVAL,lOOH

OUT40H,AL

(4)MOVAL,10OH

MOVDX,4OH

OUTDX,AL

3.9假如:

AL=20H,BL=1OH,当执行CMPAL,BL后,问:

(1)AL、BL中的内容是两个无符号数,比较结果如何?

影响哪儿个标志位?

(2)AL、BL中的内容是两个有符号数,结果又如何,影响哪几个标志位?

解:

(l)AL=2OH,BL=1OH,O=0,S=0,Z=0,A=0,P=0,C=0。

(2)因为两个都是符号正数,其结果与(l)相同。

3.10若要使AL×10,有哪几种方法,试编写出各自的程序段?

解:

(1)使用乘法指令:

MOVBL,10

MULBI,

(2)使用移位指令:

SHLAL,1

MOVBL,AL

SHLAL,2

ADDAL,BL

(3)使用加法指令:

ADDAL,AL

MOVBL,AL

ADDAL,AL

ADDAL,AL

ADDAL,BL

4

3.118086汇编语言指令的寻址方式有哪几类?

哪种寻址方式的指令执行速度快?

解:

寻址方式分为:

立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻

址方式。

其中,寄存器操作数寻址方式的指令执行速度最快。

3.12在直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?

如果要用某个段寄存器指出段地址,指令中应该如何表示?

解:

默认的数据访问,操作数在DS段;堆栈操作在SS段;串操作源操作数(SI)在DS

段,目的操作数(DI)在ES段;用BP作为指针在SS段。

如果要显式地指定段地址,

则在操作数中规定段寄存器。

例如:

MOVAX,ES:

(BX+10H)

3.13在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么如何

确定段地址?

解:

在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,段地址是隐含

约定的,也就是隐含地选择段寄存器。

如操作类型为指令,则指定代码段寄存器CS,

如操作类型为堆栈操作,则指定堆找段寄存器SS,…,如表3-1中所示。

当需要超越

约定时,一般见段替代前缀加冒号":

"来表示段超越,它允许程序设计者偏离任何

约定的段。

例如:

MOVES:

[BX],AX

这时数据将从寄存器EAX传送至附加段中由EBX寻址的存储单元,而不是传送到数

据段中。

3.14采用寄存器间接寻址方式时,BX、BP、SI、DI分别针对什么情况来使用?

4个寄存器组合间接寻址时,地址是怎样计算的?

请举例说明。

解:

在寄存器间接寻址方式下,BX和BP作为间址寄存器使用,而SI、DI作为变址寄

存器使用。

除BP间址默认的段为堆栈段,其它的都默认为数据段。

它们都能够单

独使用,或加上偏移量或组合使用。

如:

[BX+n]

[BP+n]

[SI+n]

[DI+n]

5

[BX+SI+n]

[BX+DI+n]

[BP+SI+n]

[BP+DI+n]

3.15设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的

具体操作:

MOVBYTEPTR[BP],200

MOVWORDPTR[BX],

解:

前一条指令是把立即数(应是字节)200,传送至堆栈段(BP的默认段〉偏移量由

BP规定的字节单元,地址为:

5H+620OH=58200H。

第二条指令是把立即数.,

传送至数据段(BX的默认段)偏移量由BX规定的字单元,地址为:

21000H+1400H=

22400H。

3.16使用堆钱操作指令时要注意什么问题?

传送指令和交换指令在涉及内存操

作数时应该分别要注意什么问题?

解:

使用堆栈指令能够把内存单元作为一个操作数(从内存到内存)。

但堆栈固定

在堆栈段且只能由SP指向。

且堆栈操作要修改堆核指针。

MOV指令不能实现内存

单元间的数据传送。

XCHG指令是交换,有一个操作数必须是寄存器。

3.17下面这些指令中哪些是正确的?

哪些是错误的?

若是错误的,请说明原因。

(1)XCHGCS,

AX

[1000]

IP

(2)MOV

[BX],

(3)XCHGBX,

(4)PUSHCS

(5)POP

(6)IN

CS

BX,DX

BYTE[BX],100O

(7)MOV

(8)MOV

CS,

[1000]

解:

(l)错误,CS不能交换。

(2)错误,MOV指令不能在内存间传送。

(3)错误,IP不能交换。

(4)错误,CS能够作为PUSH指令的操作数。

(5)错误,CS能够作为POP指令的操作数。

(6)错误,IN指令的目的操作数是累加器。

(7)错误,目的操作数是字节单元。

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

3.18以下是格雷码的编码表

O

1

2

3

4

0000

0001

0011

0010

0110

6

5

6

7

8

0111

0101

0100

1100

请用换码指令和其它指令设计一个程序段,以实现由格雷码向ASCII码的转换。

解:

MOVBX,TABLE

MOVSI,ASCII_TAB

MOVAL,0

MOVCX,10

TRAN:

XLATTABLE

MOVDL,AL

ADDDL,30H

MOV[SI],DL

INCAL

LOOPTRAN

3.19使用乘法指令时,特别要注意先判断是用有符号数乘法指令还是用无符号

数乘法指令,这是为什么?

解:

因为有符号数和无符号数,其数的乘法是一样的。

但结果的符号取决于两个

操作数的符号。

3.20字节扩展指令和字扩展指令一般用在什么场合?

举例说明。

解:

主要用于字节相除和字相除之前,把被除数扩展为两倍宽度的操作数。

3.21什么叫BCD码?

什么叫组合的BCD码?

什么叫非组合的BCD码?

8086汇编语言在

对BCD码进行加、减、乘、除运算时,采用什么方法?

解:

BCD码为十进制编码的二进制数。

组合的BCD数是把两位BCD加在一个字节中,

高位的在高4位。

非组合的BCD码是把一位BCD数放在一个字节的低4位,高4位为0。

8086在BCD加、减和乘法运算以后用BCD调整指令把结果调整为正确的BCD数。

BCD除法之前先用BCD调整指令再做除法.

3.22用普通运算指令执行BCD码运算时,为什么要进行十进制调整?

具体地讲,

在进行BCD码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整

指令?

解:

因为8086指令把操作数作为二进制数进行二进制运算,要得到正确的BCD结

果,需要进行调整。

在加、减、乘法指令之后加上BCD调整指令,而在除法指令之

前先用BCD调整指令再用除法指令。

第四章

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

MOVAL,

MOVCX,

MOVBX,H

1OH

100OH

7

MOV[CX],AL

XCHGCX,BX

MOVDH,

MOVDL,

XCHGCX,

[BX]

01H

BX

MOV[BX],DL

HLT

解:

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

AL=1OH

BL=OOH

BH=2OH

CL=OOH

CH=1OH

DH=1OH

(10O0H)=lOH

(200OH)=0lH

2.要求同题4.1,程序如下:

MOVAL,50H

MOVBP,100OH

MOVBX,200OH

MOV[BP],AL

MOVDH,20H

MOV[BX],DH

MOVDL,OlH

MOVDL,[BX]

MOVCX,300OH

HLT

解:

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

AL=5OH

BL=OOH

BH=20H

CL=OOH

CH=30H

DL=20H

DH=2OH

BP=100OH

(10OOH)=5OH

(20OOH)=20H

4.3自1000H单元开始有一个100个数的数据块,若要把它传送到自200OH开始的

储区中去,能够采用以下3种方法实现,试分别编制程序以实现数据块的传送。

(l)不用数据块传送指令

(2)用单个传送的数据块传送指令

(3)用数据块成组传送指令。

8

解:

(1)

LEASI,1OOOH

LEADI,200OH

MOVCX,100

L1:

MOVAX,[SI]

MOV[DI],AX

LOOPLl

HLT

(2)

LEASI,100OH

LEADI,H

MOVCX,100

CLD

L1:

MOVSB

LOOPL1

HLT

(3)

LEASI,100OH

LEADI,200OH

MOVCX,100

CLD

REPMOVSB

HLT

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

1070H开始的存储区中去。

解:

LEASI,100OH

LEADI,1070H

MOVCX,100

CLD

REPMOVSB

HLT

4.5要求同题4.4,源地址为2050H,目的地址为H,数据块长度为50。

解:

LEASI,205OH

LEADI,200OH

MOVCX,50

CLD

REPMOVSB

HLT

4.6编写一个程序,把自100OH单元开始的100个数传送'至105OH开始的存储区

中(注意:

数据区有重叠)。

解:

LEASI,100OH

9

LEADI,1050H

ADDSI,63H

ADDDI,63H

MOVCX,100

STD

REPMOVSB

HLT

4.7在自0500H单元开始,存有100个数。

要求把它传送到1000H开始的存储区中,

但在传送过程中要检查数的值,遇到第一个零就停止传送。

解:

LEASI,050OH

LEADI,10OOH

MOVCX,100

N1:

MOVAL,[SI]

CMPAL,0

JZ

N2

MOV[DI],AL

INCSI

INCDI

LOOPN1

N2:

HLT

4.14若在0500H单元中有一个数x:

(1)利用加法指令把它乘2,且送回原存储单元(假定X×2后仍为一个字节);

(2)X×4;

(3)X×10(假定X×l0≤255)。

解:

(1)LEABX,050OH

MOVAL,[BX]

ADDAL,AL

MOV[BX],AL

(2)LEABX,0500H

MOVAL,[BX]

ADDAL,AL

ADDAL,AL

MOV[BX],AL

(3)LEABX,050OH

MOVAL,[BX]

ADDAL,AL

MOVDL,AL

ADDAL,AL

ADDAL,AL

10

ADDAL,DL

MOV[BX],AL

第五章

5.1总线周期的含义是什么?

8086/8088CPU的基本总线周期由几个时钟组成?

如果一个CPU的时钟频率为8MHz,那么,它的一个时钟周期是多少?

一个基本总线

周期是多少?

如果主频为5MHz呢?

解:

CPLI访问总线(从内存储器或I/0端口读/写字节或字)所需的时间称为总线

周期。

8086/8088CPU的基本总线周期由4个时钟组成。

若CPU的时钟频率为8(5)MHz,

时钟周期为1/8MHz=125(1/5MHz=2O)ns,基本总线周期为

5.2在总线周期的TI、T2、T3、T4状态,CPU分别执行什么动作?

什么情况下需要

插入等待状态Tw?

Tw在哪儿插入?

怎样插入?

解:

下面以存储器读为例进行说明。

在Tl周期:

输出地址信号、地址锁存允许信号、内存或I/O端口访问控制信号;

在T2周期:

CPIJ开始执行数据传送操作,此时,8086CPU内部的多路开关进行切换,

将地址/数据线AD15~AD0上的地址撤销,切换为数据总线,为读写数据

作准备。

8288总线控制器发出数据总线允许信号和数据发送/接收控制

信号DT/R允许数据收发器工作,使数据总线与8086CPU的数据线接通,

并控制数据传送的方向。

同样,把地址/状态线A19/S6~A16/S3切换成与

总线周期有关的状态信息,指示若干与周期有关的情况。

在T3周期:

开始的时钟下降沿上,8086CPU采样READY线。

如果READY信号有效(高电

平),则在T3状态结束后进人TA状态。

在T4状态开始的时钟下降沿,把数

据总线上的数据读入CPU或写到地址选中的单元。

在T4状态:

结束总线周期。

如果访问的是慢速存储器或是外设接口,则应该在Tl

状态输出的地址,经过译码选中某个单元或设备后,立即驱动READY信

号到低电平。

8086CPU在T3状态采样到READY信号无效,就会插入等待周

期Tw,在Tw状态CPU继续采样READY信号;直至其变为有效后再进人T4状

态,完成数据传送,结束总线周期。

在T4状态,8086CPU完成数据传送,

状态信号S2~S0。

变为无操作的过渡状态。

在此期间,8086CPU结束总

线周期,恢复各信号线的初态,准备执行下一个总线周期。

第六章

6.1若有一单板机,具有用8片2114构成的4KBRAM,连线如图创所示。

11

若以每1KBRAM作为一组,则此4组RAM的基本地址是什么?

地址有没有重叠区?

一组的地址范围为多少?

解:

RAM的基本地址为:

第一组

第二组

第三组

第四组

OOOOH~03FFH

4000H~43FFH

8000H~83FFH

COOOH~C3FFH

地址有重叠区。

每一组的地址范围为OOOH~3FFH(1024个字节)。

6.4若要扩充1KBRAM(用2114片子),规定地址为8000H~83FFH,地址线应该如何

连接?

解:

扩充lKBRAM至规定地址8000H~83FFH,其地址线的低10位接芯片,高6位地

址(Al5~A10=100000)产生组选择信号。

第七章

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

解:

因为外部设备种类繁多,输入信息可能是数字量、模拟量或开关量,而且输

入速度、电平、功率与CPU差距很大。

因此,一般要经过接口电路与主机系统相连。

7.4CPU和输入输出设备之间传送的信息有哪几类?

解:

CPU和输入输出设备之间传送的信息主要有3类。

(l)数据

在微型计算机中,数据一般为8位、16位或32位。

(2)状态信息

在输入时,有输入设备的信息是否准备好;在输出时有输出设备是否有空,若输出

设备正在输出信息,则以忙指示等。

(3)控制信息

12

例如,控制输入输出设备启动或停止等。

7.9设一个接口的输入端口地址为0100H,状态端口地址为0104H,状态端口中第

5位为1表示输入缓冲区中有一个字节准备好,能够输入。

设计具体程序以实现查

询式输入。

解:

查询输入的程序段为:

POLl:

INAL,0104H

ANDAL,20H

JZPOLl

INAL,0100H

第八章

8.1在中断响应过程中,8086CPU向8259A发出的两个RT互信号分别起什么作用?

解:

CPU发出的第一个INTA脉冲告诉外部电路,其提出的中断请求已被响应,应

准备将类型号发给CPU,8259A接到了这个INTA脉冲时,把中断的最高优先级请求

置入中断状态寄存器(ISR)中,同时把IRR(中断请求寄存器)中的相应位复位。

CPU

发出的第二个INTA脉冲告诉外部电路将中断的类型号放在数据总线上。

8.28086CPU最多能够有多少个中断类型?

按照产生中断的方法分为哪两大类?

解:

8086CPU最多能够有256个中断类型。

按照产生中断的方法,能够分为内部中

断(软件中断)和外部(硬件中断)中断两大类。

8.9在编写中断处理子程序时,为什么要在子程序中保护许多寄存器?

解:

因为在用户程序运行时,会在寄存器中有中间结果,当在中断服务程序中要

使用这些寄存器前要把这些寄存器的内容推至堆栈保存(称为保护现场)。

在从中

断服务程序返回至用户程序时把这些内容从堆找恢复至寄存器中(称为恢复现

场)。

8.12若在一个系统中有5个中断源,其优先权排列为:

1、2、3、4、5,它们的中

断服务程序的入口地址分别为:

3000H、302OH、3050H、3080H、30AOH。

编写一

个程序,当有中断请求CPU响应时,能用查询方式转至申请中断的优先权最高的

源的中断服务程序。

解:

若5个中断源的中断请求放在一中断状态寄存器中,按优先权分别放在状态

的7位(优先权最高)至位3中。

查询方法的程序段为:

IN

AL,

AL,

N1

STATUS

80H

CMP

JNE

JMP

IN

3000H

AL,

AL,

N2

N1:

STATUS

40H

CMP

JNE

JMP

3020H

13

N

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 艺术创意

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1