资源描述
汇编语言程序设计复习题
一、单项选择题
1.假设(AL)=0FFH依次执行ADD AL,0FH指令后,标志位ZF和SF的状态分别为(A )
A. 0和0 B. 0和1 C. 1和0 D. 1和1
2.假设VAR为变量,指令MOV BX,VAR的寻址方式是 ( A )
A.直接寻址 B.间接寻址 C.立即寻址 D.存储器寻址
3.下列指令中,不影响标志位的是 ( C )
A.SUB BX,BX B.ROR AL,1 C.JNC Lable D.AND AL,CL
4.假定(DS)=4000H,(DI)=0100H,(40100H)=55H,(40101H)=0AAH,试问执行指令MOV BX,
[DI]后,(BX)= ( C )
A.0100H B.55AAH C.AA55H D.4100H
5.执行下列哪一条指令后,就能用条件转移指令判断AL和BL寄存器中的最高位是否相同?( D )
A. TEST ALBL B. CMP ALBL C. AND ALBL D. XOR ALBL
6.堆栈中当前出栈的存储单元地址是(A )
A. SS*10H+SP B. SS*10H+BP C. SS*10+SP D. SS*10+BP
7.已知VAR DW l,2,$+2,5,6 若汇编时VAR分配的偏移地址是0010H,则汇编后0014H单元的内容是 ( D )
A.6H B.14H C.5H D.16H
8.循环控制指令REPNZ继续执行循环的条件是( B )
A. CX≠0且ZF=1 B. CX≠0且ZF=0 C. CX≠0或ZF=1 D. CX≠0或ZF=0
9.设NUM=11011011B,指令“MOV AL,NUM SHL 3”执行后AL中的值是(B )
A.11011011000B B.11011000B C.00011011B D.00011011011B
10.下面XCHG指令语句中,语法正确的是( B )
A. XCHG AX,DS B. XCHG BL,[BX] C. XCHG AL,OFH D. XCHG [SI],[DI]
11.算术右移SAR和逻辑右移SHR两条指令执行后结果完全相同的情况是 ( A )
A。目的操作数最高位是0 B.目的操作数最高位是1
C.目的操作数为任何情况 D.无论什么情况都不可能相同
12.设AL=04H,BL=0F8H,执行IMUL BL指令后,结果是 (D)
A.AX=0032H B.AX=00EOH C.AX=03EOH D.AX=OFFEOH
13.指令的操作数中,允许出现表达式,例如BUFl与BUF2均为变量名,下面指令中语法正确的是 ( D )
A.MOV AX,BUF1*BUF2 B.MOV AX,BUF1/BUF2
C.MOV AX,BUF1+ES:BUF2 D.MOV AX,BUF2-BUF1
14.下面指令中,操作数的寻址方式为寄存器间接寻址的指令是 ( C)
A.INC WORD PTR [BX+S1] B.INC CX,[SI+COUNT]
C.NEG BYTE PTR [BX] D.ADD AX,B
15.NUM EQU 80H
DA DB 34H
AND DA,NUM
上述语句执行后,DA中的内容是 ( D )
A,0B4H B;80H C,34H D.0
16.在同一程序段中,定义有下面的伪指令,使用正确的是 (B )
A.PORT1 EQUAL PORTl EQU 2000H B.PORT2 = 3500H AND 0FFH
C.PORT3 DD ‘ABCD’ D.PORT4 PROC ... RET ENDP
17.语句DA1 DB 2 DUP(3,5,7)汇编后,该语句可等同于的语句是 (D )
A.DA1 DB 3,5,7 B.DA1 DB 2,3,5,7
C.DA1 DB 3,5,7,2 D.DA1 DB 3,5,7,3,5,7
18.MOV AL,80H
MOV CL,2
SAR AL,CL
上述指令执行后,结果是 (D )
A.AL=40H B.AL=20H C.AL=0COH D.AL=0E0H
19.下面是实现将AL内容加1的压缩型BCD码加法程序段,其中错误的指令序列是 (A )
A.INC AL B.ADD AL,1 C.ADD AL,1 D.STC
DAA DAA AAA DAA
20.DABY1 DB 12H,34H,56H,78H
DB $-DABY1
DABY2 DB 8 DUP(1,2,3)
...
MOV DL,SIZE DABY2
ADD DL, DABYl+2
上述指令序列执行后,DL的内容是 ( C )
A.3CH B.80H C.5EH D.1AH
21、下列寄存器组中在存储器操作数寻址时可用于提供偏移地址的是(D )
A、AX,BX,CX,DX B、SP,BP,SI,DI
C、CS,ES,DS,SS D、BX,BP,SI,DI
22、执行NEG指令时,要设置标志位CF。设置CF的正确说法是(C)
A、对正数求补时,CF置0 B、对负数求补时,CF置0
C、对全0数据求补时,CF置0 D、对非零数据求补时,CF置0
23、要使BL中的低四位变反,高四位不变,应执行指令(D)
A、NOT BL B、OR BL,0FH
C、AND BL,0FH D、XOR BL,0FH
24、在8086/8088的立即数寻址方式中,对寄存器的使用下列说法正确的是(D)
A、使用AX,BX,CX,DX B、使用SI,DI,BP,SP
C、使用任一个通用寄存器 D、不使用任何寄存器
25、 MOV AL,-1
NEG AL
XOR AL,65
上述指令执行后,AL的值是(B)
A、01H B、40H
C、61H D、64H
26、在查错程序DEBUG中,为查看或修改内存单元的内容,使用的命令是(A)
A、D或E B、D或R
C、R 或E D、D或U
27、指令MOV CL,55H XOR 0F0H执行后CL中的值是(C)
A、05H B、50H
C、0A5H D、0F5H
28、对CS段寄存器赋段地址的方法是(B)
A、MOV AX,CODE B、ASSUME CS:CODE
MOV CS,AX
C、END 起始地址 D、MOV CS,2050H
29、X DW 1234H,0A9BH
Y DB 7EH,8DH
┇
MOV BH,TYPE X
MOV BL,TYPE Y
执行后BX的内容是(D )
A、0102H B、0101H
C、1234H D、0201H
30、条件转移指令JBE产生转移的条件是(A)
A、CF=1 OR ZF=1 B、CF=0 OR ZF=1
C、CF=1 OR ZF=0 D、CF=0 OR ZF=0
31、某存储单元的段地址是0AB90H,偏移地址是1234H,该存储单元的物理地址是(B)
A、0BDC4H B、0ACB34H
C、0AD134H D、1CED0H
32、设DF=1,每次执行CMPSW指令时,SI和DI均要分别(B)
A、减1 B、减2
C、加1 D、加2
33、设(AL)=07H,要使(AL)=-07H应执行的指令是(C)
A、OR AL,80H B、NOT AL
C、NEG AL D、ADD AL,80H
34、下列指令执行时操作数在数据段的是(D)
A、MOV AX,32768H B、ADD AL,AH
C、NEG BX D、INC [DI]
35、设SP=4AH,执行段内返回指令RET 4后,SP的值是(A)
A、50H B、48H
C、4CH D、44H
36、设CF=1,实现AL内容乘2的指令是 ( D )
A、RCL AL,1 B、SAR AL,1
C、ROR AL,1 D、SHL AL,1
37、下面语句中能和指令MOV AX,NOT 000FH等效的是(C)
A、MOV AX,0FFFFH B、MOV AX,0FH
C、MOV AX,0FFF0H D、MOV AX,0F0FFH
38、与LEA BX,BUF指令完全等效的指令是 ( D)
A、MOV BX,BUF B、LDS BX,BUF
C、MOV BX,WOKD PTR BUF D、MOV BX,OFFSET BUF
39、下面有语法错误的指令是(B)
A、XCHG AX,[BX] B、XCHG AX,CS
C、XCHG AX,SI D、XCHG AX,BP
40、XOR AX, 0426H
JZ DONE
上述程序段产生分支的条件是(A)
A、执行前AX=0426H B、执行前AX≠0426H
C、执行前AX=全0 D、执行前AX=全1
41.执行NEG指令时,要设置标志位CF。设置CF的正确说法是 (C )
A.对正数求补时,CF置0 B.对负数求补时,CF置0
C.对全0数据求补时,CF置0 D.对非零数据求补时,CF置0
42.设AX=1000H
NEG AX
NOT AX
执行上述指令后,正确的结果是( )。
A.AX=1001H B.AX=0FFFH C.AX=1000H D.AX=0111H
43.在8086/8088的立即数寻址方式中,对寄存器的使用下列说法正确的是 (D )
A.使用AX,BX,CX,DX B.使用SI,DI,BP,SP
C.使用任一个通用寄存器 D.不使用任何寄存器
44.指令的操作数中,允许出现表达式,例如BUFl与BUF2均为变量名,下面指令中语法正确的是 (D )
A.MOV AX,BUF1*BUF2 B.MOV AX,BUF1/BUF2
C.MOV AX,BUF1+ES:BUF2 D.MOV AX,BUF2-BUF1
45.下列寄存器中属于通用寄存器的是 ( C )
A.CS B.DS
C.SP D.SS
46.8086CPU中,一个段最大可定义的字节数为 (C )。
A.61K B.32K C.64K D.1M
47.对CS段寄存器赋段地址的方法是 (B )
A.MOV AX,CODE B.ASSUME CS:CODE
MOV CS,AX
C.END 起始地址 D.MOV CS,2050H
48.下列4个数为有符号数,最大的数是 (D)
A.327H B.8365H C.9564H D.5342H
49.条件转移指令JBE产生转移的条件是 (A)
A.CF=1 OR ZF=1 B.CF=0 OR ZF=1
C.CF=1 OR ZF=0 D.CF=0 OR ZF=0
50.存储单元的物理地址是12340H,偏移地址是0200H,逻辑地址是 ( B )。
A.2140H B.1214H C.1034H D. 10340H
51.设AL=04H,BL=0F8H,执行IMUL BL指令后,结果是 (D )
A.AX=0032H B.AX=00E0H C.AX=03E0H D.AX=0FFE0H
52.下列寄存器组中在存储器操作数寻址时可用于提供偏移地址的是 (D)
A.AX,BX,CX,DX B.SP,BP,SI,DI
C.CS,ES,DS,SS D.BX,BP,SI,DI
53.下面指令中,操作数的寻址方式为寄存器间接寻址的指令是 (C)
A.INC WORD PTR [BX+S1] B.INC CX,[SI+COUNT]
C.NEG BYTE PTR [BX] D.ADD AX,B
54.要使BL中的低四位变反,高四位不变,应执行指令 (D)
A.NOT BL B.OR BL,0FH
C.AND BL,0FH D.XOR BL,0FH
55.执行如下程序,(BX)的值是( C )。
MOV AX,0
MOV BX,1
MOV CX,100
A:ADD AX,BX
INC BX
LOOP A
HLT
A.99 B.100 C.101 D.102
56.下面XCHG指令语句中,语法正确的是 (B)
A.XCHG AX,DS B.XCHG BL,[BX]
C.XCHG AL,OFH D.XCHG [SI],[DI]
57. 8086 8位I/O端口地址寻址范围是 ( A )
A.64K B.32K C.16K D.1M
58.指令MOV CL,55H XOR 0F0H执行后CL中的值是 (C)
A.05H B.50H
C.0A5H D.0F5H
59.下列指令中,不影响标志位的是 (C )
A.SUB BX,BX B.ROR AL,1 C.JNC Lable D.AND AL,CL
60.下列4个数为有符号数,最大的数是 (A )
A.5342H B.8365H C.9564H D.327H
二、填空题
1.实模式方式下内存物理地址与逻辑地址的关系式是(物理地址(PA)=段寄存器(SR)*10H(16)+偏移地址(EA))
2.标志寄存器中决定字符串处理方向的标志是(DF)
3.调试程序DEBUG下的命令U与G分别表示(U是反汇编命令)、(G是连续执行命令)
4.软中断指令INT 21H执行,若AH=9时则完成的功能为(9号功能调用完成显示字符串)
5.指令MOV AX,23D5H的寻址方式分别是(立即寻址)
6.伪指令DAT DB 12 DUP(3 DUP(?),0)占用了(48字节)字节单元。
7.标志寄存器中决定运算结果溢出的标志是(OF )
8.调试程序DEBUG下的命令R与D分别表示(R命令为显示寄存器内容)、(D命令显示内存单元内容)
9.软中断指令INT 21H执行,若AH=10时则完成的功能为(键盘输入一字符串,存入DX指示的内存单元中)
10.指令ADD BX,[DI]的寻址方式是(间接寻址)
11.DW ‘AB’将依次在内存中从低字节到高字节存入数据BA_。
12.隐含指示堆栈段中某个数据偏移地址的寄存器是_BP 、指示栈顶地址的寄存器是_SP。
13.比较两个字符串,找出它们不匹配的位置,在CMPSB指令前应使用的重复前缀指令_REPE。
14.在串操作指令中,使地址自动减量的指令是_STD。
15.BUF DW 4,6,$+2,若汇编时BUF分配的偏移地址是0042H,则汇编后BUF数组中第三个字的值是__ _0048H。
16.在汇编源程序时,语句INC [BX]出现语法错误,这时在语句的操作数项中应添加的操作符是_
WORD PTR。
17、8086/8088存贮器地址分段时,每个段起始地址的特征是段首地址能被16整除。
18、实现宏定义的一组伪操作是 MACRO -- ENDM 。
19、假设执行前AX=7862H,指令XOR AX,AX执行后AX中的值是_AX=0__。
20、ARRAY DB 0,2 DUP(1,2),0,3汇编时生成的数据依次是_0,1,2,1,2,0,3_。
21、在存取一个存储器操作数时,段地址必须由__DS___提供。
22、已知DS=29A0H,某数据的物理地址是2A400H,则当DS=6700H时,该数据的物理地址是_67A00H_。
23.伪指令DAT DB 12 DUP(3 DUP(?),0)占用了(48字节)字节单元。
24.标志寄存器中决定运算结果溢出的标志是( OF)
25.检查两个无符号数的关系,若要实现AL>=BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是( JNB LOP1 )。
26.指令ADD BX,[DI]的寻址方式是(间接寻址)
27.假设执行前AX=7862H,指令XOR AX,AX执行后AX中的值是( 0 )
28.IN和OUT指令直接寻址方式中,端口地址PORT是一个(8位立即数)。
29.隐含指示堆栈段中某个数据偏移地址的寄存器是( BP )、指示栈顶地址的寄存器是(SP )。
30.在一段汇编程序中多次调用另一段程序,用宏指令比用子程序的优势是(占内存空间大,但速度快)。
三、简答题
1.假设VAR1和VAR2为字变量,LAB为程序中的一个标号,试找出下列指令的错误之处。
(1)ADD AVR1,AVR2 答:(1)应有一个操作数为寄存器;
(2)JMP NEAR LAB (2)少了PTR
2.假设(BX)=11100011B,变量VALUE的值为01111001B,确定下列各条指令单独执行后的结果。
(1)XOR BX,VALUE 答:(1)10011010;
(2)OR BX,VALUE (2)11111011;
(3)AND BX,0 (3)0
3.下列各数均为用十六进制表示的8位二进制数,请说明当它们被看作是用补码表示的数时,它们所表示的十进制数是什么?
(1) 5D (2) 62 (3) 0C3
答:(1)93 (2)98 (3)-60
4.如果要检查BX寄存器中的第13位是否为1,应该用什么指令?
答:TEST BX,2000H JNZ YES
5.编写指令将附加段中的一个字节变量COUNT送给AL寄存器
答:MOV BX,OFFSET COUNT MOV AL,ES:[BX]
6. 有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。
答:存储器里的存放情况如图所示。
7、设有数据定义如下:
ARRAY DW 1000H,2000H,3000H,4000H,5000H
BUF DW ?
要求完成:(1)用一条指令完成将ARRAY的偏移地址送BX;
答:LEA BX,ARRAY
(2)用一条指令完成将ARRAY的第一字节单元内容送AL;
答:MOV AL,ARRAY
8、两个同符号的有符号数相减时,会发生溢出吗?为什么?
答:不会,两个同符号的数相减只能更小
9、下列语句是否有语法错误,若有,指出是哪一条及是什么错误。
(1)MOV CL, AX 答:类型不匹配
(2)CMP [SI],[DI] 答:源、目的操作数不能同时为变量。
10、设BX=0FFFFH,DI=20H,DS=2000H,CL=8,(20020H)=4567H,下列各条指令分别执行后BX中的内容各为多少?
(1)ROL BX,CL; 答:BX=0FFFFH _
(2)MOV BX,[DI]; 答:BX=4567H_
11、简述DOS系统功能调用方法,写出在屏幕上显示数字8的指令语句。
答:用INT 21H 指令完成调用。显示8的调用如下:
MOV DL,‘8’
MOV AH,2
INT 21H
12、定义数据段DATAS,数据段中的数据按下列要求依次存储:
(1) 变量BUF,大小为25个字节,初值为0
答:BUF DB 25 DUP(0)
(2) 变量ARRAY,类型为字,初值为12H,56H,78H,0AH
答:ARRAY DW 12H,56H,78H,0AH
(3) 变量MSG存储字符串'yes'
答:MSG DB ‘yes’
13、假设DS=2000H,BX=0100H,(20100H)=30H,(20101H)=10H
问:(1) 执行MOV DX,[BX] 答:DX=_1030H
执行LEA DX,[BX] 答:DX=_0100H
(2) 简述两条指令区别
答:MOV DX,[BX] 取BX 指示单元的内容,LEA DX,[BX] 取BX 的内容。
14、如果要检查BX寄存器中的第13位是否为1,应该用什么指令?
答:1.TEST BX,2000H JNZ YES
15、ADD 2[BX],AX, 执行前:(AX)=40,(BX)=100H,DS:(102H=50。
问源、目的操作数的寻址方式和运算结果。
答:源操作数为寄存器寻址方式,目的操作数采用的是变址寻址方式。(102H)=90
16、写出执行以下计算的指令序列,其中X、Y、Z、R、W均为存放16位带符号数单元的地址。
(1) Z←W+(Z-X) (2) Z←(W*X)/(Y+6),R←余数
(2) ADD Y, 6
MOV AX, W
IMUL X
IDIV Y
MOV Z, AX
MOV R, DX
答:
(1) MOV AX, Z
SUB AX, X
ADD AX, W
MOV Z, AX
17、写出执行以下计算的指令序列,其中X、Y、Z、R、W均为存放16位带符号数单元的地址。
(1) Z←W-(X+6)-(R+9) (2) Z←((W-X)/5*Y)*2
(2) MOV AX, W
SUB AX, X
CWD
MOV BX, 5
IDIV BX
IMUL Y
SHL AX, 1 ;((DX),(AX))*2
RCL DX, 1
答:
(1) MOV BX, X
ADD BX, 6
MOV CX, R
ADD CR, 9
MOV AX, W
SUB AX, BX
SUB AX, CX
MOV Z, AX
18、ADD AX,4[BX+SI]。执行前:(AX)=35,(BX)=100H,(SI)=20H,(124H)=43。问源、目的操作数的寻址方式和运算结果。
答:1. 源操作数为基址加变址寻址方式,目的操作数采用寄存器寻址方式。(AX)=78
19、两个同符号的有符号数相减时,会发生溢出吗?为什么?
答:不会,两个同符号的数相减只能更小。
20、简述DOS系统功能调用方法,写出在屏幕上显示数字8的指令语句。
答:用INT 21H 指令完成调用。显示8的调用如下:
MOV DL,‘8’
MOV AH,2
INT 21H
21、判断下列指令是否正确,如果有错误,说明原因。
(1)MOV CS,AX 答:×,代码段CS不能由用户来修改。
(2)SUB AX,[DI+SI] 答:×,SI和DI不能同时出现在同一条指令中
(3)MOV [DX],AX 答:×,DX不能为寄存器间接寻址
(4)LEA BX,P 答:√,正确
22.请设置一个数据DATA段,按照如下定义变量:
(1) MY1B为字符串变量:”Personal Computer”
(2) MY2B为用十进制数表示的字节变量:63
答:DATA SEGMENT
MY1B DB ”Personal Computer”
MY2B DB 63
DATA ENDS
23.汇编语言程序上机有哪4个步骤?分别利用什么程序完成、产生什么输出文件?
答: ⒈ 编辑 文本编辑程序 汇编语言源程序.ASM
⒉ 汇编 汇编程序 目标文件.OBJ
⒊ 连接 连接程序 可执行文件.EXE
⒋ 调试 调试程序
24.说明CF和OF标志的差异。
答:进位标志CF表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志OF表示有符号数运算结果是否超出范围,运算结果已经不正确.
25.对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?
FLDB DB ?
TABLEA DW 20 DUP (?)
TABLEB DB ‘ABCD’
(1) MOV AX, TYPE FLDB
(2) MOV CX, LENGTH TABLEA
(3) MOV CX, LENGTH TABLEB
答:(1) (AX)=0001H
(2) (CX)=0014H
(3) (CX)=0001H
26.条件转移指令JZ xxxx的含义是什么 ?
答: 判断ZF标志,若为零则转移到xxxx标号的语句去执行;否则继续。
27.写出几种使AL置0的指令。
答:MOV AL,0
XOR AL,AL
AND AL,0
SUB AL,AL
28.汇编语言上机需要那几步?
答:1)编辑:执行EDIT.EXE产生源文件,如:文件名.ASM
2)汇编:执行MASM.EXE产生目标文件,如:文件名.OBJ
3)连接:执行LINK.EXE产生可执行文件, 如:文件名.EXE
4)运行、调试:执行DEBUG.EXE进入调试状态
29.状态标志寄存器除了OF、PF外还有那几个?
答:还有CF、ZF、AF、SF
30. 现有程序段如下:
MOV CX,100
LEA BX,BUF
MOV DX,0
L1:MOV AL, [BX]
CMP AL,10
JL L2
INC DX
L2:INC BX
LOOP L1
请回答 :(1)该程序段完成的功能是什么?
(2)如果将JL改为JG,该程序段完成的功能又是什么?
答:(1)统计BUF中大于等于10的数据个数。
(2)统计BUF中小于等于10的数据个数。
四、程序分析题
1.现有如下程序段:
ADR1 DB ‘A11BCDErgfe54S5ff43' JB NEXT
N = $-ADR1 CMP AL,39H
... JA NEXT
XOR DX,DX INC DX
MOV CX,N NEXT:INC BX
LEA BX,ADR1 LOOP DON
DON: MOV AL,[BX] HLT
CMP AL,30H
请回答:(1)该程序完成的功能是什么?1.
答:(1)统计数字字符的个数。
(2)程序执行后DX寄存器中存放的内容是什么?
答:(2)(DX)=0007H
2.分析下面的程序段:
BEG:MOV AH,1 CMP AL,'A'
INT 21H JB NEXT
CALL SUB1 CMP AL,'Z'
JC BEG JA NEXT
ADD AL,20H CLC
MOV DL,AL RET
MOV AH,2 NEXT:STC
INT 21H RET
... SUB1 ENDP
SUB1 PROC
请回答:(1)该程序完成的功能是什么?
答:(1) 把从键盘输入的大写字母转换为小写字母,并显示输出,其他字符全部舍弃。
(2)由DL寄存器输出显示的内容是什么?
答:(2)转换成小写字母的ASCII值
3.分析程序,回答问题:
BEGIN:LEA BX,BUFFER INC BX
XOR AL,AL DEC CL
MOV CL,64H JNZ REPEAT
REPEAT:MOV BYTE PTR[BX],AL HLT
问:(1)该程序的功能是什么?
答:从数据区BUFFER为首地址开始,连续将100个字节单元清零。
(2) 程序执行后BUFFER中存放的内容是什么? 0
4.回答以下程序段的功能:
DATX1 DB 300 DUP(?) MOV DI,0
DATX2 DB l00 DUP(?) NEXT:MOV AL,DATX1[BX][SI]
... MOV DATX2[DI],AL
MOV CX,100 INC SI
MOV BX,200 INC DI
MOV SI,0 LOOP NEXT
请问:(1)该程序完成的功能是什么?
答: 数据块搬家程序
(2)程序执行后,指出DATX2单元中的内容是什么
答:将DATX1中的后100个数据传送到DATX2中
5.现有程序段如下:
LEA BX,ADDR MOV AX,0
MOV CX,99 JMP EXIT
MOV AX,[BX] NEXT:MOV CL,100
DON:ADD BX,2 DIV CL
ADD AX,[BX] EXIT:MOV RETT,AX
LOOP
展开阅读全文