第3章汇编语言程序设计基础 下载本文

3.2 重点难点分析

1. 8086指令系统

(1)8086指令的寻址方式

所谓指令的寻址方式是指在指令中操作数的表示方式。

8086的寻址方式有立即数寻址、寄存器寻址、存储器寻址、串操作寻址、外设I/O端口寻址以及程序转移操作寻址。其中变化最多的是存储器寻址,这种方式又分为直接寻址、寄存器间接寻址、基址寻址、变址寻址以及基址变址寻址。

要求掌握这些寻址方式的特点,能识别操作数的寻址方式。 (2)8086指令解析 重点是: ① 编程时能正确使用下述指令。

MOV、PUSH、POP、LEA、ADD、ADC、SUB、SBB、CMP、AND、OR、NOT、XOR、TEST、SHL、SHR、SAL、SAR、ROL、ROR、RAL、RAR、JMP、JZ(JE)、LOOP等条件转移指令。

② 读程序是能正确识别下述指令。

XCHG、XLAT、NEG、MUL、DIV、MOVSB、CMPSB、REP、JA、JB、JG、JL、JAE、JNB、HLT、NOP等指令。

难点是:LEA、CMP、TEST、XLAT、NEG、MUL、DIV、MOVSB、CMPS、REP、LOOP等指令。

2. 汇编语言的基本语法

(1)汇编语言程序格式

领会汇编语言源程序的两个组成特点:分段结构和语句行。 (2)常量、标识符合表达式

汇编语言程序的常量有数字常量、字符常量和符号常量。能正确掌握三种常量的表示方法。

正确掌握标识符的定义及规则。 正确识别指令中表达式的含义。 (3)指示性语句

对一些基本的指示性语句——SEGMENT/ENDS、ORG、ASSUME、PROC/ENDP、DB、DW、DD、EQU等必须正确掌握。

(4)指令性语句

必须正确掌握指令性语句中标号、操作数的表示方法和使用方法。 (5)宏指令

正确识别程序中的宏定义、宏名字、宏调用和宏展开。

3.汇编语言程序设计基础 (1)概述;

(2)顺序结构程序; (3)分支结构程序;

1

(4)循环结构程序; (5)子程序;

(6)DOS系统功能调用。 要求掌握:

·正确领会和识别顺序结构程序、分支结构程序、循环结构程序和子程序的结构特点;

·读懂教材中的9个程序举例;

·DOS系统功能调用——1号,9号和10(0A)号功能调用。

3.3 同步练习及参考解答

一、单项选择题

1.下列四个寄存器中,8位寄存器是( )。

A. DL B. AX C. BX D. CX

2.在程序运行过程中,确定下一条指令的物理地址的计算表达式是( )。

A. CS×16﹢IP B. DS×16﹢DI C. SS×16﹢SP D. ES×16﹢SI 3. 设BL=05H,要使结果为BL=0AH,应执行指令为( )。

A. NOT BL B. AND BL,0FH C. XOR BL,OFH D. OR BL,OFH 4.下面指令中,影响或修改标志位的指令是( )。

A. PUSHF B. POPF C. JNLE D. LOOPZ 5. 执行十进制调整指令DAA,DAS之前,必须把结果存放在( )。 A. DL中 B. CL中 C. BL中 D. AL中 6. 存放一条指令的存储单元的符号地址称( )。

A. 标号 B. 变量 C. 偏移量 D. 类型 7. 变量的类型属性有多种,下面4种类型中错误的是( )。

A. 字节型 B. 字型 C. 字符型 D. 双字型 8. 假设OP1、OP2是已经用DB定义的变量,下面哪条指令是错误的( )。 A. CMP AX, OP1 B. CMP BX,OP2

C. CMP OP1,OP2 D. CMP OP1,0FFH

9. 在指令AND DX,BX AND 0FBC0H中出现两个AND,正确的解释是( )。 A. 均是逻辑运算符

B. 均是指令操作码

C. 前者为指令操作码,后者为逻辑运算符

D. 两个AND操作码均在程序执行时得出运算结果

10. 由数据定义伪指令DB 16 DUP(0,2 DUP (1))所定义的数据单元中,有

数据0100H的字单元个数是( )。

A. 15 B. 16 C. 0 D. 32 11. 命令“ENDP”告诉汇编程序( )。

A. 宏定义结束 B. 过程定义结束 C. 段定义结束 D. 过

程运行结束

12. AX, BX中都是无符号数,如AX>BX时,转至NEXT处。在CMP AX,BX

指令后应选用的指令是( )。 A. JNBE NEXT B. JNLE NEXT C. JBE NEXT D. JLE NEXT

2

13. 要使串处理从低地指向高地址进行,应把标志位置为( )。

A. TF=1 B. TF=0 C. DF=1 D. DF=0 14. 使状态标志位CF清零的错误指令是( )。

A. OR AX,AX B. SUB AX,AX C. MOV CF,0 D. CLC 15. 设SP=1110H,执行PUSH AX指令后,SP的内容为( )。

A. SP=1112H B. SP=110EH C. SP=1111H D. SP=110FH 16. 汇编源程序出现语法错误的指令有( )。

A. MOV [BX+SI],AL B. MOV AX,[BP+DI]

C. MOV DS,AX D. MOV CS,AX 17. 设BL中有一无符号数,实现把BL中的数除以2,应选用的指令是( )。 A. SHR BL,1 B. SHL BL,1 C. SAR BL,1 D. SAL BL,1 18. 执行PUSH AX指令的正确步骤是( )。

A. 1. SP←SP-1,(SP)←AH B. 1. (SP)←AH,SP←SP-1 2. SP←SP-1,(SP)←AL 2.(SP)←AL,SP←SP-1

C. 1. SP←SP+1,(SP)←AH D. 1. (SP)←AH,SP←SP+1 2. SP←SP+1,(SP)←AL 2. (SP)←AL,SP←SP+1 19. CF=1时转移到目标地址的条件转移指令是( )。

A. JNC B. JC C. JZ D.JS

20. 在执行NEG指令时,对标志位CF有影响,其影响的规则是( )。 A. 对正数求补时,CF=0 B. 对负数求补时,CF=0

C. 对非零数求补时,CF=1 D. 对零数求补时,CF=1

21. 算术右移SAR和逻辑左移SHR两条指令执行后结果完全相同的情况是

( )。

A. 目的操作数最高位为0 B. 目的操作数最高位为1

C. 目的操作数为任意情况 D. 无论什么情况都不可能相同 22. 指令的操作数中,允许出现表达式,例如BUF1与BUF2均为变量名,

下面指令中语法正确的是( )。

A. MOV AX,BUF1+BUF2 B. MOV AX,BUF1/BUF2

C. MOV AX,BUF1+ES:BUF2 D. MOV AX,BUF2-BUF1

23. 下面指令中,操作数的寻址方式为寄存器间接寻址的指令是( )。 A. INC WORD PTR [BX+SI] B. INC CX,[SI+COUNT]

C. NEG BYTE PTR [BX] D. ADD AX,BX

24. 语句DA1 DB2 DUP(3,5,7)汇编后,该语句可等同于的语句是( )。 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 25. 下面有语法错误的指令是( )。

A. ADD AL,AH B. ADD [BX+3],AL

C. ADD AH,[DI] D. ADD[BP+2],DA1(DA1是变量名) 26. 完成对DX的有符号数除以2的指令是( )。

A. IDIV 2 B.SAR DX,1 C. ROR DX,1 D. RCR DX,1 27. 十进位位置1的指令是( )

A. CLC B. CMC C. STC D. NOP 28. 设AL=—15,要使AL=15应执行的指令是( )。

A. NEG AL B. NOT AL C. INC AL D. DEG AL

3

29. 在条件转移中指令中,结果为负数则转移的是( )。 A. JNS B. JZ C. JS D. JP 30. 下面的XCHG指令中,语法正确的是( )。

A. XCHG AL,DS B. XCHG BL,[BX]

C. XCHG AL,0FH D. XCHG BUF1,BUF2 31. 一条指令中目的操作数不允许使用的寻址方式是( )。 A. 寄存器寻址 B. 立即数寻址

C. 变址寻址 D. 寄存器间接寻址 32. 设SP=1FFEH,执行下列指令后,SP寄存器的值是( )。 ┆ POPF PUSH AX

A. 2000H B. 2002H C. 1FFCH D. 1FFEH

33. 在下列段寄存器中,代码段寄存器是( )。

A. ES B. CS C. DS D. SS

34.设内存单元(10FF0H)=10H,(10FF1H)=20H,(10FF2H)=30H,如从地址

10FF1H中取出一个字的内容是 ( )。

A. 1020H B. 3020H C. 2030H D. 2010H 35. 完成将累加器AX清零,下面错误的指令是( )。 A. SUB AX,AX B. XOR AX,AX C. OR AX,00H D. AND AX,00H

36. 设DS=5788H,偏移地址为94H,该字节的物理地址是( )。 A. 57974H B. 57914H C. 5883H D. 58ECH 37. 如AX=1000H NEG AX NEG AX

上述两条指令执行后,AX的值为( )。

A. 1001H B. 1002H C. 1000H D. 0F000H

38. 下列程序段其功能是对32位数求补,32位数已在DX:AX中,正确的程

序段是( )。

A. NEG AX B. NEG AX C. NOT DX D. NOT AX NEG DX NOT DX NOT AX NEG DX ADD AX,1 ADC DX

39. 当一个程序使用DOS系统功能调用退出用户程序时,在编写INT21H指

令前,应选用的指令是( )。

A. MOV AH,01H B. MOV AX,4CH C. MOV AH,4CH D. RET

40. 下面是六十六进制数88H的几种表示形式,错误的表示是( )。 A. 无符号十进制数136 B. 带符号十进制—120

C. 压缩型BCD码十进制数88 D. 8位二进制数—8的补码表示 41. 指令指针寄存器是( )。

A. IP B. SP C. BP D. PSW

4