汇编语言模拟试题及答案
一,单项选择题 (在每小题的四个备选答案中,选出一个正确的答案, 并将其号码填 在题干后的括号内,每小题 1分,共 20 分)
1.指令 JMP FAR PTR DONE 属于 参考答案为 :C A .段内转移直接寻址 B ?段内转移间接寻址 C .段间转移直接寻址 D ?段间转移间接寻址 [解析]略 2.
下列叙述正确的是 参考答案为:C
A ?对两个无符号数进行比较采用 CMP 指令,对两个有符号数比较用 CMPS 指 令 B ?对两个无符号数进行比较采用 CMPS 指令,对两个有符号数比较用 CMP 指 令 C .对无符号数条件转移采用 指令
D .对无符号数条件转移采用 JGE/JNL 指令,对有符号数条件转移用 JAE/JNB 指令 [解析]对于无符号数和有符号数的比较都采用
CMPS 指令是串比较指令;
对两个 无符号数的条件转移指令应是: JAE、JNB、JBE、JNA; 对两个 有符号数的条件转移指令应是: JGE、JNL、JLE、JNG。 3. 地址为
据区最末一个字单元的物理地址是
A . 12CSBH B . 12B6BH C. 12C59H D . 12BFEH
[解析]末字与首字相隔(128- 1 =) 127个字,且每个字占用 2个字节,因此末 字单元的物理地址应为:
首字单元的物理地址+( 4.
考答案为 :C
A . MOV AL , [BX+SI] B. JMP SHORT DONI C. DEC [BX] D . MUL CL
[解析]当只有一个存储器操作数时,
这个操作数的类型不明确, 例如选项C中的 128 — 1) >2
在下列指令的表示中,不正确的是 参
即 12ABHX 10H + OOABH +( 128 — 1) X2 = 12C59H。
一个有 128个字的数据区,它的起始12ABH:00ABH ,请给出这个数
参考答案为 :C
CMP 指令;
JAE/JNB指令,对有符号数条件转移用
JGE/JNL
[BX] ,没有明确的说明访问该存储单元的类型,此时存储器操作数就必须需用类型 说明,如
DEC BYTE PTR [BX] 或 DEC WORD PTR [BX] 但是在题目的选项 C 中,没有指出
存储器操作数类型,所以该指令是不正 确的;而其它选项中的指令均是正确的。
5.在进行二重循环程序设计时,下列描述正确的是
参考答案为 :A
A .外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B ?外循环初值应置外循环之内;内循环初值应置内循环之内 C ?内、外循环初值都应置外循环之外
D ?内、外循环初值都应置内循环之外,外循环之内 [解析 ]循环参数置初值,应在进入循环以前给出。 6?条件转移指令JNE的测试条件为 A ? ZF=0 B ? CF=0 C. ZF=1 D . CF=1 [解析 ]略。
7.8086CPU 在基址加变址的寻址方式中,变址寄存器可以为 为:D
A . BX 或 CX B . CX 或 SI C. DX 或 SI D . SI 或 DI [解析]略
&已知 BX=2000H , SI=1234H,则指令 MOV AX , [BX+SI+2]的源操作在() 中。
参考答案为 :A
A ?数据段中偏移量为 3236H 的字节 B ?附加段中偏移量为 3234H 的字节 C ?数据段中偏移量为 3234H的字节 D .附加段中偏移量为 3236H的字节
[解析 ]指令中的源操作数的寻址方式是相对基址变址寻址, 且由于其中的基址寄 存器采用的是BX,所以源操作数是在数据段中,其偏移量为:
BX+SI+2=2000H+1234H+2=3236H 9 ?执行如下程序:
MOV AX , 0 MOV BX , 1 MOV CX , 100 A: ADD AX , BX INC BX LOOP A HLT
执行后( BX) = 参考答案为 :C A ? 99 B . 100 C . 101 D . 102
参考答案
参考答案为:A
[解析]1 )在进入循环之前,有三条指令分别初始化寄存器: AX为0、BX为1、 CX 为 100;
2)由于循环的控制部分采用的是 LOOP 指令,该指令有使 CX 减 1,并判
断其是否为 0 的功能,所以可知该循环的执行次数为 100 次;
3)循环体的主要功能是每次循环使 使 BX
的内容加 1。
4)直到最后一次(即第 100 次)循环时,加到 AX 中的 BX 的内容为 100, 且使
BX 加 1,即变为 101 后退出循环体。所以当执行完该段程序后, BX 的内容为 101。
5)该段程序的功能是(AX )= 1 + 2 +……+ 100 = 5050 10.上题的程序执行后( AX) = 参考答案为 :B A.5000 B.5050 C.5100 D.5150
[解析 ]请参看上题中的分析。 正确答案: B。
11 .对于下列程序段:
AGAIN :MOV AL ,[SI] MOV ES : [DI] ,AL INC SI INC DI LOOP AGAIN
也可用 _____ 指令完成同样的功能。 A.REP MOVSB B .REP LODSB C.REP STOSB D . REPE SCASB
[解析]该段程序的功能是将 SI所指向的数据段中的数据顺序传送给
DI所指向的附加段
参考答案为 :A
AX 中的内容累加 BX 的内容, 并
的一段数据区中,并且每次传送一个字节,即实现了字节串传送的功能,所以也可以使用 REP MOVSB 指令来完成同样的功能。
12.下面指令序列执行后完成的运算,正确的算术表达式应是
MOV AL ,BYTE PTR X SHL AL ,1 DEC AL
MOV BYTE PTR Y ,AL A.y=x2+1 B.x=y2+1 C.x=y2-1
D . y=x2-1 [解析]该段程序的第一条指令的功能是将 X 传送给 AL ;
第二条指令的功能是将 AL 的内容左移 1 位,即使得 AL 的内容扩大 2倍; 第三条指令的功能是使 AL 的内容减 1; 第四条指令的功能是将 AL 传送给 Y ; 综上所述该程序完成的
参考答案为 :D
运算是 Y=2X-1 。
13.在一段汇编程序中多次调用另一段程序, 考答案为 :B
A .占内存空间小,但速度慢 B .占内存空间大,但速度快 C.占内存空间相同,速度快 D .占内存空间相同,速度慢
[解析 ]1)宏指令简化程序的书写,不节省程序存储空间,但执行时间比子程序短。
2)子程序简化程序的书写,也节省程序的存储空间,但执行时间比宏指令长。 14. 在程序执行过程中, IP 寄存器中始终保存的是 A .上一条指令的首地址 B .下一条指令的首地址 C.正在执行指令的首地址
D .需计算有效地址后才能确定地址 [解析]在程序运行过程中,它始终指向下一条指令的首地址,它与
合确定下一条指令的物理地址。
15. PSW 寄存器中共有 _______ 位条件状态位,有 ________ 位控制状态位。 案为 :A
A. 6、3
B. 3、6 C. 8、4
D. 4、8
[解析]PSW有6位条件状态位:
用宏指令比用子程序实现起来。 参
参考答案为 :B
CS 代码段寄存器联
参考答
AF、CF、ZF、PF、SF、OF;
PSW有3位控制状态位: IF、TF、DF 下列指令执行时出错的是
参考答案为 :A
16.
A . ADD BUF1 , BUF2
B. JMP DWORD PTR DA T [BX] C. MOV AX , [BX+DI] NUM D . TEST AL , 08H
[解析 ]ADD 指令的两个操作数不能同时是存储器操作数,所以选项 A 中的指令是错误 的。 17.
已知(AX ) =1234H,参考答案为:D
MOV BX , AX NEG BX ADD AX,BX A. 1234H B. 0EDCCH C. 6DCCH D . 0000H
[解析]第一条指令的功能是将 A?BX,即BX中的内容为1234H ; 第二条指令的功能是对 BX
求补,即 BX 中的内容变为- 1234H; 第三条指令的功能是 AX+B冶AX ,即1234H+(-1234H)=XAX ; 所以执行三条指令后, AX 的内容为 0。
18. ____________________ 在下列指令中, 指令的执行会影响条件码中的 CF 位。 参考答案为 :D A. JMP NEXT
执行下述三条指令后,(AX )=
B . JC NEXT C. INC BX D.SHL AX ,1
[解析]JMP、JC指令不任何影响状态标志位;
INC指令执行结果除不影响 CF夕卜,其余状态标志位(AF、OF、PF、SF、ZF)都受 影
响。
SHL指令使 CF=O , OF = O,影响ZF、SF、PF标志位,AF无定义。 19.串指令中的目的操作数地址是由 _________ 提供。 参考答案为 :C
A SS: [BP]
? ? [SI] B DS C.: ES[DI]
[解析]略 A.DIV 2 B.DIV DX , 2 C.SAR DX , 1
D. SHL DX , 1 [解析]选项 A 中的的指令执行的操作是: AX/2 ;
选项 B 中的的指令书写格式不正确;
选项 C 中的的指令执行的操作是 :将 DX 的内容右移一位,将使 DX 的内容缩小为 原先的
1/2,即将 DX 的内容除以 2;
选项 D 中的的指令执行的操作是 :将 DX 的内容左移一位,将使 DX 的内容扩大为原先 的 2 倍,即将 DX 的内容乘以 2。
[解析](1)指令:SHR DX, 1使DX的内容向右移动了一位,因此
0000 ' 0000 ' 0101 ' 11即?BD05CH。
(2) 指令: RCR DL, 1 使 DL 的内容向右循环带进位移动了一位, DH 的内容不变,
因此 DX 的内容变为 0000' 0000' 1101' 1100即 00DCH。
(3) 指令: RCL DX, CL 使 DX 的内容向左循环带进位移动了 3位,因此 DX 的内容 变
为 0000' 0101' 1100' 1100即 05CCH。
2.写出完成下述功能的程序段:
(1 )传送 25H 到 AL 寄存器 (2) 将 AL 的内容乘以 2 (3) 传送 15H 到 BL 寄存器
(4) AL 的内容乘以 BL 的内容 并请写出最后( AX )=?
答:(1) MOV AL, 25H
( 2) SHL AL, 1
(3) MOV BL, 15H ( 4) MUL BL 最后,( AX ) =612H =1554
[解析]1)将AL的内容左移1位,将使它的内容扩大 2倍,即使AL的内容乘以2。 2)最后, AX 的内容应为 25H*2*15H=612H=1554 3 ?写一程序段,求双字长数 DX : bX的相反数。
答:NEG DX
NEG AX
DX的内容变为
:D CS: [IP] .
20.将 DX 的内容除以 2,正确的指令是 参考答案为 :C