微机课后习题答案 2.docx

上传人:b****5 文档编号:6150008 上传时间:2023-01-04 格式:DOCX 页数:20 大小:29.81KB
下载 相关 举报
微机课后习题答案 2.docx_第1页
第1页 / 共20页
微机课后习题答案 2.docx_第2页
第2页 / 共20页
微机课后习题答案 2.docx_第3页
第3页 / 共20页
微机课后习题答案 2.docx_第4页
第4页 / 共20页
微机课后习题答案 2.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

微机课后习题答案 2.docx

《微机课后习题答案 2.docx》由会员分享,可在线阅读,更多相关《微机课后习题答案 2.docx(20页珍藏版)》请在冰豆网上搜索。

微机课后习题答案 2.docx

微机课后习题答案2

第1章  作业答案

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

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

处理器。

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

微型计算机。

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

成了微型计算机系统。

 

1、2CPU在内部结构上由哪几部分组成?

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

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

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

其主要功能就是进行算 

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

 

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

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

而且总线可以标准

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

1、4数据总线与地址总线在结构上有什么不同之处?

如果一个系统的数据与地址合

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

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

 

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

地址总线。

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

通常在读写数据时,总就是先输出地址

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

   第2章     作业 答案 

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

 

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

 

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

 

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

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

作模式确定哪些指令与结构特性就是可以访问的。

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

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

址。

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

址转为物理地址。

 

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

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

送。

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

(8086的指令队列有6个字节,而8088的指令队列只有4个字节);也负责传送执

行指令时所需的操作数。

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

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

多少?

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

第3章作业答案

3、1分别指出下列指令中的源操作数与目的操作数的寻址方式。

  

(1)MOVSI,30O

(2)MOV CX,DATA[DI]

 (3)ADDAX, [BX][SI]

   (4)ANDAX,CX

(5)MOV[BP], AX

   (6)PUSHF 

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

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

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

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

 

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

   (6)为堆栈操作。

3、2试述指令MOVAX,2000H与MOVAX,DSz[2000H]的区别。

  解:

前一条指令就是立即寻址,即把立即数2000H传送至寄存器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单元。

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

3、4判断下列指令书写就是否正确。

           

(1)MOVAL, BX

  

(2)MOV AL,CL 

  (3)INC[BX] 

  (4)MOV 5,AL

 (5)MOV[BX],[SI]

 (6)M0VBL,OF5H

 (7)MOV DX,2000H 

 (8)POPCS

 (9)PUSHCS 

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

 

(2)正确。

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

 

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

 

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

(6)正确。

 

  (7)正确。

 

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

pop指令的操作数。

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

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

    

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

 

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

 

(1)SP=OFFEH。

  

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

 

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

MOM[200OH],[300OH]就是否正确?

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

解:

不正确。

正确的方法就是:

  MOV AL,[300OH]

MOV[2000H],AL     

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

如果不正确,应该 

用什么方法?

 

解:

不正确。

正确的方法就是:

 

 MOV BL, 200

SUBBL,AL 

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

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

出10OH的指令。

 (1)INAL,80H

  (2)MOVDX,8OH

 IN AL,DX

  (3)MOV,AL,lOOH 

  OUT40H,AL

  4)MOVAL,10OH 

  MOVDX,4OH 

  OUT DX,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 

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]

 LBP+n]

[SI+n] 

[DI+n] 

[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],2000

  解:

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

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

52000H+620OH=58200H

 第二条指令就是把立即数.2000,传送至数据段(BX的默认段)偏移量由BX规定的 

字单元,地址为:

21000H+1400H=22400H。

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

传送指令与交换指令在涉及内存操作数

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

    解:

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

但堆栈

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

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

MOV指令不能实

   现内存单元间的数据传送。

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

3、17下面这些指令中哪些就是正确的?

哪些就是错误的?

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

  

(1)XCHGCS,AX

(2)MOV[BX],[1000]

   (3)XCHGBX, IP

 (4)PUSHCS 

 (5)POPCS

  (6)INBX, DX

 (7)MOVBYTE[BX],100O

  (8)MOVCS,  [1000] 

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

  

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

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

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

 

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

 

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

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

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

3、18 以下就是格雷码的编码表,

   O 0000

1  0001

2 0011 

3 0010

   40110

  50111 

     60101

 70100

    8 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章 作业答案

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

 MOVAL,1OH

 MOVCX, 100OH

   MOVBX, 2000H

   MOV[CX],AL

  XCHGCX, BX

 MOVDH, [BX]

   MOVDL, 01H 

 XCHGCX, BX 

    MOV[BX],DL

   HLT 

解:

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

    AL=1OH

  BL=OOH

    BH=2OH 

 CL=OOH

  CH=1OH

    DH=1OH

    (10O0H)=lOH

    (200OH)=0lH

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

   MOV AL,50H

 MOVBP, 100OH

    MOVBX,200OH

  MOV[BP],AL 

MOV DH, 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)用数据块成组传送指令。

(1) LEA SI,1OOOH

    LEADI,200OH

    MOV CX,100

  L1:

 MOV AX,[SI]

  MOV[DI],AX 

   LOOPLl

    HLT

(2)   LEASI,100OH

     LEADI,2000H

    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,目的地址为2000H,数据块长度为50.

LEASI,205OH

  LEADI,200OH

MOVCX,50

CLD 

REPMOVSB

 HLT 

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

(注意:

数据区有重叠)。

 LEASI,100OH

  LEADI,1050H

  ADDSI,63H 

 ADDDI,63H

 MOVCX,100

STD

  REPMOVSB

 HLT

4、7在自0500H单元开始,存有100个数。

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

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

          

   LEASI, 050OH

  LEADI, 10OOH

   MOVCX, 100

N1:

MOV AL,[SI] 

  CMPAL, 0

  JZN2

 MOV[DI],AL

    INCSI

  INCDI

  LOOPN1 

N2:

HLT

4、14若在0500H单元中有一个数

   

(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] 

 ADD AL,AL

    ADDAL,AL

      MOV[BX],AL 

 (3)LEABX,050OH

   MOVAL,[BX]

   ADDAL,AL

  MOVDL, AL

  ADDAL,AL

  ADDAL,AL 

ADDAL,DL

 MOV[BX],AL          

 

第5 章  作业答案

5、1总线周期的含义就是什么?

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

如果

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

一个基本总线周期就是多 

少?

如果主频为5MHz呢?

解:

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

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

若CPU的时钟频率为8(5)MHz,时钟周期为1/8MHz=125(1/5MHz=2O)ns,基本总线周期为4×125(200)ns=500(800)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结束总线周期,恢复各信号线的初态,准备执行下一个总线周期。

 

      

第7章 作业答案

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

 

解:

因为外部设备种类繁多,输入信息可能就是数字量、模拟量或开关量,而且输入速度、电平、功率与CPU差距很大。

所以,通常要通过接口电路与主机系统相连。

7、4CPU与输入输出设备之间传送的信息有哪几类?

 解:

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

 (l)数据  在微型计算机中,数据通常为8位、16位或32位。

 

 (2)状态信息在输入时,有输入设备的信息就是否准备好;在输出时有输出设备就是否有空,若输

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

 

(3)控制信息例如,控制输入输出设备启动或停止等。

 

7、9设一个接口的输入端口地址为0100H,状态端口地址为0104H,状态端口中第5位

为1表示输入缓冲区中有一个字节准备好,可以输入。

设计具体程序以实现查询式 

输入。

 POLl:

IN AL,0104H 

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

当前位置:首页 > 求职职场 > 简历

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

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