微机原理与接口技术习题集.docx
《微机原理与接口技术习题集.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术习题集.docx(29页珍藏版)》请在冰点文库上搜索。
微机原理与接口技术习题集
《微机原理与接口技术》习题集
第一章习题
一、单项选择题
1、X的8位补码是10110100,则X的16位补码是。
A)0000000010110100B)1000000010110100
C)1111111110110100C)0111111110110100
二、多项选择题
1、8位数11011011B可表示。
A)无符号数219B)-37的补码C)-36的补码
D)-36的反码E)91的原码F)-91的原码
三、填空题
1、计算机的硬件由、、、和等部分组成。
2、十进制68=B=Q=H。
3、[X]补=78H,则[-X]补=H。
4、设字长8位,机器数分别采用纯小数的原码、补码和反码表示时,其对应的真值范围分别是、、(均用十进制数表示)。
5、若机器数为补码,字长16位(含1位符号位),用十六进制写出对应于定点整数的最大正数补码是,最小负数的补码是。
四、计算题
1、已知[X]原=11001010,求X的反码、补码。
2、用补码求[X+Y]补与[X-Y]补,并判断运算结果是否溢出。
1)已知[X]原=10101100,[Y]补=11000110
2)已知[X]反=01110110,[Y]补=00100110
3、将下列十进制整数转换十六进制数。
(1)783
(2)5327(3)968
4、找出下列数中的最大数
(1)(10010101)2
(2)(227)8(3)(96)16(4)(145)10
5、设有两个二进制数X=01101010,Y=10001100,试比较它们的大小。
(1)X和Y均为无符号数。
(2)X和Y均为带符号数的补码。
第二章习题
1、8086CPU与8088CPU有哪些相同之处?
有哪些不同之处?
2、8086CPU从功能上分为几个部分?
各部分由什么组成?
各部分的功能是什么?
3、CPU有哪些寄存器组成?
各有什么用途?
其中标志寄存器的各标志位的含义是什么?
4、8086/8088CPU中有几个段寄存器?
其功能是什么?
5、什么是逻辑地址、物理地址、物理地址是如何求得的?
假如CS=2000H,IP=0100H,其物理地址是多少?
6、什么是8086/8088CPU最大模式和最小模式?
其关键区别是什么?
7、在最小模式时CPU访问内存储器,哪些信号有效?
什么是总线周期?
8086CPU的一个总线周期包括多少时钟周期,什么情况下要插入TW等待周期?
插入多少个TW等待周期取决于什么因素?
8、在最小模式时,CPU访问I/O接口,哪些信号有效?
9、什么是中断向量?
中断向量表指的是什么?
中断向量表放在什么地方?
假如中断类型为20,它的中断服务入口地址是多少?
第三章习题
一、判断下列问题是否正确,请说明理由。
1、MOVAX,[BP]的源操作数物理地址为16D×(DS)+(BP)
2、OUTDX,AL指令输出的是16位操作数
3、MOVDS,2000H
4、PUSHAL
5、段内转移指令执行结果要改变IP、CS的值
6、REPE/REPZ是相等/为零时重复操作,其退出条件是:
(CX)=0或ZF=0
二、选择题
1、寄存器间接寻址方式中,操作数在中。
A)通用寄存器B)堆栈C)存储器D)段寄存器
2、假设(SS)=2000H,(SP)=0012H,(AX)=1234H,执行PUSHAX后,存储单元=12H。
A)20014B)20011HC)20010HD)2000FH
3、若要检查BX寄存器中的D12位是否为1,应该用指令。
A)ORBX,1000HB)TESTBX,1000H(JNZYES)
C)XORBX,1000HD)ANDBX,1000H(JNZYES)
4、用BP作基址变址寻址时,操作数所在的段是。
A)数据段B)代码段C)堆栈段D)附加段
5、含有立即数的指令中,该立即数被存放在。
A)累加器中B)指令操作码后的内存单元中
C)指令操作码前的内存单元中D)由该立即数所指定的内存单元中
6、执行下列指令后:
MOVAX,1234H
MOVCL,4
ROLAX,CL
DECAX
MOVCX,4
MULCX
HLT
则(AX)=。
A)8D00HB)9260HC)8CAOHD)0123H
7、下列程序:
NEXT:
MOVAL,[SI]
MOVES:
[DI],AL
INCSI
INCDI
LOOPNEXT
可用指令来完成该功能。
A)REPLODSBB)REPSTOSBC)REPESCASBD)REPMOVSB
8、设(AL)=-68,(BL)=86,执行SUBAL,BL指令后,正确的结果是。
A)CF=1B)SF=1C)OF=1D)ZF=1
三、简答题
1、写出下列指令中源操作数和目的操作数的寻址方式的有。
A)MOVBX,[SI]B)ADD[SI+50],BXC)SUBAX,2
D)CMPAX,[DI]E)MUL[BX]F)PUSHCX
2、下列指令中,能将累加器AX清零指令有几个,为什么?
A)CMPAX,AXB)SUBAX,AXC)ANDAX,0D)XORAX,AX
3、在下列指令中,隐含使用AL寄存器的指令有哪些?
A)SCASBB)XLATC)MOVSBD)DAAE)NOPF)MULBH
4、假设(DS)=3000H,(BX)=0808H,(30808H)=012AAH,(3080A)=0BBCCH,当执行指令
“LESDI,[BX]”后,(DI)=?
,(ES)=?
5、假设(BX)=0449H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=7230H则执行XCHGBX,[BP+SI]指令后,(BX)=?
6、执行下列指令序列后,完成的功能是什么?
MOVCX,4
NEXT:
SHRDX,1
RCRAX,1
LOOPNEXT
7、下列指令执行后,BX=?
MOVCL,3
MOVBX,4DABH
ROLBX,1
RORBX,CL
8、执行下列指令序列,AH=?
AL=?
MOVAL,80H
MOVBL,08H
CBW
IDIVBL
第四章习题
1、阅读程序并回答问题:
START:
INAL,20H
MOVBL,AL
INAL,30H
MOVCL,AL
MOVAX,0
MOVCH,AL
L1:
ADDAL,BL
ADCAH,0
LOOPL1
HLT
问
(1)本程序实现什么功能?
(2)结果在哪里?
(3)用乘法指令MULBL编程并使结果不变。
(假设20H、30H端口输入的数据均为无符号数)。
2、读下述程序段,请问:
什么情况下,本段程序的执行结果是AH=0?
BEGIN:
INAL,5FH
TESTAL,80H
JZNEXT
MOVAH,0
JMPSTOP
NEXT:
MOVAH,0FFH
STOP:
HLT
3、请编写一程序段完成AX×10的任务(要求不准用乘法指令做)。
4、内存中自TABLE开始的七个单元连续存放着自然数0至6的立方值(称作立方表)。
任给一数X(0≤X≤6)在XX单元,查表求X的立方值,并把结果存入YY单元中。
方法一、LEABX,TABLE
MOVAH,0
MOVAL,XX
方法二、LEABX,TABLE
MOVAL,XX
XLAT
MOVYY,AL
HLT
5、符号函数
假设任意给定的X值放在XX单元中,函数Y的值存放在YY单元中。
编程实现根据X的不同值给Y赋值的程序:
MOVAL,XX
CMPAL,0
JGEBIGR
MOVAL,0FFH
MOVYY,AL
HLT
BIGR:
JEEQUL
MOVAL,1
MOVYY,AL
HLT
EQUL:
MOVYY,AL
HLT
6、试编写一程序段,使数据段中偏移地址为0200H开始的128B单元的内容清0。
LEADI,0200H
MOVCX,0080H
MOVAL,0
N:
MOV[DI],AL
INCDI
DECCX
JNZN
HLT
或
CLD
MOVDI,0200H
MOVCX,0080H
MOVAL,0
REPSTOSB
HLT
7、试编写一程序段,将字符串CHR1中的20个字符传送到CHR2中。
LEASI,CHR1
LEADI,CHR2
MOVCX,20
NEXT:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPNEXT
HLT
或
LEASI,CHR1
LEADI,CHR2
MOVCX,20
REPMOVSB
HLT
8、某工厂8种产品的加工程序R0、R1、…、S7分别存放在以S0、S1、…、S7为首地址的内存区域中,而这8个首地址偏移量连续存放在以BASE为首地址的跳转表内。
假设8种产品的编号分别为0、1、2、…、7,请编程实现根据产品编号跳转到相应的执行程序。
注意:
地址表的结构可见,偏移量由产品编号乘2求得。
程序如下:
MOVAL,BN;产品编号BN送AL
MOVAH,0
ADDAL,AL
LEABX,BASE
ADDBX,AX
MOVAX,[BX]
JMPAX
HLT
9、统计一个20字数据块中负元素的个数,数据块的首地址为BASE,负元素的个数存放在这20字数据块之后的单元中。
LEABX,BASE
MOVCX,20
MOVDX,0
LOP1:
MOVAX,[BX]
CMPAX,0;可用ANDAX,AX
JGEJUS
INCDX
JUS:
INCBX
INCBX
DECCX
JNZLOP1;或LOOPLOP1
INCBX
MOV[BX],DX
HLT
10、已知存储器中存放有100个8位带符号数,存储区的首地址为ARRAY,试将其中的最大值和最小值找出来,分别存放在MAX和MIN单元中。
LEASI,ARRAY
MOVCX,100
MOVAL,80H;-128送AL
LP1:
CLC
CMPAL,[SI]
JLBB
JMPAA
BB:
MOVAL,[SI]
AA:
INCSI
LOOPLP1
MOVMAX,AL;找出最大数
;------------------------------------
LEASI,ARRAY
MOVCX,100
MOVAL,07FH;+127送AL
LP2:
CLC
CMPAL,[SI]
JGCC
JMPDD
CC:
MOVAL,[SI]
DD:
INCSI
LOOPLP2
MOVMIN,AL;找出最小数
HLT
11、统计寄存器AX内16位二进制数中0、1的个数,0的个数存CH,1的个数存CL。
MOVCX,0;清CH、CL
MOVDL,16;循环16次
CLC;清进位位
LP:
RCLAX,1;带CF循环左移
JCNEXT;CF=1转NEXT
INCCH;CF=0则CH内容加1
JMPAA
NEXT:
INCCL;CF=1则CL内容加1
AA:
DECDL
JNZLP
HLT
12、数据段中有两个字符串,分别存在STR1和STR2开始的单元中。
比较两个字符串是否相同,若相同使DX为0,否则使DX为0FFFFH。
LEASI,STR1;取源串首地址
LEADI,STR2;取目的串首地址
MOVCX,N;字符串长度送计数寄存器
CLD;增地址
REPECMPSB;串比较
ANDCX,0FFH;是否比较到最后字节
JZEQQ;串相等转EQQ
MOVDX,0否则0送DX寄存器
JMPEND
EQQ:
MOVDX,0FFFFH;0FFFFH送DX寄存器
END:
HLT
13、编制一个程序,对DAT字节单元中的数(255)分别统计出有多少个10,余下有多少个5,再余下有多少个2,再余下有多少个1。
统计得到的各数分别存在DAT0、DAT1、DAT2、DAT3中。
方法一:
LEABX,DAT;取首址
MOVAL,[BX];取这个字节数
MOVAH,0;AH清0
MOVDL,10;
DIVDL;除10
MOVDAT0,AL;商即10的个数
MOVAL,AH
MOVAH,0
MOVDL,5
DIVDL;余数除5
MOVDAT1,AL;商即5的个数
MOVAL,AH
MOVAH,0
MOVDL,2
DIVDL;余数除2
MOVDAT2,AL;商即2的个数
MOVDAT3,AH;余数即1的个数
方法二:
MOVBL,DAT;取数
MOVCL,0;计数个数
AA:
SUBBL,10;减10
JCBB;借位转BB
INCCL;否则CL加1
JMPAA
BB:
MOVDAT0,CL;存10个数
MOVCL,0
ADDBL,10;恢复BL差值
BB1:
SUBBL,5
JCCC
INCCL
JMPBB1
CC:
MOVDAT1,CL;存5个数
MOVCL,0
ADDBL,5;恢复
DD1:
SUBBL,2
JCDD
INCCL
JMPDD1
DD:
MOVDAT2,CL;存2个数
ADDBL,2
MOVDAT3,BL;存1个数
HLT
14、写出实现下列功能的指令组:
(1)传送10H到AL寄存器
(2)将AL的内容乘以2
(3)传送15H到BL寄存器
(4)AL的内容乘以BL的内容
问:
最后结果AX=?
15、计算Z=((X+Y)×5-Y)/2。
设X的值为2,Y的值为1,结果存入数据段中的DATA单元。
16、编程检测50H端口输入的字节数据,若为正,将BL清0;若为负,将BL置为FFH。
17、寄存器DX和AX的内容构成32位数,DX内容为高16位,AX内容为低16位,编写程序段:
1)将该32位数左移两位,并将移出的高位保存在CL的低两位中;
2)将该32位数右移两位,并将移出的低位保存在BL的低两位中。
数据段中以变址寄存器SI为偏移地址的内存单元中连续存放着十个字节压缩型BCD码,编程求它们的BCD和,要求结果存放到AX中。
第五章习题
1、下列语句在存储器中分别为变量分配多少字节?
VR1DW9
VR2DW4DUP(?
),2
CONTEQU10
VR3DDCONTDUP(?
)
VR4DB2DUP(?
,CONTDUP(0))
VR5DB‘HOWAREYOU?
’
解:
为VR1分配2字节;为VR2分配10字节;为VR3分配40字节;为VR4分配22字节;为VR5分配12字节。
2、下面语句有何区别?
X1EQU1000H
X2=1000H
解:
为X1赋值1000H,之后,不能再对X1重新赋值;为X2赋值1000H,之后,可以再对X2重新赋值。
3、分析操作符有哪几种?
分别举例加以说明。
解:
(1)SEG[符号名]如:
MOVAX,SEGDATA
(2)OFFSET[符号名]如:
MOVAX,OFFSETDAT
(3)TYPE[符号名]如:
MOVAX,TYPEA
(4)SIZE[符号名]如:
MOVAX,SIZED1
(5)LENGTH[符号名]如:
MOVAX,LENGTHD1
注:
DATA是段名;DAT是定义的变量名;A是定义的数据类型变量名;D1是用DUP()定义的变量名。
4、8086/8088汇编语言程序中段的类型有几种,各段如何定义?
段定义中,定位类型、组合类型、类别名各起什么作用,各有什么含义?
5、宏定义如下,请问要把BX寄存器左移4位,如何进行宏调用?
SHIFTMACROX,Y,Z
MOVCL,X
SA&YZ,CL
ENDM
6、某软件共可接收10个键盘命令(分别为A、B、C、┅、J),完成这10个命令的程序分别为过程P0、P1、┅、P9。
编程序从键盘接收命令,并转到相应的过程去执行。
要求用两种方法:
(1)用比较、转移指令实现。
(2)用跳转表实现
7、内存自BUF单元开始的缓冲区连续存放着100个学生的英文分数,编程序统计其中90-100、60-89、60以下者各有多少人,并把结果连续存放到自RESUT开始的单元(要求画出程序流程图,各段定义完整)。
程序清单:
DATASEGMENT;数据段
BUFDB?
,?
,…,?
;定义学生成绩表
RESUTDB?
,?
,?
;放置分数段统计值
DATAENDS
STACKSEGMENT;堆栈段
DB50DUP(0)
STACKENDS
CODESEGMENT;堆栈段
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
MAINRPOCFAR
PUSHDS
XORAX,0
PUSHAX,0;保护DOS
MOVAX,DATA
MOVDS,AX
LEABX,BUF;成绩表首址
MOVCX,100;学生人数
MOVAH,0;低于60分人数
MOVDH,0;60-89分学生人数
MOVDL,0;90-100分学生人数
AAA1:
MOVAL,[BX]
CMPAL,60;与60比较
JGEBBB1;大于等于转BBB1
INCAH
JMPCCC1
BBB1:
CMPAL,90;与90比较
JGEBBB2;大于等于转BBB2
INCDL
JMPCCC1
INCAH
CCC1:
INCBX;修改成绩表位置
LOOPAAA1
MOVRESUT,AH;存放统计结果
MOVRESUT+1,DL
MOVRESUT+2,DH
RET
MAINENDP
CODEENDS
END
8、编程序一边从键盘上接收字符,一边将其写入指定的文件,字符个数共60。
程序清单:
DATASEGMENT
ENGLISHDB’PRESSRETURNKEYTOEXIT‘,ODH,OAH,’$’
BUFDB60;第一个字节设的最大长度(含0DH-回车符)
DB0;第二个字节空出,由DOS最后填实际长度(不含0DH)
DB61DUP(0);第三字节开始写字符
DB‘$’
DATAENDS
STACKSEGMENT
DW20DUP(0)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK,DS:
DATA
BEGIN:
MOVAX,DATA
MOVDS,AX
LEADX,ENGLISH
MOVAH,09H
INT21H
LEADX,BUF
MOVAH,0AH
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
本题中,最多可输入60个字符,BUF中第61个内存单元可存放回车代码。
9、编制一个程序,实现DAT1和DAT2相加,数据格式如下
DAT1DB4,12H,34H,56H,78H
DAT2DB3,12H,34H,56H
其中DAT1和DAT2单元的第一个数据指定该数的字节数。
DATASEGMENTPARA‘DATA’
DAT1DB4,12H,34H,56H,78H
DAT2DB3,12H,34H,56H
DATAENDS
STACKSEGMENTPARA‘STACK’
DW100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK,ES:
DATA
STARTPROCFAR
MOVAX,DATA
MOVDS,AX
MOVES,AX
LEASI,DAT1
LEADI,DAT2
MOVBX,[SI]
MOVCX,[DI]
INCSI
INCDI
CLC
MM:
MOVAL,[DI]
ADC[SI],AL
INCDI
INCSI
DECBX
LOOPMM
M1:
JZ,M2
JNCM2
ADCBYTEPRT[SI],0
INCSI
DECBX
JMPM1
M2:
RET
STARTENDP
CODEENDS
END
10、编制一程序,把字符串‘1234567890’中的‘4567’清除,将字符串变为‘123890’
DATASEGMENTPARA‘DATA’
DATDB‘1234567890’
DATAENDS
STACKSEGMENTPARA‘STACK’
DW100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK,DS:
DATA,ES:
DATA
STARTPROCFAR
MOVAX,DATA
MOVDS,AX
MOVES,AX
LEASI,DAT
LEADI,DAT
CLC
ADDDI,3
ADDSI,7
MOVCX,3
CLD
REPMOVSB
RET
STARTENDP
CODEENDS
ENDS
11、定义一条宏指令,它可以实现任一数据块的传送,只要给出源和目的数据块的首地址以及数据块的长度即可。
然后采用宏调用把BUF1开始的100个字节单元中的数据依次传送到BUF2开始的100个字节单元中。
12、已知数据段DAT单元存放某一数N(-6≦N≦6),请编写程序,用查表法求数N的平方值,结果送SQR单元。
DATASEGMENT
TABLEDB0,1,4,9,16,25,36
DATD