《第3章汇编语言程序设计基础.doc》由会员分享,可在线阅读,更多相关《第3章汇编语言程序设计基础.doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、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
2、、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、义。(3)指示性语句对一些基本的指示性语句SEGMENT/ENDS、ORG、ASSUME、PROC/ENDP、DB、DW、DD、EQU等必须正确掌握。(4)指令性语句必须正确掌握指令性语句中标号、操作数的表示方法和使用方法。(5)宏指令正确识别程序中的宏定义、宏名字、宏调用和宏展开。3汇编语言程序设计基础(1)概述;(2)顺序结构程序;(3)分支结构程序;(4)循环结构程序;(5)子程序;(6)DOS系统功能调用。要求掌握:正确领会和识别顺序结构程序、分支结构程序、循环结构程序和子程序的结构特点;读懂教材中的9个程序举例;DOS系统功能调用1号,9号和10(0A)号功能调用。3.3 同步练习及
4、参考解答一、单项选择题1下列四个寄存器中,8位寄存器是( )。A. DL B. AX C. BX D. CX2在程序运行过程中,确定下一条指令的物理地址的计算表达式是( )。A. CS16IP B. DS16DI C. SS16SP D. ES16SI 3. 设BL=05H,要使结果为BL=0AH,应执行指令为( )。A. NOT BL B. AND BL,0FHC. XOR BL,OFH D. OR BL,OFH4下面指令中,影响或修改标志位的指令是( )。 A. PUSHF B. POPF C. JNLE D. LOOPZ5 执行十进制调整指令DAA,DAS之前,必须把结果存放在( )。
5、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,OP2C. CMP OP1,OP2 D. CMP OP1,0FFH9 在指令AND DX,BX AND 0FBC0H中出现两个AND,正确的解释是( )。 A. 均是逻辑运算符B. 均是指令操作码C. 前者为指令操
6、作码,后者为逻辑运算符D. 两个AND操作码均在程序执行时得出运算结果10 由数据定义伪指令DB 16 DUP(0,2 DUP (1)所定义的数据单元中,有数据0100H的字单元个数是( )。 A. 15 B. 16 C. 0 D. 3211 命令“ENDP”告诉汇编程序( )。 A. 宏定义结束 B. 过程定义结束 C. 段定义结束 D. 过程运行结束12 AX, BX中都是无符号数,如AXBX时,转至NEXT处。在CMP AX,BX指令后应选用的指令是( )。 A. JNBE NEXT B. JNLE NEXT C. JBE NEXT D. JLE NEXT13 要使串处理从低地指向高地址
7、进行,应把标志位置为( )。A. TF=1 B. TF=0 C. DF=1 D. DF=014 使状态标志位CF清零的错误指令是( )。 A. OR AX,AX B. SUB AX,AX C. MOV CF,0 D. CLC15 设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+DIC. MOV DS,AX D. MOV CS,AX 17 设BL中有一无符号数,实现把BL中的数
8、除以2,应选用的指令是( )。 A. SHR BL,1 B. SHL BL,1 C. SAR BL,1 D. SAL BL,118 执行PUSH AX指令的正确步骤是( )。A. 1. SPSP-1,(SP)AH B. 1. (SP)AH,SPSP-1 2. SPSP-1,(SP)AL 2.(SP)AL,SPSP-1C. 1. SPSP+1,(SP)AH D. 1. (SP)AH,SPSP+1 2. SPSP+1,(SP)AL 2. (SP)AL,SPSP+119 CF=1时转移到目标地址的条件转移指令是( )。 A. JNC B. JC C. JZ D.JS20 在执行NEG指令时,对标志位
9、CF有影响,其影响的规则是( )。 A. 对正数求补时,CF=0 B. 对负数求补时,CF=0 C. 对非零数求补时,CF=1 D. 对零数求补时,CF=121 算术右移SAR和逻辑左移SHR两条指令执行后结果完全相同的情况是( )。 A. 目的操作数最高位为0 B. 目的操作数最高位为1C. 目的操作数为任意情况 D. 无论什么情况都不可能相同22 指令的操作数中,允许出现表达式,例如BUF1与BUF2均为变量名,下面指令中语法正确的是( )。 A. MOV AX,BUF1+BUF2 B. MOV AX,BUF1/BUF2C. MOV AX,BUF1+ES:BUF2 D. MOV AX,BU
10、F2-BUF123 下面指令中,操作数的寻址方式为寄存器间接寻址的指令是( )。 A. INC WORD PTR BX+SI B. INC CX,SI+COUNTC. NEG BYTE PTR BX D. ADD AX,BX24 语句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,725. 下面有语法错误的指令是( )。 A. ADD AL,AH B. ADD BX+3,AL C. ADD AH,DI D. ADDBP+2,
11、DA1(DA1是变量名)26 完成对DX的有符号数除以2的指令是( )。 A. IDIV 2 B.SAR DX,1 C. ROR DX,1 D. RCR DX,127 十进位位置1的指令是( ) A. CLC B. CMC C. STC D. NOP28 设AL=15,要使AL=15应执行的指令是( )。 A. NEG AL B. NOT AL C. INC AL D. DEG AL29 在条件转移中指令中,结果为负数则转移的是( )。 A. JNS B. JZ C. JS D. JP30 下面的XCHG指令中,语法正确的是( )。 A. XCHG AL,DS B. XCHG BL,BXC.
12、XCHG AL,0FH D. XCHG BUF1,BUF231 一条指令中目的操作数不允许使用的寻址方式是( )。 A. 寄存器寻址 B. 立即数寻址C. 变址寻址 D. 寄存器间接寻址 32 设SP=1FFEH,执行下列指令后,SP寄存器的值是( )。 POPF PUSH AXA. 2000H B. 2002H C. 1FFCH D. 1FFEH33 在下列段寄存器中,代码段寄存器是( )。 A. ES B. CS C. DS D. SS34设内存单元(10FF0H)=10H,(10FF1H)=20H,(10FF2H)=30H,如从地址10FF1H中取出一个字的内容是 ( )。 A. 102
13、0H B. 3020H C. 2030H D. 2010H35. 完成将累加器AX清零,下面错误的指令是( )。 A. SUB AX,AX B. XOR AX,AX C. OR AX,00H D. AND AX,00H36 设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. 0F000H38. 下列程序段其功能是对32位数求补,32位数已在DX:AX中
14、,正确的程序段是( )。 A. NEG AX B. NEG AX C. NOT DX D. NOT AX NEG DX NOT DX NOT AX NEG DX ADD AX,1 ADC DX39. 当一个程序使用DOS系统功能调用退出用户程序时,在编写INT21H指令前,应选用的指令是( )。 A. MOV AH,01H B. MOV AX,4CH C. MOV AH,4CH D. RET40. 下面是六十六进制数88H的几种表示形式,错误的表示是( )。 A. 无符号十进制数136 B. 带符号十进制120C. 压缩型BCD码十进制数88 D. 8位二进制数8的补码表示41 指令指针寄存器
15、是( )。 A. IP B. SP C. BP D. PSW42. 当执行指令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,AL44 下列指令执行后总是使CF=0,CF=0的是( )。 A. AND B. NEG C. NOT D. INC 45
16、 在串操作指令前使用重复前缀指令REPE ,终止串的重复操作条件是( )。 A. CX=0,且ZF=0 B. CX=0, 且ZF=1 C. CX=0,或ZF=0 D. CX=0,或ZF=146 下面指令中,合理而有意义的指令是( )。 A. REP LODSB B. REP SCASB C. REP CMPSB D. REP MOVSB47 在汇编语言程序中,对END语句叙述正确的是( )。 A. END语句是一可执行语句B. END语句表示程序执行到此结束C. END语句表示源程序到此结束D. END语句在汇编后要产生机器码48 下面的数据传送指令中,错误的操作是( )。 A. MOV SS
17、:BX+DI,1000H B. MOV DX,1000H C. MOV WORD PTRBX,1000H D. MOV DS,2000H49 设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. D
18、W ABCD D. DD AB52 在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是( )。 A. WORD B. PAGE C. BYTE D. PARA53 在汇编语言程序的开发过程中使用宏功能的顺序是( )。 A. 宏定义,宏调用 B. 宏定义,宏展开C. 宏定义,宏调用,宏展开 D. 宏定义,宏展开,宏调用 54 在汇编语言源程序中,每个语句由四项组成,如语句要完成一定的功能,那么该语句中不省略的项是( )。 A. 名字项 B. 操作项 C. 操作数项 D. 注释项 55 编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( )。 A. CMP
19、 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,AH59 使用DOS功能调用时,子程序编号应放在寄存器( )。 A. AH
20、中 B. AL中 C. AX中 D. 任意指定60 下列单元中能实现留空8个字节单元的是( )。 A. DA1 DT ? B. DA2 DW ?,? C. DA3 DD? D. DA4 DQ ?二、程序分析题1 ORG 0024HAR1 DW 4,5,$+4 MOV AX,AR1+4执行后AX中的内容是什么?2MOV BX,0FFFEH MOV CL,2 SAR BX,CL指令序列执行后BX为_。3 DABY1 DB 12H,34H,56H。78H DB $-DABY1DABY2 DB 10H DUP(1,2,3) MOV DX,SIZE DABY1MOV DX,WORD PTR DABY1+
21、4上述指令序列执行后,DX的内容是什么?4 已定义数据段DATA SEGMENT ORG 0213HDA1 DB 15H,34H,55HADR DW DA1DATA ENDS能是AX中数据为偶数的语句是_。5MOV AL,-1NEG ALXOR AL,65上述程序段执行后AL中的内容是_。6DA-BYTE EQU THIS BYTE DA-WORD DW AB,CD,EF,GH MOV AL, DA-BYTE+3MOV AH,BYTE PTR DA-WORD+4上述两条传送指令执行后AX中的内容是_。7 下面指令执行后,变量DAB的内容是_。DAW DW 2A05HDAB DB 0FAH MO
22、V AL, BYTE PTR DAWSUB DAB,AL8DATA SEGMENTTA1 DW 0102H,0304H,0506HTA2 DB 02H,03H,04H MOV BX,DS:0006H AND BX,0FFHAND BH,BX上述指令序列执行后,BX的内容是_。9DA1 EQU BYTE PTR DA2DA2 DW 0ABCDH SHL DA1,1SHR DA2,1上述指令序列执行后,DA2子存储单元的内容是_。10MOV CL,8 ROL AX,CL OR AX,BX假设AX=0012H,BX=0034H,那么上述程序段执行后,AX中的结果是_。11 执行下列指令序列后,正确的
23、结果是AL=_。MOV AL,81HADD AL,ALADC AL,AL12.DA2 DB 12H,34H,56H,0ABH DB $ - DA2BUF1 DB 10H,20H,30H LEA SI,DA2 MOV CL,4SI MOV CH,LENGTH BUF1上述指令序列执行后,CX中的内容是_。13 寄存器BX和DX中存放有32位二进制数,其中BX中放高16位。下列程序段完成对这32位数扩大4倍的功能。那么该程序段中方框里应填的语句是_。 MOV CX,2LOP: SHL DX,1 LOOP LOP14.TEST VAR,55H JZ ZERO ZERO;上述程序段,当VAR为何值时,
24、JZ ZERO指令直接转移到ZERO处?15NUM EQU 80HDA DB 34H AND DA NUM上述语句执行后,DA中的内容是_。16MOV AL,80HMOV CL,2SAR AL,CL上述指令序列执行后,结果是_。17 某数据段如下:DATA SEGMENT ORG 20HX DB 12HY DW 789HDATA ENDSY单元的偏移地址是_。18 DATA SEGMENTDA1 DB 32 DUP(?)DA2 DW 1456H,798AHDA3 DW DA2DATA ENDS MOV BX,DA3上述指令执行后,BX中的内容是_。19 下面程序段执行后,从A1单一开始的10个
25、字节内容是什么?A1 DB 10 DUP(0)A2 DB 1,2,3,0AH;10个数 MOV CX,LENGTH A1MOV SI,SIZE A1-TYPE A1LOP MOV AL,A2SI MOV ALSI,ALSUB SI,TYPE A1DEC CXJNE LOP20. 分析下面程序段,回答下列问题。 该程序段是什么结构的程序? 程序执行后,DL=_,屏幕上显示的字符是_。BUF DB 0CH MOV AL,BUF CALL FAR PTR HECA HECA PROC FAR CMP AL,10 JC K1 ADD AL,7K1: ADD AL,30H MOV DL,ALMOV AH
26、,2INT 21HRETHECA ENDP21. DB1 DW 1456 MOV AX,DB1MOV CX,4 MOV DL,10LOP : DIV DL MOV BL,AH MOV BH,0 PUSH BX MOV AH,0LOOP LOP上述程序段执行后,试回答:A. 向堆栈中压入了几个数据?B. 按压如的先后顺序,用十六进制数表示压入堆栈的数据。22 现有一子程序:SUB1 PROC TEST AL,80H JE PLUS TEST BL,80H JNE EXIT0 JMP XCHANGEPLUS: TEST BL,80H JE EXIT0XCHANGE: XCHG AL,BLEXIT0
27、: RETSUB1 ENDP试回答:A. 子程序的功能是什么?B. 如调用子程序前AL=9AH,BL=77H,那么返回主程序时,AL=_,BL= _。23. XOR AL,AL MOV AH,AL ADD AH,0 JZ NEXT XCHG AH,AL JMP K1NEXT: MOV AH,0FFHK1: 上述程序运行后,AH=_,AL=_。24XOR AL,ALINC ALNEG ALINC ALMOV BL,7FHADC AL,BLC25已知AX=1234HMOV BX,AXNEG BXADD AX,BX执行上述三条指令后,AX=_,ZF=_,CF=_。26BUF1 DB 41H,42H,
28、43H,44H,45H,46HBUF2 DB 6 DUP(?) MOV SI,OFFFSET BUF1 MOV DI,OFFFSET BUF2 MOV CX,6LOP: MOV AL,SISUB AL,7AND AL,0FHMOV DI,ALINC SIINC DILOOP LOP试回答:A. 上述程序段执行后,BUF2开始的6个字节的存储单元的内容是什么?B. 在程序单元不变的情况下,AND AL,0FH指令可否用SUB AL,30H指令代替。27BUFF DBABD & QC % $ AXYZCONT EQU 4 BUFF CLD LEA DI,BUFF MOV CX,CONT MOV A
29、L,$ XOR DX,DXNEXT: REPNZ SCASB CMP CX,0 JZ K1 INC DX JMP NEXTK1: 上述程序段运行后,DX中的值表示的意义是什么?28DA-BY DB 83H,72H,61H,94H,5AH MOV CX,WORD PTR DA-BY AND CX,0FH MOV AL,DA-BY+3AHL AL,CL上述指令序列后,AL=_,CL=_。29.ADBXMOV AX,0MOV AL,BYTE PTR AMOV CL,10MUL CL该程序段完成的功能的数学表达式是_,结果放在_中。30 ORG 1000HDA1 DB LEA BX,DA1 MOV C
30、X,BXNEXT: ADD BX,1 LOOP NEXT变量DA1的偏移地址=_,程序段执行后B,X=_。31 程序段如下: ASCI DB 6 DUP(?) MOV BX,OFFSET ASCI MOV AL,46H MOV CX,6LOP:MOV BX,AL DEC AL INC BX LOOP LOP程序运行后试问:A. 从ASCI开始的6个字节中依次存放的是什么数据?B. 与这些数据对应的ASCII码字符是什么?32 ORG 0010HDA-BY DB 3 DUP(0) MOV AL,10HLEA BX,DA-BYMOV CX,3LOP: MOV BX,ALADD AL,BLINC B
31、LLOOP LOP执行上述程序段后,以DA-BY为首地址的三个字节存储单元中依次存放的内容是_,_,_。33A DW 1234HB DW 5678H PUSH A PUSH B POP A POP B试回答: 上述程序段执行后(A)=_,(B)=_。 设执行前SP=200H,执行后SP=_。34 现有下列程序段:MOV AX,6540HMOV DX,3210HMOV CL,04SHL DX,CLMOV BL,AHSHL AX,CLSHR BL,CLOR DL,BL试问上述程序段执行后,(AX)= _,(BL)=_,(DX)=_。35. 分析下面程序段:MOV AL,200SAR AL,1MOV
32、 BL,ALMOV CL,2SAR AL,CLADD AL,BL试问程序段执行后(BL)= _ ,(AL)= _。36 程序段如下:BLK1 DB 46,84,34,-5,20,122,73 MOV CX,7 LEA SI,BLK1NEXT: MOV AL,SI INC SI TEST AL,81H LOOPZ NEXT MOV BL,SI 试回答程序段执行后: (AL)= _ ,(BL)= _。37STRING DB ABCDEFGHIJ MOV AH,01H ;从键盘输入字符19INT 21HAND AL,0FHDEC ALXOR AH,AHMOV BX,OFFSET STRINGADD
33、BX,AXMOV DL,BXMOV AH,02H ;显示输出 INNT 21H 试回答:A. 上述程序段的功能是什么?B. 如从键盘输入字符4,程序段有什么结果?38MOV AX,0BC5FHMOV BX,0C0FBHXOR AX,BXXOR AX,BX上述程序段运行后,AX= _,CF=_。39DATA SEGMENT ORG 3040H YY1 DB 30H,40H YY2 DB 3040HDATA ENDS MOV BX,OFFSET YY1 MOV AX,BX MOV CL,BYTE PTR YY2+1 MOV CH,TYPE YY2上述程序段执行后,AX= _,BX=_。40 A D
34、B 0F8HB DB 3 DUP(?) LEA DI,BMOV CX,3MOV AL,ALOP: SAR AL,1MOV DI,ALINC DILOOP LOP上述程序段运行后,从B单元开始依次存放的数据是多少?41 已知BUF开始的数据区存放有10个大、小写字母,下面程序段完成的功能是什么?MOV CX,10 LEA BX,BUFK2: MOV AL,BX CMP AL,Z JBE K1SUB AL,20HMOV BX,ALK1: INC BX LOOP K2 42 设寄存器AL,BL,CL中内容均为76H。XOR AL,0FHAND BL,0FHOR CL,0FH执行上述指令序列后,AL= _ ,BL= _,CL= _。43已知AX=0A33AH,DX=0F0F0HAND AH,DLXOR AL,DHNEG AHNOT 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,5LOP: MOV AL,SI XCHG AL,DI MOV SI,ALADD SI,2 ADD DI,2