微机原理与接口技术复习题.docx
《微机原理与接口技术复习题.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术复习题.docx(42页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术复习题
微机原理复习题
一、填空题
1.在8086CPU中,由于BIU和EU分开,所以_取指___和_执指___可以重叠操作,提高了CPU的利用率;
2.8086CPU从偶地址访问内存1个字时需占用1个总线周期,而从奇地址访问内存1个字操作需占用2个总线周期。
3.IBM-PC机中的内存是按段存放信息的,一个段最大存贮空间为64K字节。
4.8086微处理机在最小模式下,用M/
来控制输出地址是访问内存还是访问I/O。
5.假设(DS)=2000H,(BX)=1256H,(SI)=528FH;位移量TABLE=20A1H,(232F7H)=3280H,(264E5H)=2450H,则
执行指令JMPBX后,(IP)=1256H;
执行指令JMPTABLE[BX]后,(IP)=3280H;
执行指令JMP[BX][SI]后,(IP)=2450H。
6.数据段中有以下定义:
ARRAY1EQU16H
ARRAY2DW16H
请指出下面两条指令的寻址方式:
MOVAX,ARRAY1;寻址方式立即数寻址方式。
MOVAX,ARRAY2;寻址方式直接寻址方式。
7.指令“ANDAX,STR1ANDSTR2”中,STR1和STR2是两个已赋值的变量,两个AND的区别是前一个AND是一个命令、后一个AND是一个运算符。
8.指令LOOPZ/LOOPE是结果相等或零发生转移的指令。
而指令LOOPNZ/LOOPNE则是结果不相等或不为零发生转移的指令。
9.串处理指令规定源寄存器使用SI,源串在DS段中;目的寄存器使用DI,目的串必须在ES段中。
10.8086CPU的9个标志位中,属状态标志的有___CF,PF,AF,SF,OF,ZF______。
11.中断类型码为6的中断向量一定存放在___4___个连续单元中,若其入口地址为3040:
2010,则这四个单元中的具体内容依次为__10,20,40,30______。
12.用2k×8的SRAM芯片组成16K×16的存储器,共需SRAM芯片__16___片,片内地址和产生片选信号的地址分别为__A0-A10和A12-A16__位。
13.8086的中断向量表位于内存的__0~1kB_区域,它可以容纳__256__个中断向量,每一个向量占__4__个字节;
14.8086CPU中典型总线周期由__4__个时钟周期组成,其中T1期间,CPU输出__地址__信息;如有必要时,可以在____T3和T4____两个时钟周期之间插入1个或多个TW等待周期。
15.阅读程序回答问题:
1)源程序如下:
MOVCL4
MOVAX[2000H]
SHLAL,CL
SHRAX,CL
MOV[2000H],AX
试问:
若程序执行前,数据段内(2000H)=09H,(2001H)=03H,
则执行后有(2000H)=__39H,(2001H)=__00H__。
本程序段的功能__将(2000H),(2001H)两相邻单元中存放的未组合型BCD码压缩成组合型BCD码,并存入(2000H)单元,0(2001H)___。
2)源程序如下:
MOVAL,0B7H
ANDAL,0DDH
XORAL,81H
ORAL,33H
JPLAB1
JMPLAB2
试问:
执行程序后AL=__37H__;程序将转到哪一个地址执行:
_LAB2__。
3)源程序如下:
MOVCX,9
MOVAL,01H
MOVSI,1000H
NEXT:
MOV[SI],AL
INCSI
SHLAL,1
LOOPNEXT
试问:
执行本程序后有:
AL=_0____;SI=___1009H___;CX=___0___;
本程序的功能是_对数据段内1000H~1008H单元置数,依次送入1,2,4,8,16,32,64,128,0共九个__。
二、选择题
1.二进制数111010.11转换成十六进制数是B。
A)3ACHB)3A.CHC)3A3HD)3A.3H
2.十六进制数1CB.D8转换成二进制数是D。
A)110001011.11001B)111101011.11101C)111101011.11101D)111001011.11011
3.对微处理器而言,它的每条指令都有一定的时序,其时序关系是C
A、一个时钟周期包括几个机器周期,一个机器周期包括几个指令周期。
B、一个机器周期包括几个指令周期,一个指令周期包括几个时钟周期。
C、一个指令周期包括几个机器周期,一个机器周期包括几个时钟周期。
D、一个指令周期包括几个时钟周期,一个时钟周期包括几个机器周期。
4.属于数据寄存器组的寄存器是C
A、AX,BX,CX,DSB、SP,DX,BP,IPC、AX,BX,CX,DXD、AL,DI,SI,AH
5.微型计算机的ALU部件是包含在D之中。
A、存贮器B、I/O接口C、I/O设备D、CPU
6.在8086和8088汇编语言中,一个字能表示的有符号数的范围是B
A、-32768≤n≤32768B、-32768≤n≤32767
C、-65535≤n≤65535D、-65536≤N≤65535
7.某数存于内存数据段中,已知该数据段的段地址为2000H,而数据所在单元的偏移地址为0120H,该数的在内存的物理地址为(B)
A.02120HB.20120HC.21200HD.03200H
8.8086/8088系统中,对存贮器进行写操作时,CPU输出控制信号有效的是(A)
A.W/
=1,
=0B.
=1C.M/
=0,
=0D.
=0
9.在8086/8088微机系统中,将AL内容送到I/O接口中,使用的指令是(D)
A.INAL,端口地址B.MOVAL,端口地址
C.OUTAL,端口地址D.OUT端口地址,AL
10.执行下列程序,选择正确的结果:
MOVSP,2000H
MOVAX,0F0H
MOVSI,1234H
MOVDX,5678H
PUSHSI
POPDI
SHLDX,1
TESTAX,DX
PUSHDX
HLT
(1)SP=D;
A)2000HB)1FFFHC)2001HD)1FFEH
(2)DH内容所在存储器的偏移地址为A;
A)1FFFHB)1FFEHC)1FFDHD)1FFCH
(3)DL内容所在存储器的偏移地址为B;
A)1FFFHB)1FFEHC)2000HD)1FFCH
(4)(AX)=C;
A)0HB)78HC)0F0HD)56H
(5)(DI)=A。
A)1234HB)5678HC)2000HD)00F0H
(6)(DX)=B;
A)5678HB)0ACF0HC)2B3CHD)0ABF0H
(7)标志位ZF=A。
A)0B)1C)不定D)无值
11.下面是多字节加法程序,第一个数是8A0BH,第二个数是D705H。
DATASEGMENT
FIRSTDBB
(1),A
(2),0H
SECONDDBD(3),C(4)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,B(5)
MOVSI,0
A(6)
NEXT:
MOVAL,SECOND[SI]
ADCFIRST[SI],AL
INCSI
LOOPNEXT
MOVAL,0
ADCAL,C(7)
MOVFIRST[SI],AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请选择正确的答案填入空格中:
(1)A)8AHB)0BHC)D7HD)05H
(2)A)8AHB)0BHC)D7HD)05H
(3)A)8AHB)0BHC)D7HD)05H
(4)A)8AHB)0BHC)D7HD)05H
(5)A)3B)2C)1D)4
(6)A)CLCB)CLDC)STCD)CLI
(7)A)1B)-1C)0D)0FFH
12.已知BX=7830H,CF=1,执行指令:
ADCBX,87CFH之后,BX=___FFFFH_____,
标志位的状态分别为CF=__1____,ZF=___1___,OF=___0____,SF=___0____。
三、是非判断题(正确的填‘A’,错误的填‘B’)
1.对于种类不同的计算机,其机器指令系统都是相同的。
(B)
2.在计算机中,数据单位bit的意思是字节。
(B)
3.程序在数据段中的定义如下:
DATASEGMENT
NAMESDB‘ABCD’
NAMETDW20
DATAENDS
请判断下列指令是否正确?
正确的填‘A’,错误的填‘B’。
(1)MOVBX,OFFSETNAMES(A)
(2)MOVAX,NAMES(B)
(3)MOVAX,WORDPTRNAMES+1(A)
(4)MOVAL,NAMET(B)
(5)MOVAL,BYTEPTRNAMET(A)
(6)MOVAX,DATA(A)
(7)MOVDS,AX(A)
(8)MOVBX,DATA(A)
4.判断下列指令书写是否正确,如有错误,指出错在何处并用正确的程序段(一条或多条指令)实现。
(1)MOVAL,BX(5)MOV[BX],[SI](9)PUSHAL
(2)MOVAL,SL(6)MOVDX,2000H(10)POP[BX]
(3)INC[BX](7)POPCS(11)PUSHIP
(4)MOV5,AL(8)MOVES,3278H(12)SHLAX,5
答:
(1)错,源操作数为字类型,目的操作数为字节类型,二者不一致。
应改为:
MOVAX,BX或MOVAL,BL;
(2)错,SI寄存器不能分为高8位和低8位使用,即没有SL寄存器。
应改为:
MOVAX,SI
(3)错,未指定操作数的类型。
应改为:
INCBYTEPTR[BX]
(4)错,目的操作数使用了立即数,在指令中一般不允许。
应改为:
MOVDS:
[5],AL
(5)错,源操作数和目的操作数均为内存单元,不允许。
应改为:
MOVAX,[SI]
MOV[BX],AX
(6)正确。
(7)错,不能将栈顶数据弹至CS中。
(8)错,立即数不能直接送ES寄存器。
应改为:
MOVAX,3278H
MOVES,AX
(9)错,栈操作不能按字节进行。
应改为:
PUSHAX
(10)正确。
(11)错,不能用IP寄存器做源操作数。
(12)错,不能用大于己于1的立即数指出移位位数。
应改为:
MOVCL,5
SHLAX,CL
五、分析及编程题
1、写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。
要求使用以下几种寻址方式:
(1)寄存器间接寻址
(2)寄存器相对寻址
(3)基址变址寻址
答:
(1)MOVBX,BLOCK
ADDBX,12
MOVDX,[BX]
(2)MOVBX,BLOCK
MOVDX,[BX+12]
(3)MOVBX,BLOCK
MOVSI,12
MOVDX,[BX+SI]
2、现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。
(1)MOVAX,1200H
(2)MOVAX,BX
(3)MOVAX,[1200H]
(4)MOVAX,[BX]
(5)MOVAX,[BX+1100]
(6)MOVAX,[BX+SI]
(7)MOVAX,[BX+SI+1100]
答:
(1)AX寄存器的内容为1200H;
(2)AX寄存器的内容为0100H;
(3)将从物理地址=(DS)*10H+1200H=21200H开始的两个单元内容送AX,执行完后AX寄存器的内容为4C2AH;
(4)将从物理地址=(DS)*10H+(BX)=20100H开始的两个单元内容送AX,执行完后AX寄存器的内容为3412H;
(5)将从物理地址=(DS)*10H+(BX)+1100H=21200H开始的两个单元内容送AX,执行完后AX寄存器的内容为4C2AH;
(6)将从物理地址=(DS)*10H+(BX)+(SI)=20102H开始的两个单元内容送AX,执行完后AX寄存器的内容为7856H;
(7)将从物理地址=(DS)*10H+(BX)+(SI)+1100H=21202H开始的两个单元内容送AX,故执行完后AX寄存器的内容为65B7H;
3、试述指令MOVAX,2010H和MOVAX,DS:
[2010H]的区别。
答:
指令MOVAX,2010H是将立即数2010H送AX寄存器,而指令MOVAX,DS:
[2010H]是将DS段有效地址为2010H的两个单元的内容送AX。
4、设堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,试问:
(1)执行指令PUSHAX后(SP)=?
(2)再执行PUSHBX及POPAX后(SP)=?
(AX)=?
(BX)=?
答:
(1)执行指令PUSHAX后(SP)=2000H-2=1FFEH;
(2)再执行PUSHBX及POPAX后(SP)=1FFEH,(AX)=5000H,(BX)=5000H
5、要想完成把[2000H]送[1000H]中,用指令:
MOV[1000H],[2000H]是否正确?
如果不正确,应用什么方法?
答:
把[2000H]送[1000H]中,用指令MOV[1000H],[2000H]不正确
应改为:
MOVAX,[2000H]MOV[1000H],AX
6、假如想从200中减去AL中的内容,用SUB200,AL是否正确?
如果不正确,应用什么方法?
答:
想从200中减去AL中的内容,用SUB200,AL不正确
应改为:
MOVBL,200
SUBBL,AL
7、设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
答案:
(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:
8、分别写出实现如下功能的程序段
(1)双字减法(被减数7B1D2A79H,减数53E2345FH)。
(2)使用移位指令实现一个字乘18的运算。
(3)将AX中间8位,BX低四位,DX高四位拼成一个新字。
(4)将数据段中以BX为偏移地址的连续四个单元的内容颠倒过来
答:
(1)双字减法的程序段是:
MOVAX,2A79H;被减数的低位字送AX
SUBAX,345FH;低位字相减,结果送AX
MOVBX,7B1DH;被减数的高位字送BX
SBBBX,53E2H;高位字相减处并减去低位字相减产生的借位,结果送BX
(2)使用移位指令实现一个字乘18的程序段是:
MOVAX,05F7H;被乘数送AX
SHLAX,1;被乘数乘以2,结果在AX中
MOVBX,AX;被乘数乘以2的结果暂存到BX
MOVCL,3;设置移位位数3
SHLAX,CL;被乘数再乘以8(共乘以16),结果在AX中
ADDAX,BX;被乘数再乘以18,结果在AX中
(3)将AX中间8位,BX低四位,DX高四位拼成一个新字的程序段是:
ANDDX,0F000H;将DX的低12位清零,高4位不变
ANDAX,0FF0H;将AX的低4位清零,高4位清零,中间8位不变
ANDBX,0FH;将BX的高12位清零,低4位不变
ADDAX,BX
ADDAX,DX;按要求组成一个新字,结果放在AX中。
(4)将数据段中以BX为偏移地址的连续四个单元的内容颠倒过来的程序段是:
MOVAL,[BX];数据段中BX为偏移地址的字单元内容送AX
XCHGAL,[BX+3];数据段中BX+3为偏移地址的字单元内容与AX的内容交换
MOV[BX],AL;数据段中BX+3为偏移地址的字单元内容送BX为偏移地址的字单元
MOVAL,[BX+1];数据段中BX+1为偏移地址的字单元内容送AX
XCHGAL,[BX+2];数据段中BX+2为偏移地址的字单元内容与AX的内容交换
MOV[BX+1],AL;数据段中BX+2为偏移地址的字单元内容送BX+1为偏移地址的字单元
9、根据下列要求编写一个汇编语言程序:
:
(1)代码段的段名为COD_SG
(2)数据段的段名为DAT_SG
(3)堆栈段的段名为STK_SG
(4)变量HIGH_DAT所包含的数据为95
(5)将变量HIGH_DAT装入寄存器AH,BH和DL
(6)程序运行的入口地址为START
答案:
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
10、定义一个数据段的字符变量和数据变量。
(1)TRING为字符串变量:
‘Personalcomputer’
(2)VALD为十进制数字节变量12,99
(3)VALH为十六进制数字变量32H,0FAH
(4)VALZ为10个零的字节变量
(5)VALW为20个字单元
答案:
DATASEGMENT
TRINGDB‘Personalcomputer’
VALDDB12,99
VALHDB32H,0FAH
VALZDB10DUP(‘0’)
VALWDW20DUP(?
)
DATAENDS
11、下面的数据项设置了多少个字节?
(1)ASC_DATADB‘1234’
(2)HEX_DATADB1234H
答案:
(1)设置了4个字节
(2)设置了2个字节
12、设有如下汇编程序:
DATASEGMENT
TABLE_ADDRDW1234H
DATAENDS
…
MOVBX,TABLE_ADDR
LEABX,TABLE_ADDR
请写出上述两条指令执行后,BX寄存器中的内容。
答案:
MOVBX,TABLE_ADDR;执行后(BX)=1234H
LEABX,TABLE_ADDR;执行后(BX)=OFFSETTABLE_ADDR
13、写出分配给下列中断类型号在中断向量表中的物理地址。
(1)INT12H
(2)INT8
答案:
(1)00048h
(2)00020h
14、AR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处。
(1)ADDVAR1,VAR2
(2)SUBAL,VAR1
(3)JMPLAB[SI](4)JNZVAR1
答案:
(1)源和目的不能同为内存变量
(2)两个类型不匹配
(3)LAB为标号不为符号常量
(4)JNZ可跳转到标号,不能跳转到变量。
课后题及参考答案
习题2
2.3将下列十进制数分别转换为二进制数
(1)147=128+16+2+1=27+24+21+20=10010011
(2)4095=4*1024-1=22*2*10-1=212-1=1000000000000-1=111111111111
(3)0.625=0.5+0.125=0.101
(4)0.15625=0.00101
2.4将下列二进制数分别转换为BCD码
(1)1011B=11D=00010001
(2)0.01B=0.25D=0.00100101
(3)10101.101B=21.625=00100001.011000100101
(4)11011.001B=27.125D=00100111.000100100101
2.5将下列二进制数分别转换为八进制和十六进制数
(1)10101011B=253Q=0ABH
(2)1011110011B=1363Q=2F3H
(3)0.01101011B=0.326Q=0.6BH
(4)11101010.0011B=352.14Q=0EA.3H
2.6选取字长n为8位和16位两种情况,求下列十进制数的原码
(1)X=+63
X=+64-1=+26-1=+1000000-1=+111111=00111111
n=8时:
X原码=00111111
n=16时:
X原码=0000000000111111
(2)Y=-63
Y=10111111
n=8时:
Y原码=10111111
n=16时:
X原码=1000000000111111