微机组成原理习题集带答案3Word格式.docx
《微机组成原理习题集带答案3Word格式.docx》由会员分享,可在线阅读,更多相关《微机组成原理习题集带答案3Word格式.docx(30页珍藏版)》请在冰豆网上搜索。
各部分由什么组成?
各部分的功能是什么?
5.8086系统中的物理地址是如何得到的?
假如CS=2500H,IP=2l00H,其物理地址是多少?
6.什么是最大模式?
什么是最小模式?
用什么方法将8086/8088置为最大模式和最小模式?
7.存储器分段组织有何优越性?
8.试述BHE与A0组合如何选择数据字?
9.CPU响应中断时,为什么要执行两个连续的中断响应周期?
答案:
1、4个通用寄存器、4个专用寄存器、1个标志寄存器和算术逻辑部件
2、1个总线、2个总线
3、64K
4、M/
5、设计
二、单项选择题
1、B2、C3、C4、D5、B6、D7、B8、D9、A10、D
1、答案:
微处理器由两部分组成,总线接口单元和执行单元
2、8086CPU的最小方式和最大方式的区别是:
最小方式,MN/MX接+5V(MX为低电平),用于构成小型单处理机系统,支持系统工作的器件:
(1)时钟发生器,8284A,
(2)总线锁存器,74LS373,(3)总线收发器,74LS245,控制信号由CPU提供。
最大方式,MN/MX接地(MX为低电平),用于构成多处理机和协处理机系统,支持系统工作的器件:
(1)时钟发生器,8284A,
(2)总线锁存器,74LS373,(3)总线收发器,74LS245,(4)总线控制芯片,8288,控制信号由8288提供。
3、答:
(1).执行一条指令所需要的时间称为指令周期;
(2).一个CPU同外部设备和内存储器之间进行信息交换过程所需要的时间称为总线周期;
(3).时钟脉冲的重复周期称为时钟周期;
(4).一个指令周期由若干个总线周期组成,一个总线周期又由若干个时钟周期组成;
(5).8086CPU的总线周期至少由4个时钟周期组成;
(6).总线周期完成一次数据传输包括:
传送地址,传送数据;
(7)等待周期----在等待周期期间,总线上的状态一直保持不变;
(8)空闲周期----总线上无数据传输操作
4、8086从功能上可分为执行单元和总线接口单元。
执行单元的功能是负责指令的执行,将指令译码并利用内部寄存器和ALU对数据进行处理。
它由4个通用寄存器(AX、BX、CX、DX),4个专用寄存器(BP、SP、SI和DI),标志寄存器和算术逻辑部件组成。
总线接口单元的功能是存储器、I/O端口传送数据。
它由4个段寄存器(CS、DS、ES、SS),指令指针寄存器IP,20位地址加法器和6个字节的指令队列组成。
5、在8086系统中,用16位的段地址和16位的偏移地址来表示20位的物理地址,物理地址=段地址*16+偏移址得到物理地址。
该题CS=2500H,IP=2l00H,则物理地址=CS*16+IP=2500H*16+2100H=27100H
6、最大模式是相对最小模式而言,系统中包含两个或多个处理品,其中一个主处理器就是8088/8086,其它处理器是协处理器,它是协助主处理器工作的。
将MN/MX*置0即为最大模式。
最小模式又是相对于最大模式,就是在系统中只有一个处理器,所有的总线控制信号都有由8088/8086产生,系统中总线控制逻辑电路少,将MN/MX*置1即为最大模式。
7、减少了指令的长度,提高了执行速度。
内存分段为程序浮动加载创造了条件。
使程序保持完整的相对性,具备了浮动性。
8、
的作用是高8位数据允许,A0=0是低8位数据允许,在T1状态时,
和A0组合起来表示连接在数据总线上的存储器和I/O端口当前的数据在总线上出现有格式。
9、CPU响应中断时,执行两个连续的中断响应周期,每个响应周期都给出中断响应信号
。
这是因为第一个总线周期通知中断请示设备,微处理器准备响应中断,应该准备好中断类型码,第二个总线周期中,微处理器接收中断类型码,以便得到中断向量,即中断服务程序的入口地址。
2.根据下列要求编写一个汇编语言程序:
:
(1)代码段的段名为COD_SG
(2)数据段的段名为DAT_SG
(3)堆栈段的段名为STK_SG
(4)变量HIGH_DAT所包含的数据为95
(5)将变量HIGH_DAT装入寄存器AH,BH和DL
(6)程序运行的入口地址为START
2、答案:
DAT_SGSEGEMNT
HIGH_DATDB95
DAT_SGENDS
;
STK_SGSEGMENT
DW64DUP(?
)
STK_SGENDS
COD_SGSEGMENT
MAINPROCFAR
ASSUMECS:
COD_SG,DS:
DAT_SG,SS:
STK_SG
START:
MOVAX,DAT-SG
MOVDS,AX
MOVAH,HIGH_DAT
MOVBH,AH
MOVDL,AH
MOVAH,4CH
INT21H
MAINENDP
COD_SGENDS
ENDSTART
3、定义一个数据段的字符变量和数据变量。
(1)TRING为字符串变量:
‘Personalcomputer’
(2)VALD为十进制数字节变量12,99
(3)VALH为十六进制数字变量32H,0FAH
(4)VALZ为10个零的字节变量
(5)VALW为20个字单元
3、答案:
DATASEGMENT
TRINGDB‘Personalcomputer’
VALDDB12,99
VALHDB32H,0FAH
VALZDB10DUP(‘0’)
VALWDW20DUP(?
5、下列标号为什么是非法的?
(1)GET.DATA
(2)1_NUM(3)TEST-DATA(4)RET(5)NEWITEM
答:
非法标号:
(1)因为‘.’只允许是标号的第一个字符
(2)第一个字符不能为数字
(3)不允许出现‘-’
(4)不能是保留字,如助记符
(5)不能有空格
6、下面的数据项设置了多少个字节?
(1)ASC_DATADB‘1234’
(2)HEX_DATADB1234H
答案:
(1)设置了4个字节
(2)设置了2个字节
7、DATASEGMENT
TABLE_ADDRDW1234H
DATAENDS
.
.
MOVBX,TABLE_ADDR
LEABX,TABLE_ADDR
请写出上述两条指令执行后,BX寄存器中的内容。
MOVBX,TABLE_ADDR;
执行后(BX)=1234H
LEABX,TABLE_ADDR;
执行后(BX)=OFFSETTABLE_ADDR
8、写出分配给下列中断类型号在中断向量表中的物理地址。
(1)INT12H
(2)INT8
(1)00048h
(2)00020h
9、AR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处。
(1)ADDVAR1,VAR2
(2)SUBAL,VAR1
(3)JMPLAB[SI](4)JNZVAR1
9、答案:
(1)源和目的不能同为内存变量
(2)两个类型不匹配
(3)LAB为标号不为符号常量
(4)JNZ可跳转到标号,不能跳转到变量。
二、填空题
1、假设(DS)=2000H,(BX)=1256H,(SI)=528FH;
位移量TABLE=20A1H,(232F7H)=3280H,(264E5H)=2450H,则
执行指令JMPBX后,(IP)=;
执行指令JMPTABLE[BX]后,(IP)=;
执行指令JMP[BX][SI]后,(IP)=。
2、在1000H单元中有一条二字节指令JMPSHORTLAB,如果其中偏移量分别为30H、6CH、0B8H,则转向地址LAB的值分别为;
;
3、数据段中有以下定义:
ARRAY1EQU16H
ARRAY2DW16H
请指出下面两条指令的寻址方式:
MOVAX,ARRAY1;
寻址方式。
MOVAX,ARRAY2;
4、下面两个语句的区别在于、。
X1EQU1000H
X2=1000H
5、指令“ANDAX,STR1ANDSTR2”中,STR1和STR2是两个已赋值的变量,两个AND的区别是、。
6、指令LOOPZ/LOOPE是结果或发生转移的指令。
而指令LOOPNZ/LOOPNE则是结果或发生转移的指令。
7、调用指令CALL可分为、、和等四种调用。
8、在汇编语言中,一个过程有NEAR和FAR两种属性。
NEAR属性表明主程序和子程序,FAR属性表示主程序和子程序。
9、串处理指令规定源寄存器使用,源串在段中;
目的寄存器使用,目的串必须在段中。
10、是过程定义结束伪指令,与配套使用。
是段定义结束伪指令,与配套使用。
填空题
1、1256H、3280H、2450H
2、1030H,106CH,10B8H
3、立即数寻址方式、直接寻址方式
4、=可以二次赋值,EQU不能直接下次赋值,如果要二次赋值,必须使用PURGE解除后才行。
5、前一个AND是一个命令,后一个AND是一个运算符。
6、相等、零,不相等,不为零
7、段内直接,段内间接,段间直接,段间间接
8、在同一个段内,不在同一个段内。
9、SI,DS,DI,ES
10、ENDP,必须与过程名,ENDS,必须与段名
三、选择题
1、执行下列程序,选择正确的结果:
MOVSP,2000H
MOVAX,0F0H
MOVSI,1234H
MOVDX,5678H
PUSHSI
POPDI
SHLDX,1
TESTAX,DX
PUSHDX
HLT
(1)SP=;
A)2000HB)1FFFH
C)2001HD)1FFEH
(2)DH内容所在存储器的偏移地址为;
A)1FFFHB)1FFEH
C)1FFDHD)1FFCH
(3)DL内容所在存储器的偏移地址为;
C)2000HD)1FFCH
(4)(AX)=;
A)0HB)78H
C)0F0HD)56H
(5)(DI)=。
A)1234HB)5678H
C)2000HD)00F0H
(6)(DX)=;
A)5678HB)0ACF0H
C)2B3CHD)0ABF0H
(7)标志位ZF=。
A)0B)1C)不定D)无值
2、下面是多字节加法程序,第一个数和是8A0BH,第二个数是D705H。
DATASEGMENT
FIRSTDB
(1),
(2),0H
SECONDDB(3),(4)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,(5)
MOVSI,0
(6)
NEXT:
MOVAL,SECOND[SI]
ADCFIRST[SI],AL
INCSI
LOOPNEXT
MOVAL,0
ADCAL,(7)
MOVFIRST[SI],AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请选择正确的答案填入空格中:
(1)A)8AHB)0BH
C)D7HD)05H
(2)A)8AHB)0BH
(3)A)8AHB)0BH
(4)A)8AHB)0BH
(5)A)3B)2
C)1D)4
(6)A)CLCB)CLD
C)STCD)CLI
(7)A)1B)-1
C)0D)0FFH
选择题
1、
(1)、D
(2)、A(3)、B(4)、C(5)、A(6)、B(7)、A
2、
(1)、B
(2)、A(3)、D(4)、C(5)、B(6)、A(7)、C
四、完成下列练习
1、设(DS)=0300H,(CS)=0200H,(IP)=0100H,(BX)=1000H,DISPLACE=2000H,(4000H)=5000H,(6000H)=8000H
确定无条件转换指令的段内转移地址
(1)JMPBX
(2)JMP[BX]
(3)JMPDISPLACE[BX]
1000H,5000H,8000H
2、设AX和BX寄存器中是有符号数,CX和DX寄存器中是无符号数,写出下列条件转移指令。
(1)CX值高于或等于DX值,则转移HIEQU
(2)AX值大于BX值,则转移GREAT
(3)CX值为0,则转移ZERO
(4)AX值小于或等于BX值,则转移SMAEQU
(5)CX值低于或等于DX值,则转移LOWEQU
(6)AX为负值,则转移NEGAT
(7)AX为偶数,则转移IMAGE
2、答案:
(1)CMPCX,DX
JNBHIEQU
HIEQU:
(2)CMPAX,BX
JGGREAT
GREAT:
(3)CMPCX,0
JZZERO
ZERO:
(4)CMPAX,BX
JLESMAEQU
SMAEQU:
(5)CMPCX,DX
JBELOWEQU
LOWEQU:
(6)CMPAX,0
JSNEGAT
NEGAT:
(7)TESTAX,AX
JPIMAGE
IMAGE:
3、写出下列串操作指令所替代的指令序列。
(1)REPMOVSB
(2)REPLODSB
(3)REPSTOSB
(4)REPSCASB
(1)MOVDS,SEGSOURCE
MOVES,SEGTDEST
MOVSI,OFFSETSOURCE
MOVDI,OFFESTDEST
MOVCX,N
AGAIN:
MOVAL,[SI]
MOVES:
[DI],AL
INCSI
INCDI
LOOPAGAIN
(2)MOVDS,SEGSOURCE
(3)MOVES,SEGTDEST
(4)MOVES,SEGTDEST
CMPAL,ES:
[DI]
LOOPAGAIN
五、是非判断题
程序在数据段中的定义如下:
DATASEGMENT
NAMESDB‘ABCD’
NAMETDW20
DATAENDS
请判断下列指令是否正确?
正确的填‘A’,错误的填‘B’。
(1)MOVBX,OFFSETNAMES()
(2)MOVAL,[BX+2]()
(3)MOVAX,NAMES()
(4)MOVAX,WORDPTRNAMES+1()
(5)MOVAL,NAMET()
(6)MOVAL,BYTEPTRNAMET()
(7)MOVAX,DATA()
(8)MOVDS,AX()
(9)MOVAX,SEGNAMES()
(10)MOVBX,DATA()
(1)A
(2)B(3)B(4)A(5)B(6)A(7)A(8)A(9)A(10)A
六、请阅读下列程序,分析其功能或结果
1、MOVAH,00
INT16H
MOVAH,0AH
MOVCX,00
MOVBH,00
INT10H
2、MOVAH,00
MOVAL,66
MOVDX,00
INT17H
MOVAH,00
MOVAL,0DH
3、MOVAH,07
MOVAL,00
MOVBL,70H
MOVCH,02
MOVCL,05
MOVDH,22
MOVDL,38
4、MESSDB‘PRESSANYKEY’,0DH,0AH,‘$’
MOVAH,09
MOVDX,SEGMESS
MOVDS,DX
MOVDX,OFFSETMESS
INT21H
5、MOVAH,2
MOVDL,1
INT21H
1、读取键盘输入,并显示在显示器上。
2、在打印机一输出字符‘B’,并回车。
3、屏幕初始化,左上角行号为2,左上角列号为5,右下角行号为22,右下角列号为38,使用整个空白窗口。
4、在屏幕上输出PRESSANYKEY并换行回车。
5、在屏幕上输出1
七、编写程序
1.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
2.编写程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示“MATCH”,若不同则显示“NOMATCH”。
3.试编写程序,要求从键盘输入3个16进制数,并根据对3个数的比较显示如下信息:
(1)如果3个数都不相等则显示0;
(2)如果3个数中有2个数相等则显示2;
(3)如果3个数都相等则显示3。
4.已知整数变量A和B,试编写完成下述操作的程序:
(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中;
(2)若两个数均为奇数,则两数分别加1,并存回原变量;
(3)若两个数均为偶数,则两变量不变。
5.把0~10010之间的30个数,存入首地址为GRAD的字数组中,GRAD+i表示学号为i+1的学生成绩。
另一个数组RANK是30个学生的名次表,其中RANK+I的内容是学号为i+1的学生的名次。
试编写程序,根据GRAD中的学生成绩,将排列的名次填入RANK数组中(提示:
一个学生的名次等于成绩高于这个学生的人数加1)。
6.试编写程序,它轮流测试两个设备的状态寄存器,只要一个状态寄存器的第0位为1,则与其相应的设备就输入一个字符;
如果其中任一状态寄存器的第3位为1,则整个输入过程结束。
两个状态寄存器的端口地址分别是0024和0036,与其相应的数据输入寄存器的端口则为0026和0038,输入字符分别存入首地址为BUFF1和BUFF2的存储区中。
7.编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。
加密表为;
输入数字:
0,1,2,3,4,5,6,7,8,9
密码数字:
7,5,9,1,3,6,8,0,2,4
1、答案:
abc:
movah,1
int21h
cmpal,’a’
jbstop
cmpal,’z’
jastop
subal,20h
movdl,al
movah,2
jmpabc
stop:
ret
datareasegment
string1db‘asfioa’
string2db‘xcviyoaf’
mess1db‘MATCH’,’$’
mess2db‘NOMATCH’,’$’
datareaends
prognamsegment
mainprocfar
assumecs:
prognam,ds:
datarea
start:
pushds
subax,ax
pushax
movax,dat