内容发布更新时间 : 2024/12/27 19:37:06星期一 下面是文章的全部内容请认真阅读。
第4、5章练习题
习题
一、选择题 (请从下列各题所给答案中选出全部正确的答案) 1、汇编程序是 的程序。
A、汇编语言 B、属于操作系统
C、将汇编语言源程序翻译成目标文件 D、用高级语言建立数学模型
2、、从建立XX.ASM文件到生成XX.EXE文件,中间要经过用 软件汇编,用 软件链接。
A、MASM,EDIT B、MASM,LINK C、DEBUG,TC D、TC,LINK
3、下列指令中 是对当前用户程序的堆栈进行栈操作。 A、POP DX B、MOV BL,SS:「SP」 C、PUSHF D、CALL SUBGRAM
4、在下列指令中 指令的操作数是表示指令的地址。 A、PUSH DX B、SHR WORD PTR 「DI」,l C、JNZ NOZ D、RET
5、指令:MOV DX,[BX+Dl+1200H]中的寻址方式为 。 A、源操作数:寄存器寻址,目的操作数:相对基址变址寻址 B、源操作数:相对基址变址寻址,目的操作数:寄存器寻址 C、相对基址变址寻址 D、寄存器寻址
6、 可以用于寄存器间接寻址。
A、BP B、BL C、CX D、SI 7、指令 是双操作数指令。
A、DEC SI B、PUSH AX C、DIV CX D、CLD
8、当微型计算机执行“MOV BX,[2000H]”指令时,实质上是CPU对内部存储器进 行 操作。
A、写 B、读 C、调用 D、转移 9、在下列指令中 指令的操作数是定义在内存中的数据。 A、MOV AX,[SI] B、INC BYTE PTR [BX] C、CALL Pl D、JE LOP
10、在数据传送指令中,立即数可以直接传至 。
A、通用数据寄存器 B、存储器单元 C、段寄存器 D、变址寄存器 二、填空题
1、8086/8088的寻址方式表明,汇编语言指令系统的数据基本来自 、 和 3个方面。
2、在对存在内存单元中数据访问时, 就是存储单元的有效地址。
3、 指令的操作将使用到堆栈。 4、JMP指令与CALL指令的区别是 。 5、与“LOOP NEXT”等效的指令序列是 。 6、能完成指令“XCHG AX,[SI]”功能的MOV指令序列是 。 7、与指令“MOV SI,OFFSET TABLE”等效的指令是 (TABLE是已定义的数据变量名)。
8、指令“MOV CL,0”执行后可对寄存器CL清0。此外,指
令 , , 执行的结果不但使CL=0,还使状态标志位 清0。
9、设寄存器BL=2,则执行指令“MUL BL”的结果为AL*2,除此之外,指令 执行的结果也是AL*2。 10、假设某程序的数据段中定义如下,请在注释部分写出各语句汇编后占内存空间的单元数。 CNT EQU 20 :占内存空间 单元 PARTNO DW ? :占内存空间 单元 PNAME DB CNT DUP(?) :占内存空间 单元 COUNT DD 0,1,2,4 :占内存空间 单元 三、判断题
1、请指出如下指令哪些是错误的,并说明原因。 (1)MOV [SP],AX (2)PUSH CS
(3)MOV CX,DL (4)PUSH DH
(5)MOV AL,300
(6)LEA AX ,[BX+DI] (7)XCHG ES:[BP],3 (8)XCHG [BP],ES (9)MOV AX,BX+DI (10)MOV SS,1234H
2、下面哪些指令是错的 (假设OP1,OP2 是已经用 DB定义的变量)? (1)TEST l00,CX (2)TEST OP1,255 (3)TEST OP1,OP2 (4)TEST BX,OP1
3、设在某个程序中有如下片断,请判断并改正有错误的指令语句 ┆
VARW DW 1234H,5678H VARB DB 3,4
VARD DD 12345678H ┆
MOV AX,VARB MOV VARD,BX MOV VARD+2,ES MOV CL,VARW+3
4、“CALL”指令与“INT N”指令执行的结果是等效的。
5、“CALL NEAR ABC”指令与“PUSH IP”、“JMP NEAR ABC”指令序列的执行结果是等效的。
答案与解析
一、选择题(注意,此处的选择题不是通常的“选出惟一的一个正确答案”,而是“选出全部的正确答案”) 1、C。 2、B。
3、A、C、D。此题中:答案“A、POP DX”是出栈指令;答案“C、RETF”是返回指令、“D、CALL SUBGRAM”是调用于程序指令,这3条指令在执行过程中都要改变堆
栈指针寄存器SP的值,都会使堆栈的存储形态发生变化。所以答案A、C、D符合题目所求。而答案“B、MOV BL,SS:[SP]”虽然源操作数是SS:[SPl,但指令执行后不改变堆栈指针寄存器SP的值,也不会便堆栈的存储形态发生变化。
4、C、D。此题中:答案“C、JNZ NOZ”的操作数是标号(目标地址)NOZ,指令“JNZ NOZ”的操作会改变指令指针寄存器IP的值,无论判断条件是否成立指针寄存器IP总要指向指令的地址。答案“D、ENT”的执行结果也涉及到指针寄存器IP,指令“RET”执行后使指针寄存器IP指向子程序调用后的返回地址。
5、B。对这个题首先要明确的是,寻址方式描述的对象是数据而不是指令,所以要对源操作数、目的操作数分别说明其寻址方式。 6、A、D。
7、B、C。在此题中,答案“A、DEC SI”、“D、CLD”显然是单操作数指令。答案“B、PUS HAX”的主要操作是[SP]←AX,源操作数是AX,目的操作数是[SP],所以PUSH指令是双操作数指令。答案“C、DIV CX”是除法运算,指令功能中指定以DX、AX作为被除数,显然DIV指令是双操作数指令。 8、B。 9、A、B。
10、A、B、D。 二、填空题
1、在指令中立即给出的数据(立即数)、寄存器存储的数据、内存单元中存储的数据 2、最终形成的段内偏移地址 3、PUSH、POP、CALL、RET
4、CALL指令在执行时要将返回地址保护进堆栈,而JMP指令则没有这步操作。 5、DEC CX JNZ NEXT 6、MOV BX,AX MOV AX,[SI] MOV [SI],BX 7、LEA SI,TABLE
8、SUB CL,CL、XOR CL,CL,AND CL,0,CF 9、SHL AL,1、ADD AL,AL 10、不占内存空间、2、20、16 三、判断题 1、
(1)错。使用寄存器间接寻址方式,方括号内只能是基址寄存器或变址寄存器。 (2)“PUSH CS”指令虽然汇编程序在汇编时并没给出错误信息,但在非转移非调用的程序中不要让控制程序流程的CS、IP寄存器出现在传送指令中。
(3)错。源操作数DL是8位寄存器(字节型),目的操作数CX是16位寄存器(字型), 两个操作数的数据类型不匹配。
(4)错。进栈指令的操作是字操作,即操作数应是16位寄存器或内存数据。
(5)错。AL是8位寄存器,可存储的最大数据是255,而立即数300已经超出了此范围。 (6)对。
(7)错。数据交换指令中不允许使用立即数。 (8)错。不适当使用段寄存器。 (9)错。非法使用寄存器。