第7章高级汇编语言技术.ppt

上传人:本田雅阁 文档编号:3132321 上传时间:2019-07-15 格式:PPT 页数:58 大小:199.02KB
返回 下载 相关 举报
第7章高级汇编语言技术.ppt_第1页
第1页 / 共58页
第7章高级汇编语言技术.ppt_第2页
第2页 / 共58页
第7章高级汇编语言技术.ppt_第3页
第3页 / 共58页
第7章高级汇编语言技术.ppt_第4页
第4页 / 共58页
第7章高级汇编语言技术.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《第7章高级汇编语言技术.ppt》由会员分享,可在线阅读,更多相关《第7章高级汇编语言技术.ppt(58页珍藏版)》请在三一文库上搜索。

1、第7章 高级汇编语言技术,7.1 宏汇编,为什么使用宏汇编? 在编制汇编语言程序过程中,有些功能程序段需要多次重复使用,所不同的只是参与操作的操作数。 为了减少编程的工作量,通常采用两种方法: 将程序段编写为独立的子程序 将程序段定义成宏 大家想一下 子程序有什么优缺点?,什么是宏? 宏(或宏指令)是源程序中一段有独立功能的程序代码,只需定义一次,可以多次调用。,1.宏定义 用伪指令MACRO/ENDM实现,其语句格式是: 宏指令名 MACRO 形参1,形参2,形参n 宏定义体 ENDM,7.1.1 宏定义、宏调用和宏展开,说明,宏指令名是该宏定义的名称。调用时使用宏指令名对该宏定义进行调用。

2、 宏指令符合标识符规定。宏指令名不能重复,并且指令的第一个字符必须是字母。但可以和源程序中的其他变量、标号、指令、伪指令名相同,在这种情况下宏指令的优先级最高。 MACRO必须与ENDM成对出现。MACRO标识宏定义的开始 。 形式参数(即形参,也称哑元、虚参)是可选项,宏可以不带参数;带参数时,多个形参间用逗号分隔。,2.宏调用 宏调用的格式为: 宏指令名 实参1,实参2,实参n,宏展开 宏展开就是宏定义体取代源程序中的宏指令名,而且用实元取代哑元。汇编源程序时,宏汇编程序将对每条宏指令语句进行宏展开,用实参替代相应的形参,对宏体目标代码作相应改变。,说明:实参可以是常数、寄存器、存储单元、

3、地址表达式、指令的操作码或者是操作码的一部分。,子程序Q,主程序,主程序,主程序,展开,子程序调用和宏调用的工作方式,用一个例子来说明宏定义、宏调用和宏展开的情况 例:将两个16位数相加,结果存入16位 RESULT 单元中 。 ;对两数相加功能进行宏定义,BCDADD MACRO VARX,VARY,RESULT MOV AL,VARX ADD AL,VARY MOV RESULT,AL MOV AL,VARX1 ADC AL,VARY1 MOV RESULT1,AL ENDM DATA SEGMENT A1 DW 1234H A2 DW 5678H A3 DW ? B1 DW 1357H

4、B2 DW 2468H B3 DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:PUSH DS MOV AX,0 PUSH AX,MOV AX,DATA MOV DS,AX BCDADD A1,A2,A3;宏调用 BCDADD B1,B2,B3 ;再次宏调用 RET CODE ENDS END START 经宏展开后: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX,MOV AL,A1 1 ADD AL,A2 1 MOV A3,AL 1 MOV AL,A11 1 ADC AL,A21

5、MOV A31,AL 1 MOV AL,B1 1 ADD AL,B2 1 MOV B3,AL 1 MOV AL,B11 ADC AL,B21 MOV B31,AL 宏汇编程序在所展开的指令前标识以1号以示区别。较早的版本用+,7.1.2 宏定义中的参数:,1 宏定义可以无参数,savereg macro push ax push bx push cx push si endm,2 参数可以是操作码,a macro p1, p2,p3 mov ax,p1 p2 p3 endm 调用: a word_ var ,inc,ax 展开: mov ax,word_var 1 inc ax,3 参数可以是

6、操作码或操作数的一部分,但在宏定义体中必须使用分隔符&,即&是操作符,在宏定义中可作为形参的前缀,展开时把&前后的两个符号连接起来,形成操作码、操作数或字符串。&只能出现在宏定义中。,例 宏定义: SHIFT MARCO X,Y,Z MOV CL,X S&Z Y,CL ENDM 形参Z是操作码的一部分。宏汇编中规定,若宏定义体中的形参没有适当的 分隔符,就不被当作形参,调用时也不会被实参代替。 上例被调用时: SHIFT 4,CL,AL SHIFT 6,BX, AR 则宏展开时的目标代码: 1 MOV CL,4 1 SAL AL,CL 1 MOV CL,6 1 SAR BX,CL,例 fo m

7、acro p1 jmp ta&p1 endm 宏调用: fo word_var 宏展开: 1 Jmp taword_var,如果这样: fo macro p1 jmp tap1 endm 宏调用: fo word_var 宏展开: 1 Jmp ?,4 伪操作%不能出现在形参的前面,通常用在宏调用中,将跟在它后面的表达式的值转换成以当前基数下的数,在宏展开时,用转换后的值代替形参。,例 宏定义: MAKER MACRO COUNT,STR MAKER&COUNT DB STR ENDM ERRMA MACRO TEXT CNTR=CNTR1 MAKER %CNTR,TEXT ENDM 经宏调用:

8、,CNTR=0 ERRMA SYNTAX ERROR ERRMA INVALID OPERAND 宏展开: 2 MAKER1 DB SYNTAX ERROR 2 MAKER2 DB INVALID OPERAND ,7.1.3 伪指令 LOCAL,宏定义体内可以使用标号。对于使用了标号的宏定义,若多次调用,势必产生标号的多重定义,汇编时出错。解决这一问题可使用伪指令LOCAL,其一般格式为: LOCAL 局部标号1,局部标号2, 宏汇编程序将为标号分别生成格式为“?XXXX”的唯一的符号以代替各局部标号。XXXX代表四位十六进制数0000FFFF。这样,在汇编源程序中,避免了多次宏调用时生成的

9、标号重复。 注意:LOCAL伪操作只能用在宏定义体内,而且必须是MACRO伪操作后的第一个语句,在MACRO与LOCAL不能出现注释和分号标志。,例 定义取绝对值的宏指令如下: ABS MACRO OPS LOCAL PLUS CMP OPS,0 JGE PLUS NEG OPS PLUS:MOV AX,OPS ENDM 宏调用: ABS CX MOV BX,AX ABS DX,宏展开后的指令为: 1 CMP CX,0 1 JGE ?0000 1 NEG CX 1?0000:MOV AX,CX MOV BX,AX 1 CMP DX,0 1 JGE ?0001 1 NEG DX 1?0001:

10、MOV AX,DX,7.1.4 在宏定义内使用宏,宏定义中允许使用宏调用,限制条件是:必须先定义,dif macro x , y mov ax,x sub ax ,y endm difsqr macro opr1,opr2,result push dx push ax dif opr1,opr2 mov result,ax pop ax pop dx endm,difsqr var1,var2,var3 调用 宏展开 1 push dx 1 push ax 2 mov ax,var1 2 sub ax,var2 1 mov var3,ax 1 pop ax 1 pop dx,7.1.5 列表伪

11、操作,Masm提供了.xall , .lall, sall来控制汇编清单中宏展开的列出情况 .xall 为默认情况,它指示清单中只列出产生目标 代码的宏展开; .lall 列出包括注释在内的所有宏展开; .sall 则不列出任何信息;,如果程序中定义了很多宏,可以把这些宏组合起来建立一个独立的文件,这个只包含若干个宏定义的文件称为宏库。扩展名是mac 或inc来表示。当需要使用宏库中的某些宏定义时,只需要在该程序的开始用INCLUDE语句说明 INCLUDE C:MACRO.MAC,7.1.6 宏库的建立与调用,宏汇编程序提供了伪操作PURGE,用来在适当的时候取消宏定义。 PURGE伪指令的

12、一般格式是: PURGE 宏定义名, 方括号表示PURGE可以取消多个宏定义,宏名之间用逗号隔开。如宏定义: SUB MACRO VARX,VARY,RESULT ENDM 宏调用:SUB X,Y,Z PURGE SUB,7.1.7 伪指令PURGE,7.2 重复汇编,其一般格式为: REPT 表达式 (重复块 ) ENDM 其中,REPT和ENDM必须成对出现,两者间的重复块是要重复汇编的部分。表达式的值用来表示重复块的重复汇编次数。重复伪操作不一定要用在宏定义体内。,7.2.1 定重复伪指令REPT,有时汇编语言程序要连续地重复完成相同或者几乎完全相同的一组代码,这时可用重复汇编。,例 有

13、下列语句: NUM=0 REPT 10 NUM=NUM1 DB NUM ENDM 汇编后,将数据1,2,3,10分配给十个连续 的字节单元: 1 DB 1 1 DB 2 1 DB 3 1 DB 10,7.2.2 不定重复伪指令IRP,其一般格式为: IRP 形参,参数1,参数2, (重复块) ENDM 此伪指令重复执行重复块中所包含的语句,重复的次数由参数表中的参数个数决定。重复汇编时,依次用参数表中的参数取代形参,直到表中的参数用完为止。参数表中的参数必须用两个三角号括起来,参数可以是常数、符号、字符串等,各参数间用逗号隔开。,例 多次将AX、BX、CX、DX寄存器内容压栈,宏定义如下: P

14、USHR MACRO IRP REG,AX,BX,CX,DX PUSH REG ENDM ENDM 汇编后: 1 PUSH AX 1 PUSH BX 1 PUSH CX 1 PUSH DX,7.2.3 不定重复字符伪指令IRPC,其语句格式为: IRPC 形参,字符串(或字符串) (重复块) ENDM 此伪指令重复执行重复块中的语句,重复汇编的次数等于字符串中字符的个数。每次重复执行时,依次用字符串中的一个字符取代形参,直到字符串结束。可见IRPC伪指令与IRP伪指令类似,只是IRPC用字符串(其三角括号可以有也可以无)代替了IRP伪指令中的参数表。,例: Irpc x ,01234567 D

15、b x+1 Endm 汇编后: Db 1 1 Db 2 1 Db 8,再如:可用IRPC实现: PUSHR MACRO IRPC REG,ABCD PUSH REG&X ENDM ENDM 同样,汇编后也可得到: 1 PUSH AX 1 PUSH BX 1 PUSH CX 1 PUSH DX,7.3 条件汇编,汇编程序能根据条件把一段源程序包括在汇编语言程序内的或排除在外,这里就用到条件伪操作。条件伪操作的一般格式是:,Ifxx argument ;自变量满足条件汇编此块 ELSE ;自变量不满足条件汇编此块 ENDIF,说明:汇编程序在对源程序汇编时,要对源程序扫描二遍 。第一遍建立符号表

16、,第二遍才把汇编语言指令翻译成机器语言指令。那么自变量必须在汇编程序第一遍扫视后就成为确定的数值。,IF expression ; 汇编程序求出表达式的值,如此值不为0, 则 满足条件. IFE expression ;汇编程序求出表达式的值,如此值为0,则 满足条件.,例:宏指令MAX把三个变元中的最大值放在AX中,而且使变元数不同时产生不同的程序段。,7.3.1,MAX MACRO K,A,B,C LOCAL NEXT ,OUT MOV AX,A IF K-1 IF K-2 CMP C,AX JLE NEXT MOV AX,C ENDIF NEXT: CMP B,AX JLE OUT MO

17、V AX,B ENDIF OUT: ENDM,宏调用: MOV 1,P MOV 2,P,Q MOV 3,P,Q,宏展开: MOV 1,P MOV AX,P 1 ?0002: MAX 2,P,Q JLE ?0000 1 MOV AX,Q 1 ?0003:,MAX 3,P,Q,R 1 MOV AX,P 1 CMP R,AX 1 JLE ?0004 MOV AX,R 1 ?0004: CMP Q,AX 1 JLE ?0005 MOV AX,Q 1 ?0005,BRANCH MACRO X IF ($-X) LT 128 JMP SHORT X ELSE JMP NEAR PTR X ENDIF EN

18、DM LAB: MOV AX,BX BRANCH LAB JMP SHORT LAB,该宏要完成什么功能。,宏定义允许递归调用,power macro x,n sal x,1 count=count+1 if count-n power x,n endif Endm 宏调用: count=0 power ax,3 宏展开: Sal ax,1 Sal ax,1 Sal ax,1,IF1 ;在汇编程序的第一遍扫视期间满足条件 IF2 ;在汇编程序的第二遍扫视期间满足条件 说明:汇编程序在对包括宏库的源程序汇编时也分两次扫描,第一次将宏库及程序中的宏定义登入宏定义表,第二次 扫描时进行宏扩展,形成列

19、表文件。 大家看书上268页的例.24,然后和259页的例7.12比较看有什么不同? IFB ;如自变量为空,则满足条件 IFNB ;如自变量不为空,则满足条件 注意:自变量用“”括起来,7.3.2,7.3.3,例:宏指令 GOTO L,X,REL,Y 可以根据不同情况产生无条件转移指令或比较和条件转移指令。 宏定义:,GOTO MACRO L,X,REL,Y IFB JMP L ELSE MOV AX,X CMP AX,Y J&REL L ENDIF ENDM 宏调用: GOTO LOOP1,SUM,NZ,15 GOTO EXIT,宏展开: MOV AX,SUM CMP AX,15 JNZ

20、LOOP1 JMP EXIT,DISP MACRO CHAR IFB MOV DL, ELSE MOV DL,CHAR ENDIF MOV AH,02H INT 21H ENDM 宏调用: DISP A DISP,下面程序要完成什么样的功能?,IFDEF symbol ;如符号已在程序中定义,或者用extrn说明 该符号是在外部定义的,则满足条件。 IFNDEF symbol ;如符号未定义或未通过EXTRN说明为外 部符号则满足条件。,7.3.4,divide macro devidend,divisor,quotient local cmop,out cntr=0 ifndef divid

21、end cntr=1 endif ifndef divisor cntr =1 endif ifndef quotient cntr=1 endif if cntr exitm endif,mov ax,dividend mov bx,divisor sub cx,cx comp: cmp ax,bx jb out sub ax,bx jnc cx Jmp comp out : mov quotient ,cx endm,MOVDIF MACRO X IFIDN , REP MOVSB ELSE REP MOVSW ENDIF ENDM,宏调用: MOVDIF B 宏展开: 1 REP MOV

22、SB,IFIDN , ;如果字符串和字符串相 同,则满足条件。 IFDIF , ;如果字符串和字符串不 相同,则满足条件。 在格式中,两个参数必须用尖括号括起,7.3.5,例 编写一个可用功能调用输入字符的宏定义。 READCH MACRO char MOV AH, 1H INT 21H ;接受一个字符,并存入AL中 IFNB ;若参数char有实参与之对应 IFDIF , ;若参数charAL,则把所输入字符保存到实参中 MOV char, AL ENDIF ENDIF ENDM,1. 在DEBUG上机调试程序时,存储器地址表示为12FA:015F,它的物理地址是( )。 a. 12FAH

23、b. 1305FH c. 130FFH d. 015FH 2. IP指令指针寄存器是属于( )。 a. 通用寄存器 b. 段寄存器 c. 变址寄存器 d. 控制寄存器 3. 下面有语法错误的指令是( )。 a. ADD AL,AH b. ADD BX+3,AL c. ADD AH,DI d. ADD BP+2,DA1 (DA1是变量名) 4. 完成对DX的有符号数除以2的指令是( )。 a. IDIV 2 b. SAR DX,1 c. ROR DX,1 d. RCR DX,1 5. 使进位位置1的指令是( )。 a. CLC b. CMC c. STC d. NOP,6. 设AL=-15,要使

24、AL=15应执行的指令是( )。 a. NEG AL b. NOT AL c. INC AL d. DEC AL 7. 在条件转移指令中,结果为负数则转移的指令是( )。 a. JNS b. JX c. JS d. JP 8. 下面的XCHG指令中,语法正确的是( )。 a. XCHG AL,DS b. XCHG BL,BX c. XCHG AL,0FH d. XCHG BUF1,BUF2 9. 一条指令中目的操作数不允许使用的寻址方式是( )。 a. 寄存器寻址 b. 立即数寻址 c. 变址寻址 d. 寄存器间接寻址 10. 设SP=1FFEH,执行下列指令后,SP寄存器的值是( )。 PO

25、PF PUSH AX a 2000H b. 2002H c. 1FFCH d. 1FFEH,1 下列标号不合法的是: AMOV B. WANG C. F8 D. AB3 2 语句DADA DW AB, CD, E,F汇编后占用的存储空间是: A4个字节 B. 8个字节 C. 6个字节 D.5个字节 3 PSW中使用的标志位以及其中的状态标志位、控制标志位的位数分别是: A9,6,3 B. 9,8,1 C. 9,7,2 D. 16,9,7 4 指令ADD AX, BXDI中源操作数的寻址方式是: A段内寄存器间接寻址 B. 段间寄存器间接寻址 C基址加变址寻址 C. 寄存器寻址 5 在伪指令语句

26、NUMBER DW 1234H中的NUMBER 项称为: A标号 B. 变量 C. 伪操作符 D. 数据,6 在存储器中保留待定的10个字节单元的伪指令语句是: ANUMB EQU 10 B. NUMB DW 10 DUP(?) C. NUMB DB 10 D. NUMB DB 2 DUP(5 DUP(?) 7 把汇编语言源程序翻译成目标代码的程序是: A编译程序 B. 解释程序 C. 汇编程序 D.连接程序 8 下列指令中,不影响PSW的指令是: A. MOV B. TEST C. SAL D. CLD 9 下列叙述不正确的是: A. 立即数不能直接送段寄存器。 B. 目的操作数不能是立即数

27、和段寄存器。 C. 不能在两个存储单元间直接传送数据。 D. 两个段寄存器之间不能直接传送数据。 10 汇编语言在程序设计语言家族中属于: A. 第一代语言 B. 第二代语言 C. 第三代语言 D. 第四代语言,1、设DS=8225H,DI=3942H,指令NEG BYTE PTR DI操作数的物理地址是( ) A、85B92H B、86192H C、BB690H D、12169H 2、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( ) A、AX,BX,CX,DX B、BX,BP,SI,DI C、SP,IP,BP,DX D、CS,DS,ES,SS 3、循环指令LOOPNZ终止循环的条

28、件是( )。 A、CX=0,且Z=0 B、CX=0,或Z=1 C、CX0,且Z=0 D、CX0,或Z=1 4、对寄存器AX的内容乘以4的正确指令序列是( )。 A、SHR AX,1 SHR AX,1 B、SHL AX,1 SHL,AX,1 C、ROL AX,1 ROL AX,1 D、RCR AX,1 RCR AX,1 5、保存字除法商的寄存器是( )。 A、AX B、AH C、AL D、通用寄存器,6、设DH=10H,执行NEG DH指令后,正确的结果是( )。 A、DH=10H C=1 B、DH=0F0H C=0 C、DH=10H C=0 D、DH=0F0H C=1 7、下列传送指令中有语法

29、错误的是( )。 A、MOV CS,AX B、MOV DS,AX C、MOV SS,AX D、MOV ES,AX 8、下面指令执行后,改变AL寄存器内容的指令是( )。 A、TEST AL,02H B、OR AL,AL C、CMP AL,BL D、AND AL,BL 9、一条指令中目的操作数不允许使用的寻址方式是( ) A. 寄存器寻址 B. 立即数寻址 C.变址寻址 D.寄存器间接寻址 10、执行下面指令序列后,结果是( )。 MOV AL,82H CBW A、AX=0FF82H B、AX=8082H C、AX=0082H D、AX=0F82H,1指令JMP FAR PTR DONE属于(

30、)。 参考答案为:C A段内转移直接寻址 B段内转移间接寻址 C段间转移直接寻址 D段间转移间接寻址 2下列叙述正确的是( )。 参考答案为:C A对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令 B对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令 C对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令 D对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令 3一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是( )。 参考答案为:C A1

31、2CSBH B12B6BH C12C59H D12BFEH 4在下列指令的表示中,不正确的是( )。 参考答案为:C AMOV AL,BX+SI BJMP SHORT DONI CDEC BX DMUL CL 5在进行二重循环程序设计时,下列描述正确的是( )。 参考答案为:A A外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B外循环初值应置外循环之内;内循环初值应置内循环之内 C内、外循环初值都应置外循环之外 D内、外循环初值都应置内循环之外,外循环之内,6条件转移指令JNE的测试条件为( )。 参考答案为:A AZF=0 BCF0 CZF=1 DCF=1 78086CPU

32、在基址加变址的寻址方式中,变址寄存器可以为( )。 参考答案为:D ABX或CX BCX或SI CDX或SI DSI或DI 8已知BX=2000H,SI=1234H,则指令MOV AX,BX+SI+2的源操作在( )中。 参考答案为:A A数据段中偏移量为3236H的字节 B附加段中偏移量为3234H的字节 C数据段中偏移量为3234H的字节 D附加段中偏移量为3236H的字节 9执行如下程序: MOV AX,0 MOV BX,1 MOV CX,100 A: ADD AX,BX INC BX LOOP A HLT 执行后(BX)=( )。 参考答案为:C A99 B100 C101 D102

33、10上题的程序执行后(AX)=( )。 参考答案为:B A5000 B5050 C5100 D5150,1.在堆栈段中,存放栈顶地址的寄存器是( )。 A.IP B.SP C.BX D.BP 2.汇编语言程序中,反映指令操作结果的标志是( )。 A.状态标志 B.控制标志 C.ZF D.DF 3.书写汇编语言程序时规定,对字母开头的十六进制数,其前面必须加( )。 A.0 B.D C.B D.H 4.计算机中用来存储程序、数据等信息的记忆装置是( )。 A.控制器 B.运算器 C.CPU D.存储器 5.MOV SIBX,AL,该指令中自操作数采用的寻址方式是( )。 A.基址加变址 B.寄存

34、器 C.寄存器间接 D.寄存器相对,6.MUL WORD PTRSI指令中的乘积是存放在( )、AX中。 A.CX B.BX C.DX D.SI 7.汇编语言中,存放下一条将要执行的指令地址寄存器是( )。 A.SP B.AX C.DI D.IP 8.在计算机中,以先进后出方式工作的存储空间是( )。 A.存储器 B.RAM C.ROM D.堆栈 9.TEST AH,30H指令的功能与( )指令功能相类似。 A.AND B.CMP C.SUB D.OR 10.在存储器中留60个字的空单元的伪指令是( )。 A.ARRAY EQU 60 B.ARRAY DW 60 C.ARRAY DB 60 D

35、UP(?) D.ARRAY DW 60 DUP(?),1.用DEBUG调试汇编语言程序时,显示某指令的地址是2F80:F400,此时段寄存器CS的值是( )。 A.F400H B.2F80H C.F4000H D.2F800H 2.设DS=1100H,(12000H)=80H,(12001H)=20H,(12002H)=30H,执行MOV AX, 1000H则AX=( )。 A.8000H B.0080H C.2080H D.8020H 3.下列四条指令中错误的是( )。 A.MOV AX,SI B.MOV AX,DI C.MOV AX,SI+DI D.MOV AX,SI-DI 4.下列四条指

36、令执行后不影响标志位的是( )。 A.JNC NEXT B.CMP AX, BX C.SHL AX, 1 D.OR AL, AL 5.已知AX=0001H,下列四条指令执行后,不能使ZF=1的语句是( )。 A.DEC AX B.SUB AX, 1 C.AND AX , 1 D.CMP AX,1,6.在8086/8088系统中,约定用于形成堆栈段数据物理地址的寄存器有( )。 A.SS, SP, BP B.SS, SP, BX C.DS, BX, BP D.DS, SP, BP 7.有指令MOV AX, 1234H,指令中的立即数1234H是存储在( )。 A.数据段 B.代码段 C.附加段

37、D.堆栈段 8.要在程序中定义缓冲区BUF,保留9个字节存储空间的语句是( )。 A.BUF DW 9 B.BUF DB 9 C.BUF DB 9 DUP(?) D.BUF DW 9 DUP(?) 9.已知AL=56H,BL=34H,都是压缩BCD码,要执行二数相加,正确的指令是( )。 A.ADD AL,BL B.ADC AL,BL C.ADD BL,AL D.ADC BL,AL DAA DAA DAA DAA 10.在执行子程序段内调用CALL SUBR指令后,SP的值( )。 A.加1 B.减1 C.加2 D.减2,1Intel 8086 CPU的段寄存器有_。 2Intel 8086

38、CPU的SP寄存器的主要作用是_。 3(CS)=1000H,(DS)=2000H,(ES)=3000H,(SS)=4000H,(DI)=a100,操作数 DI+1000H 的寻址方式是_,物理地址是_ 。 4 志寄存器中OF标志位的主要作用是_。 5TEST指令的功能是_。 6指令LEA_AX, SI+100H的具体操作是_。 7有符号二进制字节数可表示的数的范围是_ 。 8执行一条POP_AX指令后,SP的内容发生的变化是_。 9AL寄存器的内容为28H,执行指令OR_AL, 33H后,AL的值为_。 10测试寄存器AL和BL的值是否相等而不改变其值应使用指令_。,1.用户为了解决自己的问题

39、,用汇编语言所编写的程序,称为( )。 目标程序 源程序 可执行程序 汇编程序 2.某系列微机对存储器的分段,如果每一个段最多的字存储单元(16位二进制)是32K,那么表示段内字节单元偏移地址的二进制位数应是( )。 20位 16位 15位 12位 3.可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是( )。 AX,BX,CX,DX DS,ES,CS,SS SP,BP,IP,BX SI,DI,BP,BX 4.用一条指令仅实现将BX+SI=AX的方法是( )。 XCHG AX,BXSI MOV AX,BX+SI LEA AX,BXSI LEA AX,BXSI 5.设SP初值为2000H

40、,执行指令“PUSH AX”后,SP的值是( )。 1FFFH 1998H 2002H 1FFEH,6.条件转移指令JB产生程序转移的条件是( )。 CF=1 CF=0 CF=1和ZF=1 CF=1和ZF=0 7.选用串操作指令时,错误的操作是( )。 置方向标志位 根据串操作指令设置重复次数并送入CX 设置源操作数及目的操作数指针 源操作数和目的操作数都可以加段超越 8.设AL=20H,SI=0500H,DS=3000H,(30500H)=0C0H,CF=1。执行SBB AL,SI后,正确的结果是( )。 AL=5FH SF=1 CF=1 AL=60H SF=1 CF=0 AL=5FH SF

41、=0 CF=1 AL=60H SF=0 CF=0 9.设AX=1000H NEG AX NOT AX 执行上述指令后,正确的结果是( )。 AX=1001H AX=0FFFH AX=1000H AX=0111H 10.CBW指令的功能是( )。 把源操作数的符号位扩展到目的操作数中 把AL中的符号位扩展到AH中 把AH中的符号位扩展到AL中 把AX中的符号位扩展到DX中,1.下列寄存器中, 作为16位寄存器的是 ( )。 A. AL B. BL C. CH D.DX 2.在程序运行过程中, 确定下一条指令的物理地址的计算表达式是 ( )。 A.DS*16+SI B. ES*16+DI C. C

42、S*16+IP D. SS*16+SP 3.物理地址(10FF0H )=10H, (10FF1H )=20H, (10FF2H )=30H, 从地址10FF1H中取一个字的内容是 ( )。 A.1020H B.3020H C.2030H D.2010H 4.将AX 清零, 下列指令错误的是 ( )。 A.SUB AX,AX B.XOR AX,AX C.OR AX,00H D.AND AX,00H 5.下列指令中, 影响或修改标志位的是 ( )。 A.LOOPZ B.JNLE C.PUSHF D.POPF,6. 设DS=8225H,DI=3942H,指令NEG BYTE PTRDI操作数的物理地

43、址是( )。 A.85B92H B.86192H C.BB690H D.12169H 7.通用数据传送指令中, 错误的是 ( )。 A.累加器到存储器 B.立即数到存储器 C.寄存器到存储器 D.存储器到存储器 8.移位指令中, 应先将移位次数放在 ( )。 A.AX B. AL C. CX D.CL 9. MOV AL, 79 ADD AL, 0B1H 上述指令执行后, CF和OF的值是 ( )。 A.CF=0 OF=1 B.CF=1 OF=1 C.CF=0 OF=0 D.CF=1 OF=0 10.下列语句中能实现留空8个字节单元的语句是( )。 A. DA1 DT ? B. DA2 DW

44、?,? C. DA3 DD ? D. DA4 DQ ?,1指令JMP FAR PTR DONE属于( )。 A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2执行下面指令序列后,结果是( )。 MOV AL,82H CBW A. AX=0FF82H B. AX=8082H C. AX=0082H D. AX=0F82H 38088/8086存储器分段,每个段不超过( ). A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4CPU发出的访问存储器的地址是( )。 A.物理地址 B.偏移地址 C.逻辑地址 D.段地址 5BUF DW 10H DUP(3 DUP(2,10H),3,5) 上述语句汇编后,为变量BUF分配的存储单元字节数是( )。 A.80H B.100H C.124 D.192,6若AX= - 15要得到AX=15应执行的指令是( )。 A.NEG AX B.NOT AX C.INC AX

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1