微机原理及接口技术习题答案汇编.docx

上传人:b****6 文档编号:3332310 上传时间:2022-11-21 格式:DOCX 页数:43 大小:149.63KB
下载 相关 举报
微机原理及接口技术习题答案汇编.docx_第1页
第1页 / 共43页
微机原理及接口技术习题答案汇编.docx_第2页
第2页 / 共43页
微机原理及接口技术习题答案汇编.docx_第3页
第3页 / 共43页
微机原理及接口技术习题答案汇编.docx_第4页
第4页 / 共43页
微机原理及接口技术习题答案汇编.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

微机原理及接口技术习题答案汇编.docx

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

微机原理及接口技术习题答案汇编.docx

微机原理及接口技术习题答案汇编

第一章习题及答案

1.微处理器内部包含哪三大部分?

解:

运算器、控制器和寄存器组。

2.完成下列数制的转换

①10101101B=()D=()H

解:

10101101B=173D=ADH。

②0.11B=()D

解:

0.11B=0.75D。

③211.25=()B=()H

解:

211.25=11010011.01B=D3.4H。

④10111.0101B=()H=()BCD

解:

10111.0101B=17.5H=23.3125D=(00100011.0011000100100101)BCD

3.已知X=+1011010B,Y=–0011011B,设机器数为8位,分别写出X、Y的原码、反码和补码。

解:

4.已知X的真值为32,Y的真值为–19,求

解:

5.已知X=51,Y=–86,用补码完成下列运算,并判断是否产生溢出(设字长为8位)。

①X+Y②X-Y

③–X+Y④–X-Y

解:

[X]补=00110011B

[Y]补=[Y]反+1=[11010110]反+1=10101001+1=10101010B

[X+Y]补=[X]补+[Y]补=00110011B+10101010B=11011101B

X+Y=[[X+Y]补]补=[11011101]补=10100010+1=10100011B

10100011B,因为

,所以未产生溢出。

 

②11110111B,因为

,所以产生溢出。

③01110111B,因为

,所以产生溢出。

④00100011B,因为

,所以未产生溢出。

6.若使与门的输出端输出高电平,则各输入端的状态是什么?

解:

各输入端为高电平。

7.若使与非门的输出端输出低电平,则各输入端的状态是什么?

解:

各输入端为高电平。

8.如果74LS138译码器的Y4端输出低电平,则C、B、A三个输入端的状态分别是什么?

解:

C、B、A三个输入端的状态分别是‘1’,‘0’,‘0’。

 

第二章习题及答案

1.8086/8088CPU由哪两大功能部分所组成?

简述它们的主要功能?

解:

8086/8088CPU由EU和BIU两大功能部分组成。

执行单元EU主要完成指令的译码和执行。

执行单元通过EU控制电路从BIU中取出指令,经过指令译码形成各种定时控制信号,向EU内各功能部件发出相应的控制命令,以完成指令所规定的操作。

总线接口单元BIU是8086/8088同外部联系的接口。

它负责所有涉及外部总线的操作,包括取指令、读操作数、写操作数、地址转换和总线控制等。

BIU内部设置指令预取队列,每当指令队列有两个或两个以上的字节空间,且执行单元未向BIU申请读/写存储器操作数时,BIU顺序地预取后续指令的代码,并填入指令队列中。

当EU执行的是转移指令时,则BIU清除当前的指令预取队列的内容,从新的地址取回指令,并立即送到EU去执行,然后,从后续的指令序列中取回指令填满队列。

2.什么是指令流水线?

指令流水线需要哪些硬件支持?

解:

指令流水线是指8086/8088CPU内部的执行单元EU和总线接口单元BIU通过指令预取队列协同工作从而实现指令的并行执行。

指令流水线最主要的硬件支持是BIU内部的指令预取队列。

3.逻辑地址如何转换成物理地址?

已知逻辑地址为2D1EH:

35B8H,对应的物理地址是什么?

解:

逻辑地址是段基址和段内偏移地址形式的地址。

物理地址=段基址×16+段内偏移

已知逻辑地址为2D1EH:

35B8H,则对应的物理地址

4.8088和8086的指令预取队列的长度分别是多少?

解:

8088的指令预取队列的长度为4字节;8086的指令预取队列的长度为6字节。

5.简述8086/8088CPU内部的各寄存器的作用。

解:

AX、BX、CX和DX通用寄存器一般用于存放参与运算的数据或运算的结果。

SP:

用于存放堆栈栈顶的段内偏移量。

BP:

用于存放访问内存时的偏移地址。

SP和BP也可以用来存放数据,它们的默认段寄存器都是SS。

SI和DI通常在间接寻址方式中存放操作数的偏移地址。

在串操作指令中,DI的默认段寄存器是ES。

SI和DI也可以用来存放数据。

CS:

代码段寄存器,用于存放代码段的段基址。

DS:

数据段寄存器,用于存放数据段的段基址。

SS:

堆栈段寄存器,用于存放堆栈段的段基址。

ES:

附加段寄存器,用于存放附加段的段基址。

IP:

指令指针寄存器,用于存放CPU即将执行的下一条指令在代码段中的段内偏移地址。

FLAGS:

标志寄存器,用于存放指令执行结果的特征。

6.8086/8088CPU内部的状态标志寄存器共有几位标志位?

各位的含义是什么?

解:

状态标志寄存器共有9位标志位,其中包含6个状态标志位和3个控制标志位。

状态标志位:

CF(CarryFlag):

进位标志。

当算术运算结果使最高位产生进位或借位时,则CF=1;否则CF=0。

PF(ParityFlag):

奇偶标志。

若运算结果中的低8位含有偶数个1,则PF=1;否则PF=0。

AF(AuxiliarycarryFlag):

辅助进位标志。

运算过程中若D3位向D4有进位或借位时,AF=1;否则AF=0。

ZF(ZeroFlag):

零标志。

若运算结果为0,则ZF=1;否则ZF=0。

SF(SignFlag):

符号标志。

若运算结果为负,则SF=1;否则SF=0。

OF(OverflowFlag):

溢出标志。

当带符号数的补码运算结果超出机器所能表达的范围时,就会产生溢出,这时OF=1;否则OF=0。

控制标志位:

DF(DirectionFlag):

方向标志。

控制串操作指令的地址变化的方向。

当DF=0时,串操作指令的地址指针按增量变化;当DF=1时,串操作指令的地址指针按减量变化。

IF(InterruptFlag):

中断允许标志。

控制微处理器是否允许响应可屏蔽中断请求。

若IF=1,则允许响应;否则禁止响应。

TF(TrapFlag):

单步标志。

TF=1时,CPU工作在单步方式。

7.8086/8088系统中存储器的分段原则是什么?

解:

分段原则是要求段的起始单元的物理地址是16的整数倍,每段的物理长度为64KB。

8.当ALE有效时,8088的地址/数据总线上将出现什么信息?

解:

当ALE有效时,8088的地址/数据总线上将出现地址信息。

9.READY管脚的作用是什么?

解:

READY用于微处理器时序中插入等待状态。

若该引脚被置为低电平,则微处理器进入等待状态并保持空闲;若该引脚被置为高电平,则它对微处理器的操作不产生影响。

CPU在读、写操作时序中的T3时钟周期开始处,通过检测READY管脚的状态来决定是否插入TW等待时钟周期,以解决CPU与存储器或I/O接口之间速度不匹配的矛盾。

10.为什么在基于8086/8088的系统中经常需要使用缓冲器?

解:

由于基于8086/8088的系统驱动能力的不足,需要使用缓冲器。

11.8088工作在最小模式下包含哪些控制信号?

解:

最小模式下包含的控制信号有:

RD、WR、IO/M、ALE、DT/R、DEN和INTA等信号。

12.若CS=4000H,则当前代码段可寻址的存储空间范围是多少?

解:

CS=4000H时,当前代码段可寻址的存储空间范围为40000H~4FFFFH。

 

第三章习题及答案

1.什么叫寻址方式?

8086指令系统中有哪几种寻址方式?

解:

寻址方式,即获得地址的方法,主要指获得段内偏移地址的方法,段基址常采用默认方式获得。

8086CPU指令系统的寻址方式有两类:

获得指令中操作数地址的方法。

获得要执行的下一条指令的地址的方法。

8086指令系统中有8种操作数寻址方式,立即寻址。

2.下列指令中BUFF为字节类型变量,DATA为常量,指出下列指令中源操作数的寻址方式:

(1)MOVAX,1200

(2)MOVAL,BUFF

(3)SUBBX,[2000H]

(4)MOVCX,[SI]

(5)MOVDX,DATA[SI]

(6)MOVBL,[SI][BX]

(7)MOV[DI],AX

(8)ADDAX,DATA[DI+BP]

(9)PUSHF

(10)MOVBX,ES:

[SI]

解:

(1)MOVAX,1200;立即寻址

(2)MOVAL,BUFF;直接寻址

(3)SUBBX,[2000H];直接寻址

(4)MOVCX,[SI];寄存器间接寻址

(5)MOVDX,DATA[SI];寄存器相对寻址

(6)MOVBL,[SI][BX];基址变址寻址

(7)MOV[DI],AX;寄存器寻址

(8)ADDAX,DATA[DI+BP];基址变址相对寻址

(9)PUSHF;隐含寻址

(10)MOVBX,ES:

[SI];寄存器间接寻址

3.指出下列指令的错误并改正。

(1)MOVDS,1200

(2)MOVAL,BX

(3)SUB33H,AL

(4)PUSHAL

(5)MUL45H

(6)MOV[BX],[SI]

(7)MOVSBYTEPTRDS:

[DI],BYTEPTRDS:

[SI]

(8)ADDDATA[DI+BP],ES:

[CX]

(9)JMPBYTEPTR[SI]

(10)OUT3F8H,AL

解:

(1)MOVDS,1200;不能用立即数给段基址寄存器赋值

(2)MOVAL,BX;操作数类型不一致

(3)SUB33H,AL;立即数不能作为目的操作数

(4)PUSHAL;压栈指令的操作数必须是字类型

(5)MUL45H;乘法指令中的操作数不能是立即数

(6)MOV[BX],[SI];源和目的操作数不能同时为内存操作数

(7)MOVSBYTEPTRDS:

[DI],BYTEPTRDS:

[SI];目的操作数应该在ES段。

(8)ADDDATA[DI+BP],ES:

[CX];CX不能做间址寄存器使用

(9)JMPBYTEPTR[SI];操作数必须是字类型

(10)OUT3F8H,AL;16位的端口地址不能直接在输入输出指令中使用。

4.根据要求写出一条(或几条)汇编语言指令。

(1)将立即数4000H送入寄存器BX。

(2)将立即数4000H送入段寄存器DS。

(3)将变址寄存器DI的内容送入数据段中2000H的存储单元。

(4)把数据段中2000H存储单元的内容送段寄存器ES。

(5)将立即数3DH与AL相加,结果送回AL。

(6)把BX与CX寄存器内容相加,结果送入BX。

(7)寄存器BX中的低4位内容保持不变,其他位按位取反,结果仍在BX中。

(8)实现AX与-128的乘积运算。

(9)实现CX中高、低8位内容的交换。

(10)将DX中D0、D4、D8位置1,其余位保持不变。

解:

(1)将立即数4000H送入寄存器BX。

MOVBX,4000H

(2)将立即数4000H送入段寄存器DS。

MOVAX,4000H

MOVDS,AX

(3)将变址寄存器DI的内容送入数据段中2000H的存储单元。

MOV[2000H],DI

(4)把数据段中2000H存储单元的内容送段寄存器ES。

MOVAX,[2000H]

MOVES,AX

(5)将立即数3DH与AL相加,结果送回AL。

ADDAL,3DH

(6)把BX与CX寄存器内容相加,结果送入BX。

ADDBX,CX

(7)寄存器BX中的低4位内容保持不变,其他位按位取反,结果仍在BX中。

MOVAX,BX,

NOTAX

ANDAX,0FFF0H

ANDBX,000FH

ORBX,AX

(8)实现AX与-128的乘积运算。

MOVBX,-128

IMULBX

(9)实现CX中高、低8位内容的交换。

MOVAL,8

ROLCXAL

(10)将DX中D0、D4、D8位置1,其余位保持不变。

0RDX,0111H

5.设SS=2000H,SP=1000H,SI=2300,DI=7800,BX=9A00H。

说明执行下面每条指令时,堆栈内容的变化和堆栈指针的值。

PUSHSI

PUSHDI

POPBX

解:

PUSHSI

(0FFFH)=23H

(0FFEH)=00H

SP=0FFEH

PUSHDI

(0FFDH)=78H

(0FFCH)=00H

SP=0FFCH

POPBX

BX=7800H

SP=0FFEH

6.内存中18FC0H、18FC1H、18FC2H单元的内容分别为23H、55、5AH,DS=1000H,BX=8FC0H,SI=1,执行下面两条指令后AX=?

DX=?

MOVAX,[BX+SI]

LEADX,[BX+SI]

解:

AX=5A55H

DX=8FC1H

7.回答下列问题:

(1)设AL=7FH,执行CBW指令后,AX=?

(2)设AX=8A9CH,执行CWD指令后,AX=?

DX=?

解:

(1)设AL=7FH,执行CBW指令后,AX=007FH

(2)设AX=8A9CH,执行CWD指令后,AX=8A9CHDX=FFFFH

8.执行以下两条指令后,FLAGS的6个状态标志位的值是什么?

MOVAX,847BH

ADDAX,9438H

结果为118B3H

解:

CF=1PF=0(为运算结果的低8位奇偶)AF=1ZF=0SF=0OF=1

 

9.下面程序段将03E8H转换成十进制数并显示,填写指令后的空格。

MOVAX,03E8H;AH=03H,AL=E8H

MOVCX,4

MOVDI,2000H;DI=2000H

MOVBX,10;BH=00,BL=0AH

GO0:

SUBDX,DX;CF=0,ZF=1

DIVBX;AX=64H,DX=0

MOV[DI],DL;[DI]=0

INCDI

LOOPGO0;CX=3

MOVCX,4

GO1:

DECDI;DI=2003H

MOVDL,[DI];DL=01

ORDL,30H;DL=31H

MOVAH,02;显示1位十进制数1

INT21H

LOOPGO1

10.用串操作指令替换以下程序段:

ABC:

MOVAL,[SI]

MOVES:

[DI],AL

INCSI

INCDI

LOOPABC

解:

REPMOVSB

11.设AX=AAH,顺序执行下列各条指令,填写空格。

(1)XORAX,0FFFFH;AX=

(2)ANDAX,13A0H;AX=

(3)ORAX,25C9H;AX=

(4)TESTAX,0004H;AX=

解:

(1)XORAX,0FFFFH;AX=FF55H

(2)ANDAX,13A0H;AX=00A0H

(3)ORAX,25C9H;AX=25EBH

(4)TESTAX,0004H;AX=00AAH

12.试写出执行下列3条指令后BX寄存器的内容。

MOVCL,2H

MOVBX,CO2DH

SHRBX,CL

解:

BX=300BH

13.执行下列程序段后,AX、BX的内容各是什么?

(1)MOVAX,0001H

MOVBX,8000H

NEGAX;0-0001H

MOVCX,4

AA:

SHLAX,1

RCLBX,1

LOOPAA

HLT

解:

AX=FFF0HBX=000FH

    

(2)MOVAX,0

    MOVBX,1

    MOVCX,100

    A:

ADDAX,BX

    INCBX

    LOOPA

    HLT

解:

AX=8080HBX=0101H

14.编写程序段,实现下述要求:

(1)使AX寄存器的低4位清0,其余位不变。

(2)使BX寄存器的低4位置1,其余位不变。

(3)测试AX的第0位和第4位,两位都是1时将AL清0。

(4)测试AX的第0位和第4位,两位中有一个为1时将AL清0。

解:

(1)使AX寄存器的低4位清0,其余位不变。

ANDAX,0FFF0H

(2)使BX寄存器的低4位置1,其余位不变。

ORAX,0FH

(3)测试AX的第0位和第4位,两位都是1时将AL清0。

TESTAX,01H

JZAA

TESTAX,10H

JZAA

MOVAL,0

HLT

AA:

......

(4)测试AX的第0位和第4位,两位中有一个为1时将AL清0。

TESTAX,11H

JZAA

MOVAL,0

AA:

.......

15.编写程序段,完成把AX中的16进制数转换为ASCII码,并将对应的ASCII码依次存入MEM开始的存储单元中。

例如,当AX的内容为37B6H时,MEM开始的4个单元的内容依次为33H,37H,42H,36H。

解:

MOVCX,4

LEASI,MEM

ADDSI,3;SI指向MEM+3

CC:

MOVBX,AX;保存原始数据

ANDAX,000FH;取个位数

CMPAL,9

JAAA;在A~B之间就加37H

ADDAL,30H;在0~9之间就加30H

JMPBB

AA:

ADDAL,37H

BB:

MOV[SI],AL;保存ASCII值

DECSI

PUSHCX

MOVAX,BX

MOVCL,4

SHRAX,CL;准备取下一个数

POPCX

LOOPCC

16.编写程序段,求从TABLE开始的10个无符号数的和,结果放在SUM单元中。

解:

LEASI,TABLE

MOVCX,10

XORAX,AX

NEXT:

ADDAL,[SI]

ADCAH,0

INCSI

LOOPNEXT

MOVSUM,AX

17.编写程序段,从键盘上输入字符串‘HELLO’,并在串尾加结束标志‘$’。

解:

LEADX,STRING;设置字符串存放缓冲区首地址

MOVAH,0AH;调用10号功能,输入字符串

INT21H

MOVCL,STRING+1;实际键入的字符个数送CL

XORCH,CH

ADDDX,2

ADDDX,CX;得到字符串尾地址

MOVBX,DX

MOVBYTEPTR[BX],'$'

18.编写程序段,在屏幕上依次显示1、2、3、A、B、C。

解:

LEABX,STR;STR为6个字符的存放区域首地址

MOVCX,6

LPP:

MOVAH,2

MOVDL,[BX]

INCBX

INT21H;利用2号功能调用依次先生6个字符

LOOPLPP

19.编写程序段,在屏幕上显示字符串“HelloWorld”。

解:

LEADX,STRING;STRING字符的存放区域首地址

MOVAH,09H

INT21H;利用9号功能调用显示字符串

20.编写程序段,把内存中首地址为MEM1的200个字节送到首地址为MEM2的区域。

解:

MOVAX,SEGMEM1

MOVDS,AX;设定源串段地址

MOVAX,SEGMEM2

MOVES,AX;设定目标串段地址

MOVSI,0;设定源串偏移地址

MOVDI,0;设定目标串偏移地址

MOVCX,200;串长度送CX

CLD;(DF)=0,使地址指针按增量方向修改

REPMOVSB;每次传送一个字节,并自动

HLT

21.编写程序段,以4000H为起始地址的32个单元中存有32个有符号数,统计其中负数的个数,并将统计结果保存在BUFFER单元中。

解:

START:

MOVDI,OFFSETBUFFER

XORAL,AL

MOV[DI],AL

MOVSI,4000H

MOVCX,32

AA:

MOVAL,[SI]

ORAL,AL

JNSX1

INC[DI]

X1:

INCSI

NEXT:

LOOPAA

HLT

 

第四章习题及答案

1.什么叫汇编?

汇编语言源程序的处理过程是什么?

解:

任何CPU都只能执行机器语言程序。

汇编语言不是机器语言,汇编语言程序必须通过具有“翻译”功能的系统程序的处理,处理的过程称为汇编。

汇编语言源程序经过汇编生成机器语言目标程序,简称目标程序。

目标程序经过连接程序连接,就得到可执行的机器语言程序文件。

2.汇编语言的语句类型有哪些?

各有什么特点?

解:

汇编语言的语句类型有两种:

指示性语句和指令性语句。

指示性语句可以位于任何段中,指令性语句必须位于代码段内。

●指示性语句

又称为伪操作语句,它不是8088/8086CPU的指令,它与汇编程序(assembler)有关。

指示性语句的功能主要是变量定义、为数据分配存储空间、告诉汇编程序如何对源程序汇编等。

源程序汇编后指示性语句不生成目标代码,所以常被称为伪指令。

●指令性语句

指令性语句是可执行语句,是8088/8086CPU的指令。

源程序汇编后指令性语句生成目标代码。

第3章中介绍的所有指令都是指令性语句的主体,其操作数最多只能有两个。

3.汇编语言源程序的基本结构是什么?

解:

汇编语言源程序由若干段组成:

数据段、附件数据段、堆栈段和代码段等,段与段之间的顺序可以随意排列,每一段由SEGMENT开始,以ENDS结束,每段的开始和结束都附有相同的名字。

一个程序一般定义三个段:

数据段、堆栈段和代码段,必要时增加定义附加数据段,能独立运行的程序至少包含一个代码段。

4.写出完成下述要求的变量定义的语句:

(1)为缓冲区BUFF保留200个字节的内存空间

(2)将字符串’BYTE’,’WORD’存放于某数据区

(3)在数据区中存入下列5个数据:

2040H,0300H,10H,0020H,1048H

解:

(1)为缓冲区BUFF保留200个字节的内存空间

BUFFDB200DUP(?

(2)将字符串’BYTE’,’WORD’存放于某数据区

DB‘BYTE’,’WORD’

(3)在数据区中存入下列5个数据:

2040H,0300H,10H,0020H,1048H

DW2040H,0300H,10H,0020H,1048H

 

5.

画出下面数据段汇编后的内存图,并标出变量的位置。

DATASEGMENT

AAEQU78H

AA0DB09H,-2,45H,2DUP(01H,?

),’AB’

A

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

当前位置:首页 > 小学教育 > 语文

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

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