《汇编语言》综合复习.docx
《《汇编语言》综合复习.docx》由会员分享,可在线阅读,更多相关《《汇编语言》综合复习.docx(23页珍藏版)》请在冰豆网上搜索。
《汇编语言》综合复习
《汇编语言》综合复习资料
一、单项选择题
在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题后的括号内:
1.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。
(A)无符号十进制数136(B)带符号十进制数-120
(C)压缩型BCD码十进制数88(D)8位二进制数-8的补码表示
2.指令指针寄存器是()。
(A)IP(B)SP(C)BP(D)BX
3.若AX=3500H,CX=56B8H,当ANDAX,CX指令执行后,AX=()
(A)1400H(B)77F8H(C)0000H(D)0FFFFH
4.完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是()。
(A)MOVAL,00H(B)ANDAL,00H
(C)XORAL,AL(D)SUBAL,AL
5.下列指令执行后总是使CF=0,OF=0的是()。
(A)AND(B)NEG(C)NOT(D)INC
6.在下列语句中,BUFFER称为()
BUFFERDB01H,0AH
(A)符号(B)变量(C)助记符(D)标号
7.DATASEGMENT
TA1DW0102H,0304H,0506H
TA2DB02H,03H,04H
MOVBX,DS:
[0006H]
ANDBX,0FFH
ORBH,[BX]
上述指令序列运行后,BX的内容是()。
(A)0605H(B)0402H(C)0606H(D)0204H
8.当一个带符号数大于0FBH时程序转移,需选用的条件转移指令是()。
(A)JLE(B)JNL(C)JNLE(D)JL
9.下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为()
TESTBH,01H
_____K1
(A)JNE(B)JZ(C)JS(D)JC
10.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是()。
(A)TESTBL,4FH
JZNEXT
(B)XORBL,4FH
JZNEXT
(C)ANDBL,4FH
JZNEXT
(D)ORBL,4FH
JZNEXT
11.在汇编语言程序中,对END语句的叙述正确的是()。
(A)END语句是一可执行语句(B)END语句表示程序执行到此结束
(C)END语句表示源程序到此结束(D)END语句在汇编后要产生机器码
12.下面的数据传送指令中,错误的操作是()。
(A)MOVSS:
[BX+DI],1000H(B)MOVDX,1000H
(C)MOVWORDPTR[BX],1000H(D)MOVDS,2000H
13.下面指令执行后,变量DAB中的内容是()。
DAWDW2A05H
DABDB0FAH
MOVAL,BYTEPRTDAW
SUBDAB,AL
(A)0DAH(B)0FAH(C)0F5H(D)0D0H
14.串操作指令中,目标串操作数的段地址一定在()寄存器中。
(A)CS(B)SS(C)DS(D)ES
15.设数据段中已有:
DA1DB12H,34H
DA2DW56H,78H
下面有语法错误的句是()
(A)ADR1DWDA1(B)MOVDA1+1,AX
(C)MOVBYTEPTRDA2+1,AL(D)MOVWORDPTRDA1+1,AX
16.DECBYTEPTR[BX]指令中的操作数的数据类型是()
(A)字(B)双字(C)字节(D)四字
17.把若干个模块连接起来成为可执行文件的系统程序称为()。
(A)连接程序(B)汇编程序(C)编译程序(D)目标程序
18.操作数直接存放在指令中,则它的寻址方式是()。
(A)直接寻址(B)寄存器寻址(C)寄存器间接寻址(D)立即寻址
19.在程序状态字寄存器中,当方向标志DF位为0时,每次操作后使变址寄存器SI和DI()。
(A)减量(B)增量(C)保持不变(D)地址减1
20.八位二进制补码整数的最小值是()。
(A)-126D(B)-127D(C)-128D(D)-129D
21.在微机系统中分析并控制指令执行的部件是()
A.寄存器B.数据寄存器C.CPUD.EU
22.能被计算机直接识别的语言是()
A.C语言B.汇编语言C.机器语言D.面向对象语言
23.MOVAX,ES:
COUNT[DI]源操作数的寻址方式是()
A.基址寻址 B.立即寻址
C.变址寻址 D.基址变址寻址
24.指令MOVBX,MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么物理地址为()
A.17500H B.16500H
C.14500H D.13500H
25.在标志寄存器中表示溢出的标志()
A.AF
C.OF
26.当执行指令ADDAX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是()。
(A)表示结果中含1的个数为偶数(B)表示结果中含1的个数为奇数
(C)表示该数为偶数(D)表示结果中低八位含1的个数为偶数
27.汇编语言指令中唯一不可缺少的域是()
A.标号名字域 B.助记符域
C.操作数域 D.注释域
28.已知(DS)=3000H,(SS)=2500H,(BX)=0100H,(BP)=0040H,
指令MOVAX,DS:
[BP]源操作数的物理地址是()。
A.25040HB.30040HD.55040H
29.下列传送指令中,有语法错误的指令是()。
A.MOVCS,AXB.MOVDS,AXC.MOVES,AXD.MOVSS,AX
30.指令ADDES:
[DI],AX和存放在()。
A.寄存器B.附加段C.堆栈段D.代码段
二、简答题
1.在某子程序的开始处要保护AX,BX,CX三个寄存器信息,在子程序结束时要恢复这三个寄存器信息。
假设恢复现场的指令序列如下,试写出保护现场的指令序列。
POPAX
POPBX
POPCX
2.下面的程序段有错吗若有,请指出错误。
CRAYPROC
PUSHAX
ADDAX,BX
RET
ENDPCRAY
3.试根据以下要求,分别写出相应的汇编语言指令。
(1)把AX寄存器和BX寄存器的内容相加,结果存入AX中。
(2)用BX和SI的基址变址寻址方式,把存储器中的一个字节与DL的内容相加,并把结果送回DL中。
(3)把数5EH与AH内容相加,结果送回AH中。
4.对于下面的数据定义,三条MOV指令分别汇编成什么
TAB1DW10DUP()
TAB2DB10DUP()
TAB3DB‘1234’
┇
MOVAX,LENGTHTAB1
MOVBL,LENGTHTAB2
MOVCL,LENGTHTAB3
5.完成下列操作,分别选用什么指令:
(1)将AX的内容,减去0520H,和上次运算的借位;
(2)将变量名TABL的段地址送AX;
(3)将变量名TABL的偏移地址送AX。
6.假设有如下伪指令:
D1DB20HDUP()
D2DWD1
请写出用一条指令实现“取D1的偏移地址=>SI”中的三种方法。
7.已知数据段定义如下:
DATASEGMENT
VADB10H
VBDW3*20
MSGDB‘HELLO!
’
COUNTEQU15
BUFDWCOUNTDUP(5,3DUP(1,2),0)
DATAENDS
问题:
(1)执行MOVBX,0FFSETVA后,(BX)=
(2)执行MOVCX,TYPEBUF后,(CX)=
(3)经汇编后,BUF占有的存储空间是字节
8.在指令系统中,段内.段间返回均为RET指令。
试回答:
(1)执行段内返回RET指令时,执行的操作是:
(2)执行段间返回RET指令时,执行的操作是:
9.下面的程序段有错吗若有,请指出错误。
(5分)
CRAYPROC
PUSHAX
ADDAX,BX
RET
ENDPCRAY
三、程序分析(读程序)题
1.ADW6666H
BDW8888H
………
PUSHB
PUSHA
POPB
POPA
试回答:
(1)上述程序段执行后,以十六进制表示,
(A)=_____H,(B)=_____H
(2)设执行前SP=100H,执行后,以十六进制表示,
SP=_____H
2.现有下列程序段
MOVAX,6540H
MOVDX,3210H
MOVCL,04
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
试问上述程序段运行后,以十六进制表示,
(AX)=_____H
(BL)=_____H
(DX)=_____H
3.分析下面程序段:
MOVAX,3456
XCHGAX,BX
MOVAX,3456
SUBAX,BX
JEDONE
KK:
ADDAX,BX
DONE:
请问该程序段执行完JEDONE语句后,以十六进制表示,
(AX)=_____H,(ZF)=_____H
4.程序段如下:
BLK1DB46,84,34,-5,20,122,73
………
MOVCX,7
LEASI,BLK1
NEXT:
MOVAL,[SI]
INCSI
TESTAL,81H
LOOPZNEXT
MOVBL,[SI]
请回答程序段运行后,以十六进制表示,
(AL)=______H,(BL)=______H
5.分析下面程序段:
MOVAL,200
SARAL,1
MOVBL,AL
MOVCL,2
SARAL,CL
ADDAL,BL
试问程序段执行后,以十六进制表示,
(BL)=_____H,(AL)=_____H
6.有下列程序段:
ADDAL,BL
JEL1
RCLAL,1
JEL2
RCRAL,1
INCAL
JEL3
上述程序运行后,试回答(以十进制表示):
(1)当(AL)=__________时,程序转向L1
(2)当(AL)=__________时,程序转向L2
(3)当(AL)=__________时,程序转向L3
7.有下列程序段
MOVBX,00FFH
ANDBX,0FFFH
ORBX,0F0FH
XORBX,00FFH
试问上述程序段运行后,以十六进制表示,
(AL)=____________H
8.执行下列指令后,AX寄存器中的内容是什么
STARTDW10H,20H,30H,40H,50H
EE1DW3
┇
MOVBX,OFFSETSTART
ADDBX,EE1
MOVAX,[BX]
执行后,以十六进制表示,
(AX)=____________H
9.有下列程序段:
MOVSI,10H
MOVAX,1234H
MOV[SI+12H],AX
LEABX,[SI]
MOV[SI+14H],BX
LESBX,DWORDPTR[SI+12H]
MOVAX,ES
DECAX
执行上述程序段后,AX和BX寄存器的内容,以十六进制表示,
(AX)=____________H
(BX)=____________H
10.有下列程序段
MOVCX,1AH
MOVDL,'z'
LAB1:
PUSHDX
MOVAH,02H
INT21H
POPDX
DECDX
LOOPLAB1
执行后,屏幕输出结果为:
____________________
11.设(SP)=80H,(BX)=0FFH;(AX)=1
PUSHBX
ADDBX,AX
XORBX,AX
PUSHBX
POPCX
上述程序段运行后,(SP)=______H(CX)=_______H
12.有如下程序段
MOVAX,0
MOVBX,1
MOVCX,5
LOP:
ADDAX,BX
ADDBX,2
LOOPLOP
问题:
(1)程序的功能是什么(可用算式表示)
(2)运行后,(AX)=__________
13.已知(DS)=5000H,(BX)=0100H,(DI)=0002H,(50100H)=45H,(50101H)=68H,(50102H)=0A1H,(50103H)=14H
先执行MOVAX,[100H],(AX)=;
再执行ADDAX,[BX+DI],(AX)=,CF=,OF=。
14.已知(AX)=3200H,(DX)=0A000H,执行下列程序段:
NOTAX
NOTDX
ADDAX,1
ADCDX,0
问题:
(1)程序执行后,(AX)=(DX)=
(2)程序功能是什么
15.有下列程序段
MOVAX,10
ADDAX,AX
MOVBX,AX
MOVCL,2
SHLAX,CL
ADDAX,BX
上述程序段执行后(AX)=,(BX)=
16.有下列程序段
MOVAX,9B47H
MOVBX,0B568H
ADDAX,BX
JNOL1
JNCL2
SUBAX,BX
JNCL3
JNOL4
JMPSHORTL5
问:
(1)程序执行后,(AX)=_______________H
(2)程序转向哪个标号
17.行下列程序:
MOVAX,0C100H
MOVBX,8FC0H
SUBAX,BX
JNCL1
JNOL2
JMPSHORTL3
程序执行后,(AX)=,程序转向
18.有下列程序段
MOVAL,0FH
MOVBL,10H
CALLSUB1
INCAL
DECBL
SUB1PROC
ADDAL,BL
XCHGAL,BL
RET
SUB1ENDP
上述程序段运行后,(AL)=__________H,(BL)=____________H
19.ADW1234H
BDW5678H
………
PUSHA
PUSHB
POPA
POPB
试回答:
(1)上述程序段执行后,以十六进制表示,
(A)=_____H
(B)=_____H
(2)设执行前SP=200H,执行后,以十六进制表示,
(SP)=_____H
四、程序填空题
下列各小题中,一个空只能填一条指令。
1.下面程序段用来判断寄存器AH和AL中第3位是否相同,如果相同,AH置0,否则AH置全1。
试把空白处填上适当指令。
_____________________
ANDAH,08H
_____________________
MOVAH,OFFH
JMPNEXT
ZERO:
MOVAH,0
NEXT:
……
2.以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。
BUFDB5,6,7,58H,62,45H,127,……
COUNTEQU$-BUF
MAXDB
┇
MOVBX,OFFSETBUF
MOVCX,COUNT-1
MOVAL,[BX]
INCBX
LOP1:
_____________________
JAENEXT
MOVAL,[BX]
NEXT:
INCBX
_____________________
MOVMAX,AL
3.设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。
TESTAX,8000H
(1)___________
MOVPLW,BX
JMPDONE
K1:
(2)________
DONE:
4.在下面程序段的每一空框中填入一个语句(不得修改其它语句),以实现下述功能:
求:
z=|x-y|,设x,y,z分别为字数据的无符号变量名称。
MOVAX,X
CMPAX,Y
JBNEXT
SUBAX,Y
(1)______________________
NEXT:
MOVAX,Y
SUBAX,X
DONE:
(2)______________________
5.下列程序段将AX中值乘以9,请将程序填写完整
⑴__________
MOVCL,3
⑵____________
POPBX
ADDAX,BX
答:
(1)PUSHAX
(2)SHLAX,CL
6.下列程序段求数组ARRAY的累加和。
请将程序填写完整。
ARYDW45H,68H,………….,0ABC1H,9600H;共10项
COUNTDW10
⑴__________
MOVCX,COUNT
XORAX,AX
AGAIN:
ADDAX,[SI]
ADDSI,2
⑵____________
五、编制程序(段)题
1.编程序段(10分)
编制将ES段中名为DATA的字存储区清零的程序段。
假定DATA存储区定义为:
DATADW20DUP()
要求用循环指令编写,循环控制采用计数寄存器自动控制。
(此题勿需书写完整的源程序格式,只需把试题要求的有关指令序列书写出来。
)
2.编程序段(10分)
设X,Y,Z,W存放16位带符号数,编程计算X*Y-Z的值并送到W
(此题勿需书写完整的源程序格式,只需把试题要求的有关指令序列书写出来。
)
3.编程序段(10分)
测试AL寄存器的D5和D0位,若同时为0,程序转向ZERO,执行AX减去BX;否则将AL清0,同时清CF和OF标志。
写出程序段。
(此题勿需书写完整的源程序格式,只需把试题要求的有关指令序列书写出来。
)
4.编写完整程序:
(13分)
设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。
要求子程序开始时必须利用堆栈保护用到的各寄存器,并在返回前恢复;主程序结构要书写完整(包括子程序的调用方式)(结果不必输出)。
其中数据段如下:
DATASEGMENT
DATDB-6
SQRTABDB0,1,4,9,16,25,36,49,64,81
SQRDB
DATAENDS
5.编写完整程序:
(13分)
将一正数N插入一个已排好序的数组的正确位置。
该数组的首地址和末地址分别为AHEAD与AEND,其中所有数均为正数,而且按递增顺序排序(结果不必输出)。
数据段如下:
DATASEGMENT
XDW
AHEADDW2,5,7,89,100,200
AENDDW288
NDW35
DATAENDS
6.编写完整程序:
(13分)
在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。
DATASEGMENT
BUF1DW-56,24,54,-1,89,-8,----
BUF2DW45,-23,124,345,-265,----
SUMDW10DUP(0)
DATAENDS
7.编写完整程序:
(13分)
在给定个数的数中寻找最大值,放至指定的存储单元。
假设数据段如下:
DATASEGMENT
BUFFERDB2,4,3,6,1,5
COUNTDW6
MAXDB
DATAENDS
部分参考答案及评分标准
一、单选题(每小题2分,共60分)
1.D2.A3.A4.A5.A
6.B7.B8.C9.A10.B
11.C12.D13.C14.D15.B
16.C17.A18.D19.B20.C
21.C22.C23.C24.B25.C
26.D27.B28.B29.A30.B
二、简答题(每小题3分,共27分)
1.PUSHCX(1分)
PUSHBX(1分)
PUSHAX(1分)
2.程序最后一行有错,应写成:
CRAYENDP(3分)
3.
(1)ADDAX,BX(1分)
(2)ADDDL,[BX][SI](1分)
(3)ADDAH,5EH(1分)
4.MOVAX,10(1分)
MOVBL,10(1分)
MOVCL,1(1分)
5.
(1)SBBAX,0520H(1分)
(2)MOVAX,SEGTABL(1分)
(3)MOVAX,OFFSETTABL(1分)
6.三种方法,对1个得1分,无先后顺序。
(1)LEASI,D1
(2)MOVSI,OFFSETD1
(3)MOVSI,D2
7.
(1)0(1分)
(2)2(1分)
(3)240(1分)
8.执行段内返回:
栈顶内容→IP,SP+2→SP(2分)
执行段间返回:
栈顶内容→IP,SP+2→SP(2分)
栈顶内容→CS,SP+2→SP(2分)
9.程序最后一行有错,应写成:
CRAYENDP(6分)
五、编制程序题
1.程序段:
(10分)
DATA
DW20DUP()
MOVAX,SEGDATA
MOVES,AX
MOVDI,0
MOVCX,LENGTHDATA;
GOON:
MOVDATA[DI],0
ADDDI,2
LOOPGOON