汇编语言程序设计试题及答案合集.docx
《汇编语言程序设计试题及答案合集.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计试题及答案合集.docx(12页珍藏版)》请在冰豆网上搜索。
汇编语言程序设计试题及答案合集
《汇编语言程序设计试题及答案》合集
汇编语言程序设计试题及答案
1.对于有符号的数来说,下列哪个值最大(D)
A:
0F8HB:
11010011B
C:
82D:
123Q
2.下列有关汇编语言中标号的命名规则中,错误的是(D)
A:
通常由字母打头的字符、数字串组成
B:
标号长度不能超过31个字符
C:
?
和$不能单独作为标号
D:
.号不可位于标号首
3.8088/8086存储器分段,每个段不超过(D)
A.64K个字B.32K个字节
C.1兆个字节D.64K个字节
4.寻址指令MOVCX,[BX+DI+20]使用的是哪一种寻址方式(B)
A:
寄存器寻址B:
相对基址变址寻址
C:
变址寻址D:
基址变址寻址
5.若AX=-15要得到AX=15应执行的指令是(A)
A.NEGAXB.NOTAX
C.INCAXD.DECAX
6.8086/8088系统执行传送指令MOV时(A)
A.不影响标志位B.影响DF方向标志
C.影响SF符号标志D.影响CF进位标志
7.若要求一个操作数中的若干位维持不变,若干位置“1”,可以使用(B)
A:
NOTB:
ORC:
ANDD:
XOR
8.下列指令中段默认为堆栈段的是(C)
A.MOVAX,[BX+SI+10]B.ADDAX,ES:
[SI]
C.SUB[BX],[BP][DI]D.MOVDX,[1000H]
9.关于8086/8088微机系列,下列说法哪个是正确的(D)
A:
一个存储单元由16个二进制位组成,简称字。
B:
当存储一个字数据时,低字节放高地址位,高字节放低地址位。
C:
在内存空间中,可以无限分配段,且段的大小不受限制。
D:
段与段之间可以邻接,也可以重叠。
10.下列关于堆栈的说法,错误的是(D)
A:
以“先入后出”为原则。
B:
栈区最高地址单元的前一个单元为栈底。
C:
运行中SP寄存器动态跟踪栈顶位置。
D:
压栈和弹出都是以字节为单位。
11.表示过程定义结束的伪指令是(A)
A.ENDPB.ENDSC.ENDD.ENDM
12.BUF1DB3DUP(0,2DUP(1,2),3)
COUNTEQU$-BUF1
符号COUNT等价的值是(B)
A.6B.18C.16D.9
13.下列标志位中,可以用来判断计算结果正负的是(B)
A:
PFB:
SFC:
DFD:
OF
14.下列指令正确的是(CD)
A.MOV[100H],[BX]B.MOVDS,ES
C.ADDV[BX],CXD.MOVAX,34H
15.下列哪个寄存器是属于指针寄存器(C)
A:
SIB:
DXC:
SPD:
ES
二、填空题(每小题4分,共20分)
1.下列程序段求数组FLD的平均值,结果在AL中。
请将程序填写完整(不考虑溢出)
FLDDW10,-20,30,-60,-71,80,79,56
_LEASI,FLD______
MOVCX,8
XORAX,AX
R1:
__ADDAX,[SI]_____
ADDSI,2
LOOPR1
MOVCL,8
IDIVCL
HLT
2.MOVAX,1090H
SUBAX,4AE0H
JCL1
JOL2
JMPL3
上述程序执行后AX=___C5B0____,程序转向_____L1__
3.假设寄存器AX=1234H,DX=0A000H
MOVBX,0
MOVCX,BX
SUBCX,AX
SBBBX,DX
MOVAX,CX
MOVDX,BX
上述程序段执行后AX=___0EDCCH____,DX=__5FFFH_____
4.MOVAX,234H
MOVCL,3
ROLAX,CL
DECAX
MOVCX,4
MULCX
此段程序执行完后,(AX)=___467CH____,(CX)=_____4__
5.DA1 DB83H,72H,61H,94H,5AH
┇
MOVCX,WORDPTR[DA1]
ANDCX,0FH
MOVAL,[DA1+3]
SHLAL,CL
上述指令序列执行后,AL=___0A0H____,CL=___03H____。
三、简答题(每小题4分,共20分)
1.如TABLE为数据段中0100单元的符号名,其中存放的内容为0FF00H,试问以下两条指令有什么区别?
指令执行后,AX寄存器的内容是什么?
MOV AX,TABLE
MOV AX,OFFSET TABLE
2.对于下面的数据定义
TAB1 DW 10 DUP(?
)
TAB2 DB 10 DUP(?
)
TAB3 DB ‘1234’
┇
MOV AX,SIZE TAB1
MOV BL,SIZE TAB2
MOV CL,SIZE TAB3
三个寄存器中值分别为多少?
4.已知某个人计算机0000:
0080~0000:
00B0区域的内容如下:
0000:
0080CCA1C8008089A898654335231245C400
0000:
0090A478985690000078490328B7B89CA2B8
0000:
00A0CCA1C3008089A898654335231245C400
0000:
00B02A1BC80400331123DC4154BB90453301
试求执行软中断指令INT23H时,系统将转移到哪里进入中断服务程序。
5.试计算逻辑地址4017:
000A,4015:
0002A和4010:
0007A对应的物理地址。
这三个物理地址说明了什么问题?
四、编程题(每小题30分,共30分)
1.试编制一程序,统计DT_W字数组中正数、负数和0的个数,并分别保存在C1,C2和C3变量中。
汇编语言程序设计试题及答案
一.名词解释(本大题共5小题,每小题3分,共15分)试解释下列名词的含义。
1.逻辑地址:
逻辑地址由两个16位的地址分量构成,其中一个为段基值,另一个为偏移量,两个分量均为无符号数编码。
物理地址=段基值×16+偏移量
2.物理地址:
CPU通过地址总线向外发送的20位地址,在访问内存单元前,CPU必须先将CPU内部的逻辑地址转换为物理地址。
3.标志寄存器:
标志寄存器(FlagRegister)又称程序状态字(ProgramStatusWord),是8086/088中唯一按位操作的寄存器,该寄存器为16位,有效的标志位共9位。
其中,CF,PF,AF,ZF,SF,OF为状态标志,用于反映最近一次影响标志位的算术或逻辑运算中运算过程、运算结果的一些性质;TF,IF,DF为控制标志,用于控制CPU对某些特定事件的处理方式以及CPU的工作模式。
4.存储器寻址方式:
发生在指令的执行周期,需要在执行周期内单独启动总线操作来完成。
比寄存器寻址、立即数寻址速度都慢。
5.补码:
计算机系统内部用于表示带符号数的一种编码,正整数的补码为其真值本身,负整数的补码为其真值变反加1的结果。
二.计算题(本大题共5小题,每小题4分,共20分)试按照各小题的要求给出计算结果。
1.将十进制数100分别转换为二进制、十六进制数,它们的表示形式分别为多少?
解:
二进制为01100100B,十六进制为64H。
2.假设(DS)=0B00H,(BX)=0210H,对于指令MOVDS:
120H[BX],AL,其目的操作数的物理地址为多少?
解:
EA=(BX)+0120H=0330H,物理地址=(DS)*16+EA=B330H
3.假设(BX)=0210H,(DI)=0060H,对于指令ADDDL,[BX][DI],其源操作数的偏移量为多少?
解:
偏移量=(BX)+(DI)=0270H
4.假设当前(SP)=0060H,连续执行5条PUSH指令后,(SP)=?
解:
(SP)=0060H–5*2=0060H-000AH=0056H
5.对于一个十进制数–65,其二进制补码表示形式为多少?
解:
先求二进制真值-01000001,变反加一补码为10111111
三.排错题(本大题共4小题,每小题5分,共20分)每小题列出了一条指令,判断该指令有无语法错误,如果存在语法错误,请指出具体的错误原因,判断正确给2分,分析正确给3分,判断错误不给分。
1.PUSH5588H错误,操作数不能用立即数;
2.MOVDS,1720H错误,MOV指令不能对段寄存器直接传送立即数;
3.ADDAX,CL错误,寄存器长度不匹配;
4.ANDAX,[DX]错误,DX不用于存储器寻址。
四.程序分析题(本大题共6小题,每小题5分,共30分)每小题列出了一段小的程序片段和相关存储单元的初始值,请按题目的要求分析各程序片段的运行结果。
(寄存器中的内容请使用十六进制形式给出)
1.阅读如下程序片段
MOVAL,4CH
MOVBL,0B5H
ADDAL,BL
执行上述程序片段后,(AL)=01H(1分),(BL)=0B5H(1分),
CF=1(1分),OF=0(1分),PF=0(1分)
2.阅读如下程序片段
MOVAL,0F3H
MOVDL,0C4H
ADDAL,DL
ANDAL,0FH
执行上述程序片段后,(AL)=07H(1分),(AF)=不确定(1分),
CF=0(1分),OF=0(1分),PF=0(1分)
3.阅读如下程序片段
MOVAL,7EH
MOVCL,04H
ROLAL,CL
执行上述程序片段后,(AL)=0F9H(2分),(CL)=04H(1分),
CF=1(1分),OF=无意义(1分)
4.阅读如下程序片段
MOVAX,0632H
MOVBX,0C202H
SUBAX,BX
INCAX
执行上述程序片段后,(AX)=4431H(2分),(CF)=1(2分),
OF=0(1分)
5.阅读如下程序片段,假设(DS)=0100H,字节单元(01024H)=56H,字节单元(01025H)=28H
MOVBX,0024H
LEABX,[BX]
ORBX,0
ADCBX,[BX]
执行上述程序片段后,(BX)=287AH(3分),(CF)=0(2分),
OF=0(1分)
6.阅读如下程序片段,假设(SP)=0064H
MOVAX,0001H
MOVBX,0002H
PUSHAX
PUSHBX
POPAX
POPBX
执行上述程序片段后,(AX)=0002H(2分),(BX)=0001H(2分),
(SP)=0064H(1分)
五.程序设计题(本大题共2小题,第一小题7分,第二小题8分,共15分)
1.试编写一程序片段,实现BL高4位与低4位相互交换(7分)
解:
MOVCL,4;
ROLBL,CL
2.试编写一程序片段,不使用乘除法指令,实现((AX)*5+14)/2的功能(AX中的数据理解为补码)(8分)
解:
MOV BX,AX
MOV CX,2
SALAX,CX
ADDAX,BX
ADDAX,14
SARAX,1
汇编语言程序设计试题及答案
六.名词解释(本大题共5小题,每小题3分,共15分)试解释下列名词的含义。
6.寄存器:
计算机系统内,位于CPU内部的存储单元,CPU访问此类存储单元不需要使用总线。
7.物理地址:
CPU通过地址总线向外发送的20位地址,在访问内存单元前,CPU必须先将CPU内部的逻辑地址转换为物理地址。
8.段基值:
逻辑地址的一个组成部分,用于指示一个段在内存中的起始地址。
9.寻址方式:
指令获取操作数的方式。
10.补码:
计算机系统内部用于表示带符号数的一种编码,正整数的补码为其真值本身,负整数的补码为其真值变反加1的结果。
七.计算题(本大题共5小题,每小题4分,共20分)试按照各小题的要求给出计算结果。
6.将十进制数100分别转换为二进制、十六进制数,它们的表示形式分别为多少?
答案:
二进制为01100100B,十六进制为64H
7.假设(DS)=0C00H,(BX)=0210H,对于指令MOVDS:
100H[BX],AL,其目的操作数的物理地址为多少?
答案:
EA=(BX)+0100H=0310H,物理地址=(DS)*16+EA=0C000H+0310H=0C310H
8.假设(BX)=0100H,(SI)=0020H,对于指令ADDDL,[BX][SI],其源操作数的偏移量为多少?
答案:
EA=(BX)+(SI)+0=0120H
9.假设当前(SP)=0060H,连续执行5条PUSH指令后,(SP)=?
答案:
每执行一条PUSH指令,(SP)被减2,因此执行5条PUSH指令后,(SP)=0060H–5*2=0060H-000AH=0056H
10.对于一个十进制数–80,其二进制补码表示形式为多少?
答案:
首先求得二进制真值为–01010000B,负数补码为变反加1的结果,即10110000B
八.排错题(本大题共4小题,每小题5分,共20分)每小题列出了一条指令,判断该指令有无语法错误,如果存在语法错误,请指出具体的错误原因,判断正确给2分,分析正确给3分,判断错误不给分。
5.MOVCS,0600H
参考答案:
错误,不能使用MOV指令传递立即数给CS
6.PUSH074CH
参考答案:
错误,单操作数指令不能使用立即数
7.ADDAX,CL
参考答案:
错误,寄存器长度不匹配
8.ORBX,[CX]
参考答案:
错误,CX不能用于存储器寻址
九.程序分析题(本大题共6小题,每小题5分,共30分)每小题列出了一段小的程序片段和相关存储单元的初始值,请按题目的要求分析各程序片段的运行结果。
(寄存器中的内容请使用十六进制形式给出)
7.阅读如下程序片段
MOVAL,4CH
MOVBL,86H
ADDAL,BL
执行上述程序片段后,(AL)=0D2H(1分),(BL)=86H(1分),
CF=0(1分),OF=0(1分),PF=1(1分)
8.阅读如下程序片段
MOVAL,0F3H
MOVDL,0C4H
ADDAL,DL
ANDAL,0FH
执行上述程序片段后,(AL)=07H(1分),(AF)=不确定(1分),
CF=0(1分),OF=0(1分),PF=0(1分)
注意:
逻辑运算指令中,除NOT指令外,CF、OF均置0,AF为不确定
9.阅读如下程序片段
MOVAL,6FH
MOVCL,04H
ROLAL,CL
执行上述程序片段后,(AL)=0F6H(2分),(CL)=04H(1分),
CF=0(1分),OF=不确定(1分)
注意:
移位指令中,当指令的移位次数大于1时,OF为不确定
10.阅读如下程序片段
MOVAX,0632H
MOVBX,0C202H
SUBAL,BL
SBBAH,BH
INCAX
执行上述程序片段后,(AX)=4431H(2分),(CF)=1(2分),
OF=0(1分)
注意:
INC指令不影响CF标志位
11.阅读如下程序片段,假设(DS)=0100H,字节单元(01024H)=56H,字节单元(01025H)=28H
MOVBX,0024H
LEABX,[BX]
ANDBX,0FFH
ADCBX,[BX]
执行上述程序片段后,(BX)=287AH(3分),(CF)=0(2分),
OF=0(1分)
12.阅读如下程序片段,假设(SP)=0064H
MOVAX,0001H
MOVBX,0002H
PUSHAX
PUSHBX
POPAX
POPBX
执行上述程序片段后,(AX)=0002H(2分),(BX)=0001H(2分),
(SP)=0064H(1分)
十.程序设计题(本大题共3小题,每小题5分,共15分)(注:
不是唯一答案)
3.试编写一程序片段,实现BL高4位与低4位相互交换(5分)
参考解答:
MOVCL,4
ROLBL,CL
4.试编写一程序片段,不使用乘除法指令,实现((AX)*5+14)/2的功能(AX中的数据理解为补码)(5分)
参考解答:
MOVBX,AX
MOVCL,2
SALAX,CL
ADDAX,BX
ADDAX,14
SARAX,1
5.试编写一完整程序,实现88242567H与0A435C218H两个32位无符号数相加的功能。
(要求编写完整源程序,含程序框架)(5分)
参考解答:
DATASEGMENT
VAR1DD88242567H
VAR2DD0A435C218H
VAR3DD?
DATAENDS
STACK1SEGMENTSTACK
DW40HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
BEGIN:
MOVAX,DATA
MOVDS,AX
MOVAX,VAR1
ADDAX,VAR2
MOVVAR3,AX
MOVAX,VAR1+2
ADCAX,VAR2+2
MOVVAR3+2,AX
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN