第3章汇编语言程序设计基础
更新时间:2023-11-05 12:27:01 阅读量: 综合文库 文档下载
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
42. 当执行指令ADD AX,BX后,若AX的内容为2BA0H时,设置的奇偶标志
位PF=1下面叙述中正确的是( )。
A.表示结果中含1的个数为偶数 B.表示结果中含1的个数为奇数
C.表示该数为偶数 D.表示结果中底8位含1的个数为偶数 43. 完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是( )。 A. MOV AL,00H B. AND AL,00H C. XOR ALL,AL D. SUB AL,AL 44. 下列指令执行后总是使CF=0,CF=0的是( )。
A. AND B. NEG C. NOT D. INC
45. 在串操作指令前使用重复前缀指令REPE ,终止串的重复操作条件是
( )。
A. CX=0,且ZF=0 B. CX=0, 且ZF=1 C. CX=0,或ZF=0 D. CX=0,或ZF=1 46. 下面指令中,合理而有意义的指令是( )。
A. REP LODSB B. REP SCASB C. REP CMPSB D. REP MOVSB 47. 在汇编语言程序中,对END语句叙述正确的是( )。 A. END语句是一可执行语句
B. END语句表示程序执行到此结束 C. END语句表示源程序到此结束 D. END语句在汇编后要产生机器码
48. 下面的数据传送指令中,错误的操作是( )。
A. MOV SS:[BX+DI],1000H B. MOV DX,1000H C. MOV WORD PTR[BX],1000H D. MOV DS,2000H 49. 设AX=1000H NEG AX NOT AX
执行上述指令后,正确的结果是( )。
A. AX=1001H B. AX=0FFFH C. AX=1000H D. AX=0111H 50. CBW指令的功能是( )。
A. 把源操作数的符号位扩展到目的操作数中
B. 把AL中的符号位扩展到AH中 C. 把AH中的符号位扩展到AL中 D. 把AX中的符号位扩展到DX中 51. 下面语句中有语法错误的语句是( )。
A. DB 45H B. DW 0ABCDH C. DW ‘ABCD’ D. DD ‘AB’ 52. 在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含
类型是( )。
A. WORD B. PAGE C. BYTE D. PARA 53. 在汇编语言程序的开发过程中使用宏功能的顺序是( )。 A. 宏定义,宏调用 B. 宏定义,宏展开
C. 宏定义,宏调用,宏展开 D. 宏定义,宏展开,宏调用
54. 在汇编语言源程序中,每个语句由四项组成,如语句要完成一定的功
5
能,那么该语句中不省略的项是( )。
A. 名字项 B. 操作项 C. 操作数项 D. 注释项
55. 编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形
成条件的指令有( )。
A. CMP B. SUB C. AND D. MOV 56. 下列指令执行后能使BX中数据必为奇数的是( )。 A. XOR BX,01H B. OR BX.01H C. AND BX,01H D. TESE BX,01H 57. 设CL=05H,要获得CL=0AH,可选用的指令是( )。 A. XOR CL,0FH B. NOT CL C. OR CL,0AH D. AND CL,0FH 58. 没有语法错误的输出指令是( )。
A. OUT AX,30H B. OUT DX,AL C. OUT AL,DX D. AND 30H,AH 59. 使用DOS功能调用时,子程序编号应放在寄存器( )。
A. AH中 B. AL中 C. AX中 D. 任意指定 60. 下列单元中能实现留空8个字节单元的是( )。
A. DA1 DT ? B. DA2 DW ?,? C. DA3 DD? D. DA4 DQ ? 二、程序分析题 1.
ORG 0024H AR1 DW 4,5,$+4 ┆
MOV AX,AR1+4
执行后AX中的内容是什么? 2.
MOV BX,0FFFEH MOV CL,2 SAR BX,CL
指令序列执行后BX为_______。 3.
DABY1 DB 12H,34H,56H。78H DB $-DABY1
DABY2 DB 10H DUP(1,2,3) ┆
MOV DX,SIZE DABY1
MOV DX,WORD PTR DABY1+4
上述指令序列执行后,DX的内容是什么? 4. 已定义数据段 DATA SEGMENT
6
ORG 0213H DA1 DB 15H,34H,55H ADR DW DA1 DATA ENDS
能是AX中数据为偶数的语句是__________。 5.
MOV AL,-1 NEG AL XOR AL,65
上述程序段执行后AL中的内容是__________。 6.
DA-BYTE EQU THIS BYTE
DA-WORD DW ’AB’,’CD’,’EF’,’GH’ ┆
MOV AL, DA-BYTE+3
MOV AH,BYTE PTR DA-WORD+4
上述两条传送指令执行后AX中的内容是____________。 7. 下面指令执行后,变量DAB的内容是___________。 DAW DW 2A05H DAB DB 0FAH ┆
MOV AL, BYTE PTR DAW SUB DAB,AL 8.
DATA SEGMENT
TA1 DW 0102H,0304H,0506H TA2 DB 02H,03H,04H ┆
MOV BX,DS:[0006H] AND BX,0FFH AND BH,[BX]
上述指令序列执行后,BX的内容是________。 9.
DA1 EQU BYTE PTR DA2 DA2 DW 0ABCDH ┆ SHL DA1,1 SHR DA2,1
上述指令序列执行后,DA2子存储单元的内容是_______。7
10.
MOV CL,8 ROL AX,CL OR AX,BX
假设AX=0012H,BX=0034H,那么上述程序段执行后,AX中的结果是_______。 11. 执行下列指令序列后,正确的结果是AL=_______。 MOV AL,81H ADD AL,AL ADC AL,AL 12.
DA2 DB 12H,34H,56H,0ABH DB $ - DA2
BUF1 DB 10H,20H,30H ┆
LEA SI,DA2 MOV CL,4[SI]
MOV CH,LENGTH BUF1
上述指令序列执行后,CX中的内容是________。
13. 寄存器BX和DX中存放有32位二进制数,其中BX中放高16位。下列程序段完成对这32位数扩大4倍的功能。那么该程序段中方框里应填的语句是________。
MOV CX,2 LOP: SHL DX,1
LOOP LOP 14.
TEST VAR,55H JZ ZERO ┆ ZERO;┅
┇
上述程序段,当VAR为何值时,JZ ZERO指令直接转移到ZERO处? 15.
NUM EQU 80H DA DB 34H ┆
AND DA NUM
上述语句执行后,DA中的内容是________。
8
16.
MOV AL,80H MOV CL,2 SAR AL,CL
上述指令序列执行后,结果是________。 17. 某数据段如下:
DATA SEGMENT ORG 20H X DB 12H Y DW 789H DATA ENDS
Y单元的偏移地址是________。 18.
DATA SEGMENT DA1 DB 32 DUP(?) DA2 DW 1456H,798AH DA3 DW DA2 DATA ENDS ┆
MOV BX,DA3
上述指令执行后,BX中的内容是________。
19. 下面程序段执行后,从A1单一开始的10个字节内容是什么?A1 DB 10 DUP(0)
A2 DB 1,2,3,?,0AH;10个数 ┆
MOV CX,LENGTH A1
MOV SI,SIZE A1-TYPE A1
LOP MOV AL,A2[SI] MOV AL[SI],AL
SUB SI,TYPE A1 DEC CX JNE LOP ┆
20. 分析下面程序段,回答下列问题。 ⑴ 该程序段是什么结构的程序?
⑵ 程序执行后,DL=_____,屏幕上显示的字符是_________。 BUF DB 0CH ┆
MOV AL,BUF
9
CALL FAR PTR HECA ┆
HECA PROC FAR CMP AL,10 JC K1 ADD AL,7 K1: ADD AL,30H MOV DL,AL
MOV AH,2 INT 21H RET
HECA ENDP 21.
DB1 DW 1456 ┆
MOV AX,DB1
MOV CX,4
MOV DL,10 LOP : DIV DL MOV BL,AH MOV BH,0 PUSH BX MOV AH,0
LOOP LOP
上述程序段执行后,试回答: A. 向堆栈中压入了几个数据?
B. 按压如的先后顺序,用十六进制数表示压入堆栈的数据。 22. 现有一子程序:
SUB1 PROC
TEST AL,80H JE PLUS TEST BL,80H JNE EXIT0 JMP XCHANGE PLUS: TEST BL,80H JE EXIT0 XCHANGE: XCHG AL,BL EXIT0: RET SUB1 ENDP 试回答:
A. 子程序的功能是什么?
B. 如调用子程序前AL=9AH,BL=77H,那么返回主程序时,AL=________,BL=
10
_______。
23.
XOR AL,AL MOV AH,AL ADD AH,0 JZ NEXT XCHG AH,AL JMP K1
NEXT: MOV AH,0FFH K1: ?
上述程序运行后,AH=__________,AL=____________。 24. XOR AL,AL INC AL NEG AL INC AL
MOV BL,7FH ADC AL,BL C
25.已知
AX=1234H MOV BX,AX NEG BX ADD AX,BX
执行上述三条指令后,AX=__________,ZF=____________,CF=____________。 26.
BUF1 DB 41H,42H,43H,44H,45H,46H BUF2 DB 6 DUP(?) ┆
MOV SI,OFFFSET BUF1 MOV DI,OFFFSET BUF2 MOV CX,6 LOP: MOV AL,[SI]
SUB AL,7 AND AL,0FH MOV [DI],AL INC SI INC DI LOOP LOP
试回答:
11
A. 上述程序段执行后,BUF2开始的6个字节的存储单元的内容是什么? B. 在程序单元不变的情况下,AND AL,0FH指令可否用SUB AL,30H指令代替。
27.
BUFF DB’ABD & QC % $ A?XYZ’ CONT EQU 4 –BUFF ┆ CLD
LEA DI,BUFF MOV CX,CONT MOV AL,’$’ XOR DX,DX
NEXT: REPNZ SCASB CMP CX,0 JZ K1 INC DX JMP NEXT K1: ?
上述程序段运行后,DX中的值表示的意义是什么? 28.
DA-BY DB 83H,72H,61H,94H,5AH ┆
MOV CX,WORD PTR DA-BY AND CX,0FH MOV AL,DA-BY+3 AHL AL,CL
上述指令序列后,AL=__________,CL=____________。 29.
ADBX ┆
MOV AX,0
MOV AL,BYTE PTR A MOV CL,10 MUL CL
该程序段完成的功能的数学表达式是__________,结果放在__________中。 30.
ORG 1000H DA1 DB ┆
12
LEA BX,DA1 MOV CX,BX NEXT: ADD BX,1 LOOP NEXT
变量DA1的偏移地址=__________,程序段执行后B,X=_____________。 31. 程序段如下:
ASCI DB 6 DUP(?) ┆
MOV BX,OFFSET ASCI MOV AL,46H MOV CX,6
LOP:MOV [BX],AL DEC AL INC BX LOOP LOP 程序运行后试问:
A. 从ASCI开始的6个字节中依次存放的是什么数据? B. 与这些数据对应的ASCII码字符是什么? 32.
ORG 0010H DA-BY DB 3 DUP(0) ┆
MOV AL,10H
LEA BX,DA-BY MOV CX,3
LOP: MOV [BX],AL
ADD AL,BL INC BL LOOP LOP
执行上述程序段后,以DA-BY为首地址的三个字节存储单元中依次存放的内容是__________,__________,____________。
33.
A DW 1234H B DW 5678H ┆
PUSH A PUSH B POP A POP B
试回答:① 上述程序段执行后(A)=_________,(B)=__________。
② 设执行前SP=200H,执行后SP=_________。
13
34. 现有下列程序段:
MOV AX,6540H MOV DX,3210H MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL
试问上述程序段执行后,(AX)= ________,(BL)=________,(DX)=_________。 35. 分析下面程序段:
MOV AL,200 SAR AL,1 MOV BL,AL MOV CL,2 SAR AL,CL ADD AL,BL
试问程序段执行后(BL)= ________ ,(AL)= ________。 36. 程序段如下:
BLK1 DB 46,84,34,-5,20,122,73 ┆
MOV CX,7 LEA SI,BLK1 NEXT: MOV AL,[SI] INC SI
TEST AL,81H LOOPZ NEXT MOV BL,[SI] ┆
试回答程序段执行后: (AL)= ________ ,(BL)= ________。 37.
STRING DB ’ABCDEFGHIJ’ ┆
MOV AH,01H ;从键盘输入字符1~9 INT 21H AND AL,0FH DEC AL XOR AH,AH
MOV BX,OFFSET STRING ADD BX,AX
14
MOV DL,[BX]
MOV AH,02H ;显示输出 INNT 21H ┆ 试回答:
A. 上述程序段的功能是什么?
B. 如从键盘输入字符4,程序段有什么结果? 38.
MOV AX,0BC5FH MOV BX,0C0FBH XOR AX,BX XOR AX,BX
上述程序段运行后,AX= ________,CF=________。 39.
DATA SEGMENT ORG 3040H YY1 DB 30H,40H YY2 DB 3040H DATA ENDS ┆
MOV BX,OFFSET YY1 MOV AX,[BX]
MOV CL,BYTE PTR YY2+1 MOV CH,TYPE YY2
上述程序段执行后,AX= ________,BX=________。 40.
A DB 0F8H
B DB 3 DUP(?) ┆
LEA DI,B
MOV CX,3 MOV AL,A
LOP: SAR AL,1
MOV [DI],AL INC DI LOOP LOP
上述程序段运行后,从B单元开始依次存放的数据是多少?
41. 已知BUF开始的数据区存放有10个大、小写字母,下面程序段完成的功能是什么?
MOV CX,10
15
LEA BX,BUF K2: MOV AL,[BX] CMP AL,’Z’ JBE K1
SUB AL,20H MOV [BX],AL K1: INC BX LOOP K2 ┆
42. 设寄存器AL,BL,CL中内容均为76H。
XOR AL,0FH AND BL,0FH OR CL,0FH
执行上述指令序列后,AL= ________ ,BL= ________,CL= ________。43.已知
AX=0A33AH,DX=0F0F0H AND AH,DL XOR AL,DH NEG AH NOT AL
执行上述指令序列后,AH= ________ ,AL= ________。 44.
DATA SEGMENT
S9 DB 0,1,2,3,4,5,6,7,8,9, DATA ENDS ┆
LEA SI,S9 LEA DI,S9+1 MOV CX,5 LOP: MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL
ADD SI,2
ADD DI,2 LOOP LOP
上述程序段运行后,S9开始的10个字节存储单元内容是什么? 45.
MOV AL,38H MOV BL,49H ADD AL,BL
16
MOV CL,AL DAA RET SUB0 ENDP
上述程序段运行后,AL= ________,CL=________。 46.
DA3 EQU WORD PTR DA4
DA4 DB 0ABH,89H ┆
SHR DA3,1 MOV DX,DA3 SHL DA4,1 MOV CL,DA4
上述程序段运行后,CL= ________,DX=________。 47.
MOV AL,01H ROR AL,1 OR AL,AL NEG AL
上述程序段执行后,AL= ________,CF=________。
48. 设A,B均是长度为10的字节数组,DS,ES已指向同一数据段:A DB 1,2,3,4,5,6,7,8,9,0AH B DB 0AH,,9,8,7,6,5,4,3,2,1 ┆
LEA SI,A LEA DI,B MOV CX,10 CLD LOP: LODSB
XCHG AL,[DI] XCHG SI,DI
DEC DI STOSB
XCHG SI,DI INC DI LOOP LOP
上述程序段执行后,试回答:
A. 程序段完成什么功能?
B. A和B两个字节数组的内容分别是什么? 49. 已知AL 的值为0~F中一个十六进制数:
17
HECA PROC FAR CMP AL,10
JC KK ADD AL,7
KK: ADD AL,30H
MOV DL,AL MOV AH,2 INT 21H RET
HECA ENDP 试回答:
A. 该子程序完成什么功能?
B. 如调用子程序时AL=3, 子程序执行后,DL=________, 如调用子程序时AL=0FH, 子程序执行后,DL=________。
50.
MOV AL,0FH XOR AL,0FFH MOV CL,7 SHR AL,CL 试回答:
A. 上述程序段执行后,AL=___________。
B. 如将指令SHR换成ROR指令后,那么程序的执行后,AL=___________。 51. 已知
BX = 5F5CH,CX = 8303H,CF=1 ROR BX,CL XOR BH,CH ROL BX,CL
程序段执行后,BX= ________,CF=________。 52.
X DW 0123H,2A3EH,,89DFH CUNT EQU $-X
Y DB CUNT DUP(0) ┆
LEA SI,X LEA DI,Y MOV CX,CUNT CLD
REP MOVSB 试回答:
A. 上述程序段执行后,Y数据区各字节单元中的内容是什么?
B. 程序段功能不变情况下,REP MOVSB 指令可否用下面两条指令代替:
18
LOP: MOVSB LOOP LOP 53.
MOV AX,0E0EH MOV BX,AX SHR BX,1 CWD DIV BX
XCHG BX,AX MUL BX
上述程序段运行结束后,AX= ________,BX=________。
参考解答
一、单项选择题
1.A 2.A 3.C 4.B 5.D 6.A 7.C 8.C 9.C 10.B 11.C 12.A 13.D 14.C 15.B 16.D 17.A 18.A 19.B 20.C 21.A 22.D 23.C 24.D 25.D 26.B 27.C 28.A 29.C 30.B 31.B 32.D 33.B 34.B 35.C 36.B 37.C 38.C 39.C 40.D 41.A 42.D 43.A 44.A 45.D 46.D 47.B 48.D 49.B 50.B 51.C 52.D 53.C 54.B 55.D 56.B 57.A 58.B 59.A 60.D 二、程序分析题 1. 002CH 2. 0FFFFH 3. 0105H
4. MOV AX, WORD PTR DA1+2 5. 64H 6. ’FC’ 7. 0F5H 8. 0402H 9. 55CDH 10. 1234H 11. 05H 12. 0104H 13. RCL BX,1
14. VAR中第0,2,4,6位全为0 15. 0 16. 0E0H 17. 21H 18. 20H 19. 1~0AH
20. A. 子程序结构
B. DL=43H, 屏幕上显示的字符是C
19
21.A. 向堆栈中压入4个数据
B. 先后按序压入06H、05H、04H、01H 22. A. 若AL与BL同号,则不变; 若AL与BL异号,则交换。 B. AL=77H, BL=9AH 23. AH=0FFH,AL=00H 24. AL=80H, CF=00H 25. AX=00H, ZF=1,CF=1 26. A. 0AH~0FH
27. DX中的值为&的个数。 28. AL=A0H,CL=3
29. 数学表达式是10×X(X为变量A中的值),结果放在_AX_中。
30. 变量DA1的偏移地址= __1000H____,程序段执行后BX=_2000H_。 31. A. 6个字节中依次存放的是46H,45H,44H,43H,42H和41H。 B. 对应的ASCII码字符是F,E,D,C,B和A。
32. 以DA-BY为首址的三个字节存储单元中依次存放的内容是__10H___,__20H____,_30H___。
33. A. 上述程序段执行后A=_5678H__ ,B=_1234H__。 B. 设执行前SP=200H, 执行后SP=_200H__。 34.AX=_5400H__ ,BL=_06H__ , DX=_2106H__。 35. 执行后BL=_100__ ,AL=_125__。 36. 执行后AL=_-5_ ,BL=_20__。 37.A. 上述程序段的功能是:
从键盘输入1 ~9中某一字符要求输出显示A~I中对应的字符。 B. 如从键盘输入字符‘4’,则输出显示字符D。 38. 上述程序段运行后,AX=_BC5FH__ ,CF=_0__。
39. 上述程序段运行后,AX=_4030H__ ,BX=_3040H__,CX=_0230__。 40. 上述程序段运行后,从B单元开始依次存放的数据是FCH,FEH,FFH。 41. 程序段完成的功能是:将BUF中的小写字母变为大写字母。 42. 执行上述指令序列后,AL=_79H__ ,BL=_06H__,CL=_7FH__。 43. 执行上述指令序列后,AH=_60H__ ,AL=_35H__。
44. S9开始的10个字节存储单元内容是1、0、3、2、5、4、7、6、9、8。 45. 程序段运行后,AL=_87H__ ,CL=_81H__。 46. 程序段运行后,CL=_56H__ ,DX=_44D5H__。 47. 程序段执行后,AL=_00H__ ,CF=_1__。
48. A. 程序段完成的功能是:把变量A和B交换。 B. 程序段执行后,A和B连个字节数组的内容分别是: A DB 0A,9,8,7,6,5,4,3,2,1 B DB 1,2,3,4,5,6,7,8,9,0A
49.A. 该子程序完成的功能是:把AL中0~F转换为其ASCII码值交。 B. 如调用子程序时AL=3, 子程序执行后,DL=_33H__,如调用子程序时AL=0FH, 子程序执行后,DL=_46H___。
50.A. 上述程序段执行后,AL=_01H__。
B. 如将指令SHR换成ROR指令后,那么程序的执行后,AL=__E1H____。
20
解:
MOV CX,COUT ADD AL,30H
3-14 设A、B是长度为10的字节数组,用串操作指令编写程序,实现A数组和B数组内容的相互交换,试完善本程序。
DATA SEGMENT
A DB 1,2,3,4,5,6,7,8,9,0AH ORG 0010H
B DB 0AH,9,8,7,6,5,4,3,2,1 DATA ENDS ┆
LEA SI,A LEA DI,B MOV CX,10 LOP: LODSB
XCHG AL,[DI] _______________ DEC DI STOSB
_______________ INC DI LOOP LOP 解:
XCHG SI,DI XCHG SI,DI
3-15 试编写一程序段,将AL中的第7和0位,第6和1位,第5和2位,第4和 3位互换。
解:
MOV CX,8 MOV AH,0 K1: SHR AL,1
RCL AH,1 DEC DX JNZ K1 MOV AL,AH
3-16试编写一程序段,在CHAR为首址的26个字节单元中依次存放字母A~Z。
解:
MOV AL,’A’
MOV DI,OFFSET CHAR MOV CX,26
LOOP: MOV [DI],AL INC AL INC DI
26
LOOP LOP
3-17 设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放0~9的平方值,使用直接查表法编写一个子程序,在SSQRTAB中查找出DAT单元中对应的平方值送SQR单元。并写出主程序的调用方式。
数据段如下:
DATA SEGMENT
DAT DB XXH(XXH为-9~+9中的一个数) SQRTAB DB 0,1,4,9,?,64,81 SQR DB ? DATA ENDS 解:
DATA SEGMENT DAT DB XXH
SQRTAB DB 0,1,4,9,?,81 SQR DB ? DATA ENDS
STACK1 SEGMENT PARA STACK DB 20H DUP(0) STACK ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS: STACK1 START:MOV AX,DATA MOV DS,AX ┆
CALL SUBROT ┆
MOV AH,4CH INT 21H SUBROT PROC PUSH AX
PUSH BX
LEA BX,SQRTAB MOV AL,DAT TEST AL,80H JNS NEXT NEG AL
NEXT: XLAT SQRTAB MOV SQR,AL POP BX POP AX RET SUBROT ENDS CODE ENDS END STAR
27
28
29
30
51. 程序段执行后,BX= 4758H___,CF=__0______。
52.A. 上述程序段执行后,Y数据区各字节单元中的内容是: 23H,01H,3EH,2AH,DFH,89H
B. 程序段功能不变情况下,REP MOVSB 指令可否用下面两条指令代替: LOOP: MOVSB LOOP LOP
53.上述程序段运行结束后,AX= _0E0EH____,BX=_2____。
3.4 习题解答
3-1 设DS=1000H:
SS=2000H,AX=1A2BH,BX=1200H,CX=339AH,BP=1200H,SP=1350H,SI=1354H,(11350H)=0A5H,(11351H)=3CH, (11352H)=0FFH, (11353H)=26H, (11354H)=52H,
(11355H)=0E7H, (126A4H)=9DH, (126A5H)=16H, (21350H)=88H, (21351H)=51H。下列各指令都在此环境下执行,在下列各小题的空格中填入相应各指令的执行结果。
(1) MOV AX,1352H AX=__________
(2) MOV AX,[1352H] AX=___________
(3) MOV 0150H[BX],CH
(11350H)=___________, (11351H)=___________ (4) MOV AX,0150H[BP] AX=___________ (5) POP AX
AX=___________, SP=___________ (6) ADD [SI],CX
(11354H)=___________, (11355H)=___________
SF=________, ZF=________ ,PF=________, CF=_______, OF=________ (7) SUB BH,0150H[BX][SI]
BH=________ , SF=________ , ZF=________, PF=________ , CF=________ , OF=________ (8) INC BYTE PTR 0152H[BX]
(11352H)=___________, (11353H)=___________, CF=________ (9) INC WORD PTR 0152H[BX]
(11352H)=___________, (11353H)=___________, CF=________ (10) SAR BYTE PTR 0150H[BX],1
(11350H)=___________, CF=________, OF=________ (11) SAL BYTE PTR 0150H[BX],1
(11350H)=___________, CF=________, OF=________ 解:
(1) AX=1352H (2) AX=26FFH
(3) [11350H]=33H,[11351H]=3CH
21
(4) AX=5188H
(5) AX=5188H, SP=1352H
(6) [11354H]=ECH,[11355H]=1AH; SF==ZF=PF=OF=0;CF=1 (7) BH=75H; SF=ZF=PF=OF=0; CF=1
(8) [11352H]=00H;[11353H]=26H;CF不变 (9) [11352H]=00H;[11353H]=27H;CF不变 (10) [11350H]=D2H; CF=1;OF=0 (11) [11350H]=4AH; CF=1;OF=1
3-2 阅读下列各小题的指令序列,在后面空格中填入该指令序列的执行结果。 (1)
MOV BL,85H MOV AL,17H ADD AL,BL DAA
AL=___________,BL=__________,CF=__________ (2)
MOV AX,BX NOT AX ADD AX,BX INC AX
AX=___________,CF=__________,ZF=__________ (3)
MOV AX,0FF60H STC
MOV DX,96 XOR DH,0FFH SBB AX,DX
AX=___________,CF=__________ (4)
MOV BX,0FFFEH MOV CL,2 SAR BX,CL
BX=___________,CF=__________ 解:
(1) AL=02H;BL=85H;CF=1 (2) AX=0000H;CF=0 (3) AX=0000H;CF=0 (4) BX=0FFFFH;CF=1 3-3 AND AL,AL JZ BRCH1 RCR AL,1 JZ BRCH2 RCL AL,1
22
INC AL
JZ BRCH3
┆
上述程序运行后,试回答:
(1)当(AL)=_______________________________,程序转向BRCH1。 (2)当(AL)=_______________________________,程序转向BRCH2。 (3)当(AL)=_______________________________,程序转向BRCH3。 解:
(1) AL=00H (2) AL=01H (3) AL=0FFH
3-4 完成下列操作,选用什么指令:
(1)AX减去0520H以及上次运算的借位。 (2)将变量名TABLE的段地址送AX。 解:
SBB AX,0520H MOV AX,SEG TABL 3-5
D1 DB 20H DUP(?) D2 DW D1
请写出用一条指令实现取D1的偏移地址→SI中的三种方法。 解:
MOV SI,OFFSET DI MOV SI,D2 LEA SI,DI 3-6
MOV BX,0FFH AND BX,0FFFH OR BX,0F0FH XOR BX,00FFH
上述程序段运行后,BX= _____________,CF=_____________。 解:
BX=0F00H;CF=0 3-7
CMP AX,BX JGE NEXT XCHG AX,BX
NEXT: CMP AX,CX
JGE DONE XCHG AX,CX
DONE:?
试回答:
上述程序段执行后,原有AX,BX,CX中最大数存放在哪个寄存器中?这三个数是带符号数还是无符号数?
23
解:
AX;带符号数
3-8 画出下列语句中的数据在存储器中的存储情况。 ARRAYB DB 63,63H,’ABCD’,3 DUP(?),2 DUP(1,3) ARRAYW DW 1234H,5,’AB’,’CD’,?,2DUP(1,3) 解: 地址 数据 地址 ARRAYB 3FH 63H 41H 42H 43H 44H ? ? ? 01H 03H 01H 03H ARRAYW 34H 12H 05H 00H 3-9 程序中数据定义如下: DATA1 DW ?
DATA2 DB 32 DUP(?) DATA3 DD ?
DLENGTH EQU $ - DATA1 此时DLENGTH的值是多少? 解:
DLENGTH=38=26H
3-10 程序中数据定义如下: ARRAY DB ’ABCDEF’ RESULT DB ?
TABLE DW 20 DUP(?) 则执行指令
MOV AX,TYPE RESULT后,AX=________________________。 MOV BX,TYPE TABLE后,BX=________________________。 MOV CX,LENGTH TABLE后,CX=________________________。 MOV DX,LENGTH ARRAY后,DX=________________________。 MOV SI,SIZE TABLE后,SI=_________________________。
数据 42H 41H 44H 43H ? ? 01H 00H 03H 00H 01H 00H 03H 00H 24
MOV DI,SIZE ARRAY后,DI=_________________________。 解:
AX=1;BX=2;CX=20;DX=1; SI=40;DI=1
3-11 试按下列要求在数据段中依次书写各数据定义语句: (1) 以DA1为首字节的连接存储单元中存放20H个重复的数据序列:2,3,10个4,一个7。
(2) DA2为字符串变量,用字变量(DW)设置一个字符串;’STUDENTS’(按此顺序存放在各单元中)。
(3)用等值语句给符号COUNT赋值以DA1为首址的数据区共占有的字节数,此等值语句必须放在最后一句。
解:
(1) DAT1 DB 20H DUP(2,3,10 DUP(4),7) (2) DAT2 DW ’TS’,’DU’,’NE’,’ST’ (3) COUNT EQU DAT2-DAT1
3-12 面程序段是实现从键盘输入10个一位十进制数后累加。最后累加和非压缩BCD码形式存放在AH(高位)和AL(低位)中。使把程序段中所空缺的之空填上。
XOR BX,BX
_____________________
LOP: MOV AH,01H ; 键盘字符输入 INT 1H MOV AH,BH ADD AL,BL
____________________ MOV BX,AX LOOP LOP 解:
MOV CX,10 AAA
3-13 下面程序段的功能是把DA1数据区的数0~9转换为对应的ASCII码。试完善本程序段。
DA1 DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ASCI DB 10 DUP(?) CUNT = ASCI-DA1 LEA SI,DA1 LEA DI,ASCI
________________ LOP: MOV AL,[SI]
________________ MOV[DI],AL INC SI INC DI LOOP LOP1
25
正在阅读:
第3章汇编语言程序设计基础11-05
专业分类一览表08-19
大学生互评评语简短(优秀9篇)03-26
创建党建品牌实施方案04-05
巡逻民警事迹材料01-14
2016-2022年中国干变压器市场监测及投资方向研究报告 - 图文05-12
中财人大版练习题05-27
(全册合集)山东德州市2019届初三物理中考一轮复习导学案共18份wo05-20
医学生暑期社会实践报告3000字+05-28
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 汇编语言
- 程序设计
- 基础
- 北京天桥医院门诊管理系统需求分析
- 上海交通大学物理期中考试卷2009-144A
- 2018-2024年中国大麦行业市场竞争态势研究报告(目录) - 图文
- 建筑工程安全生产技术试题库
- 2020年新人教版四年级数学下册第1-4单元堂堂清(原创) - 图文
- 七下历史复习题及答案 - 图文
- 中级保育员历年试卷
- 应急预案控制程序
- 北师大版数学四年级上册路程、时间与速度优秀公开课教案(1)
- 进化中的城市读书笔记
- GLA-XI(配RCDD-12)说明书
- 幼儿园大班社会教案:城市的标记(学前班幼儿园大班教案)
- DNS实验报告
- 颗粒分析实验 文档
- 五年级数学上册 统计与可能性练习题 新人教版
- 魏坤示波器源程序
- 汽车可靠性技术(大作业)
- 初中地理小组合作学习中的问题及对策
- 油缸(液压缸)设计指导书 - 图文
- 中国建设银行核心竞争力分析及策略建议改