汇编期末考试复习【选择易错题】
(来自南大科院周权来题库——战无不胜的毛泽东思想)
1、用汇编语言编写的程序称为 ( )
A、 汇编程序 B、 源程序 C、可执行文件 D、目标程序
答案:B
注意区分A,汇编程序是指把汇编源程序翻译成计算机能够识别、执行的目标程序的软件。一种软件!属于系统软件,不是程序。
2、设AL中是无符号数,试将AL内容扩展后送入BX中, 能够完成此项功能的指令序列是
① CBW
MOV BX,AX
② MOV AH,0
MOV BX,AX
③ MOV AH,0FFH
MOV BX,AX
④ MOV BL,AL
MOV BH,AH
答案:2
题干中有说明是“无符号数”,所以当扩展后,AH内容都为0,第二个选项符合。
注意第一个选项,CBW应该【位于赋值之后】,例如:
> MOV AX,3478H
> CBW
3、AL、BL中都是无符号数,若(AL)>(BL)时,转到NEXT处。在执行CMP AL,BL指令后应选用的指令是
① JNBE NEXT ② JNLE NEXT
③ JBE NEXT ④ JLE NEXT
答案:1
JNBE记忆方法,N是否定,B可以看做是右边的数,JNBE不是右边的数大
反之,JBE,B(右边的数)更大,JAE就是左边的数大
JNLE、JLE都带有L,都是表示有符号数,L代表左边,记忆方法类似如上
遇到两者比较相关的条件转移指令,常会考查CF和ZF的状态。 例如:
当JNBE产生转移,那么AL>BL,CMP虽然不会影响操作数,但是会进行减法运算的方式改变状态标志位,所以AL-BL>0,且在做减法的时候不会产生进位,最终结果也不可能是0。
由此可得,JNBE转移时,CF=0 ,ZF=0
4、MOV AL,-1
NEG AL
XOR AL,65
上述程序段执行后,AL的内容是
① 40H ② 64H ③ 01H ④ 61H
答案:1
NEG求补指令:零减去操作数的值
易错题,注意65没有加H,要进制转换为十六进制
5、设AX中存放的是带符号数,对其进行除8操作,能够完成此项功能的指令序列是
① SHR AX,2
SHR AX,2
② SAR AX,2
SAR AX,1
③ MOV CL,3
SHR AX,CL
④ MOV CL,3
SAR AX,CL
答案:4
注意当移位次数>1时,要通过CL,不可以直接SHR AX,3
6、指出下面哪组伪指令使用是错误的( )
答案:3
7、 设ADRT=100H,不符合语法规则的语句是
① MOV AX,ADRT ② MOV AX,[ADRT+SI]
③ MOV [ADRT],AX ④ MOV ADRT[SI],AX
答案:3
有关MOV指令的注意事项:
1、目的操作数要与源操作数类型要一致,不能一个是字,一个是字节(常考)
2、目的操作数要和源操作数类型之一必须要有明确的类型
3、立即数不能作为目的操作数
4、不能用立即寻址方式给段寄存器传数
5、源操作数和目的操作数不能同时为存储器操作数,即存储单元之间不能用MOV指令直接传送
6、CS和IP不能作为目的操作数,但CS可以作为源操作数。
7、段寄存器之间不能用MOV指令直接传送
8、在传送字单元时,遵循“高字节存放在高地址,低字节存放在低地址”的原则。
8、已知DX=0A476H,CX=0203H,CF=1
OR DX,DX
RCR DX,CL
XCHG CH,CL
RCL DX,CL
上述程序段执行后DX= CF=
① 523BH 和1 ② 523BH和0
④ 423CH 和1 ④ 423CH 和0
答案:2
注意计算,考试时要画RCR,RCL指令示意图
9、
DATA SEGMENT
DA1 DB 64H DUP(?)
DA2 DW 0100H,0200H
DA3 DW DA2
……
MOV SI,DA3
上述指令执行后,SI中的内容是
① 100H ② 200H ③ 100 ④ 300H
答案:3
DA1内存单元有64H个,即100,则说明DA2的第一个单元地址是100,DA3的偏移地址与DA2一致,故SI的值为100,也可以填64H
SI 存储器指针
10、 现有一数据定义伪指令在DA单元定义一数据:
DA DW 0123H
能与上述语句等效的语句是
① MOV WORD PTR DA,‘123H’ ② MOV DA,123H
③ MOV Byte PTR DA,0123H ④ MOV DA,‘123H’
答案:2
可以根据画存储单元示意图得出答案:
11、
ADR DW 1234H,5678H
……
LEA SI,ADR
LDS BX,ADR
设变量ADR的偏移地址是100H,上述两条指令执行后:SI= ,DS=
① 100H 和1234H ② 100H 和5678H
③ 000H 和1234H ④ 000H和5678H
答案:2
12、
AR1 DB‘ABCDEFGH’
AR2 DB O
……
MOV AH,1
INT 21H
AND AL,0FH
DEC AL
LEA BX,AR1
XLAT AR1
MOV AR2,AL
假设键盘输入数字4,则执行后(AR2)= ; 执行后CF=
① 44H(或‘D’),0 ② 43H(或‘C’),1
③ 44H(或‘D’),1 ④ 43H(或‘C’),0
答案:1
13、yeqianyi DW 10H DUP(3 DUP(2,50),3,5)
上述语句汇编后,为变量yeqianyi分配的存储单元字节数是
① 80H ② 100H ③ 50H ④ 124H
答案:2
注意题目问的是【字节数】,定义中是DW,答案应该是10H*(6+2+2)
14、已知AX=0078H,BX=0408H
SHR BX,1
AND BX,0F0FH
MOV CX,4
LOP:XCHG BH,BL
DIV BL
SAL AX,1
LOOP LOP
上述程序段执行后,AX= BX=
① 30和0402H ② 30和 0204H
③ 35和0400H ④ 35和 0400H
答案:2,
注意SAL示意图
XCHG交换指令
15、
VARY1 EQU BYTE PTR VARY2
VARY2 DW 0ABCDH
……
SHL VARY1,1
SHR VARY2,1
上述两条指令执行后,VARY2字存储单元内容是
① 0ABCDH ② 0BCDEH ③ 55CDH ④ 0AB55H
答案:3
注意VARY1等价于VAR2的字节单元,也就是VARY1=CDH,在“SHL VARY1,1”进行的是字节为单元的移位(只对CDH进行操作),“SHR VARY2,1”是对上一步移位后的结果再次进行SHR操作。注意示意图需画对!
16、
答案:2
【XOR AX,BX】,倘若二者都为负数,符号位都为1,执行后为AX符号位为0,SF=0,。根据题意,只有当二者不是同为负数才需要转至NEXT,故,答案选2
JS转移条件,SF=1
17、下列操作中允许段超越前缀的是
① 取指令 ② 存目的串
② 以BP为基址存取操作数 ④ 堆栈操作
答案:1
18、不能表示存储单元逻辑地址是
① 变量名 ② 标号名 ③ 段名 ④ 符号名
答案:4
19、 ARRAY DW 6,9,
+
4
,
10
H
,
+4,10H,
+4,10H,+4
……
MOV AX,ARRAY+4
设变量ARRAY的偏移量是0084H,上述指令执行后AX中的内容是
① 0009H ② 008CH ③ 0090H ④ 0010H
答案:2
$+4就是把当前地址的值加上4赋给该存储单元
该题要注意ARRAY是以字为单位的!不能看到6,,9想当然以为是字节
20、已知AX=0FFFFH,DX=0001H
MOV CX,2
LOP:SHL AX,1
RCL DX,1
LOOP LOP
上述程序段执行后DX= AX=
① DX=0006H AX=0FFFDH ② DX=0006H AX=0FFFCH
③ DX=0007H AX=0FFFDH ④ DX=0007H AX=0FFFCH
答案:4