《汇编语言》综合复习资料.docx
《《汇编语言》综合复习资料.docx》由会员分享,可在线阅读,更多相关《《汇编语言》综合复习资料.docx(27页珍藏版)》请在冰点文库上搜索。
《汇编语言》综合复习资料
《汇编语言》综合复习资料
一、单项选择题
在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题后的括号内:
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
TA1 DW0102H,0304H,0506H
TA2 DB02H,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.CPU D.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 B.CF
C.OF D.SF
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.30040HC.25100HD.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.程序段如下:
BLK1 DB46,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.有下列程序段:
MOV SI,10H
MOV AX,1234H
MOV [SI+12H],AX
LEA BX,[SI]
MOV [SI+14H],BX
LES BX,DWORDPTR[SI+12H]
MOV AX,ES
DEC AX
执行上述程序段后,AX和BX寄存器的内容,以十六进制表示,
(AX)=____________H
(BX)=____________H
10.有下列程序段
MOV CX,1AH
MOV DL,'z'
LAB1:
PUSH DX
MOV AH,02H
INT 21H
POP DX
DEC DX
LOOP LAB1
执行后,屏幕输出结果为:
____________________
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。
试把空白处填上适当指令。
_____________________
AND AH,08H
_____________________
MOV AH,OFFH
JMP NEXT
ZERO:
MOV AH,0
NEXT:
……
2.以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。
BUF DB 5,6,7,58H,62,45H,127,……
COUNT EQU $-BUF
MAX DB?
┇
MOV BX,OFFSET BUF
MOV CX,COUNT-1
MOV AL,[BX]
INC BX
LOP1:
_____________________
JAE NEXT
MOV AL,[BX]
NEXT:
INC BX
_____________________
MOV MAX,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.D 2.A 3.A 4.A 5.A
6.B 7.B 8.C 9.A 10.B
11.C 12.D 13.C 14.D 15.B
16.C 17.A 18.D 19.B 20.C
21.C22.C23.C24.B25.C
26.D 27.B 28.B 29.A 30.B
二、简答题