【教学课件】第8章高级汇编语言技术.ppt

上传人:牧羊曲112 文档编号:5679241 上传时间:2023-08-09 格式:PPT 页数:39 大小:358.47KB
返回 下载 相关 举报
【教学课件】第8章高级汇编语言技术.ppt_第1页
第1页 / 共39页
【教学课件】第8章高级汇编语言技术.ppt_第2页
第2页 / 共39页
【教学课件】第8章高级汇编语言技术.ppt_第3页
第3页 / 共39页
【教学课件】第8章高级汇编语言技术.ppt_第4页
第4页 / 共39页
【教学课件】第8章高级汇编语言技术.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《【教学课件】第8章高级汇编语言技术.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第8章高级汇编语言技术.ppt(39页珍藏版)》请在三一办公上搜索。

1、第8章 高级汇编语言技术,基本内容,宏汇编重复汇编条件汇编,8.1 宏汇编,宏指令的定义、调用和展开 宏操作符 局部符号伪指令 宏嵌套 宏库的建立与使用,8.1.1 宏指令的定义、调用和展开,宏定义 宏定义用一组伪操作实现:宏名 MACRO 形参列表(宏体)ENDM,SHRT MACRO MOV CL,3 SAR DL,CL ENDM,例:用宏指令实现将DL寄存器右移3位,注意:宏定义可出现在源程序的任何位置,但必须出现在宏调用之前,也就是必须先定义后调用。,宏调用 经过宏定义后,宏指令就可以在源程序中调用,即宏调用。宏调用的格式是:宏名 实参1,实参2,实参3,,宏展开,当汇编程序对源程序进

2、行汇编时,汇编程序 每个宏调用作宏展开。宏展开就是用宏体代源程序中的宏名,用实参取代宏定义中的形参。,例:用宏指令定义两个字节数据相加,并存放到一个单元中,并作宏调用和宏展开。,ADDB MACRO AD1,AD2,RESULT;宏定义 PUSH AX MOV AL,AD1 ADD AL,AD2 MOV RESULT,AL POP AX ENDM,ADDB 5CH,43H,DL;宏调用 1 PUSH AX;宏展开1 MOV AL,5CH1 ADD AL,43H1 MOV DL,AL1 POP AX,8.1.2 宏操作符,操作符&操作符%操作符操作符!,操作符&,操作符&在宏定义中使用时可以在形

3、参之前,也可 以出现在形参之后,宏展开时将&前后两个符号合并成 一个符号,该符号可以是操作码、操作数,也可以是字 符串。,例:宏定义:DSEG MACRO NUM,LETTER LAS&NUM DB WRITING&LETTER ENDM宏调用:DSEG 1,ERROR DSEG 2,RIGHT宏展开:1 LAS1 DB WRITINGERROR 1 LAS2 DB WRITINGRIGHT,在这里,第一个参数合并成标号,第二个参数用于字符串中。,操作符%,汇编程序将操作符%后的表达式的值而不是表达式文本本身作为当前值,宏展开时,用该值取代形参,%操作符不允许出现在形参前面。,例:,宏定义:S

4、ARF1 MACRO CON1,DECT MOV CL,CON1 S&DECT AL,CL ENDM SARF2 MACRO CON2 CNT=CON2 SARF1%CNT,AL ENDM,宏调用:SARF2 2 SARF2 4,宏展开:1 MOV CL,2 1 SAL AL,CL 1 MOV CL,4 1 SAL AL,CL,操作符,汇编程序将操作符括起的内容作为一个字符串处 理。宏调用中,实参如果含有空格、逗号等间隔符,就用 操作符将实参括起,作为一个单一完整的实参。若将 一个特殊字符作为实参,也可以用该操作符处理,如&表示一个字符“&”,而不是操作符。,例:宏定义:HELLOW MACR

5、O DSG,SENTENS DSG DB&SENTENS ENDM宏调用:HELLOW MASG,HOW ARE YOU HELLOW MASG,HOW ARE YOU宏展开:1 MASG DB HOW ARE YOU 1 MASG DB HOW,操作符!,汇编程序将操作符!后的字符只作字符含义进行处 理。如“!%”表示%只作百分号使用。在宏调用时,为使实 参中的一些特殊字符作一般字符处理,就要在其前加上该 操作符。,例:宏定义:HELLOW MACRO DSG,SENTENS DSG DB&SENTENS ENDM 宏调用:HELLOW!%(2+9-1)宏展开:1 DB%(2+9-1),8.

6、1.3 局部符号伪指令,汇编程序中提供伪指令LOCAL,解决标号的多重定义 问题。伪指令LOCAL格式:LOCAL 标号表 在每次宏展开时,汇编程序对LOCAL伪指令说明的 标号或变量用唯一的符号“?XXXX”(XXXX表示0000-FFFF的十六进制数)代替。,例:宏定义:ROTAE MACRO NUM LOCAL NEXT MOV CL,NUM SAR AL,CL CMP AL,9 JNBE NEXT NEXT:AND AL,0FH ENDM宏调用:ROTAE 1 ROTAE 2,宏展开:1 MOV CL,1 1 SAR AL,CL 1 CMP AL,9 1 JNBE?0000 1?000

7、0:AND AL,0FH 1 MOV CL,2 1 SAR AL,CL 1 CMP AL,9 1 JNBE?0001 1?0001:AND AL,0FH,须要说明的是,LOCAL伪指令只用于宏定义体内,且必须是宏定义伪指令MACRO之后的第一条语句,在MACRO和LOCAL伪指令之间不允许有注释和分号标志。,如果伪指令LOCAL后有多个标号,如:LOCAL NEXT1,NEXT2宏展开时,汇编程序分别用?0000、?0001取代第一次宏调用中NEXT1、NEXT2。用?0002、?0003分别取代第二次宏调用中的NEXT1、NEXT2,依次类推。,宏定义中使用宏调用例:宏定义SHRFQ中使用宏

8、调用,SHRF MACRO X MOV CL,X SAR AL,CL ENDMSHRFQ MACRO Y,Z,RESU PUSH AX PUSH CX,MOV AL,Z SHRF YAND AL,ZMOV RESU,ALPOP CXPOP AXENDM,8.1.4 宏嵌套,宏定义中定义宏指令例:宏定义SHEAT中定义宏指令INMOV,SHEAT MACRO INMOV,OPTR INMOV MACRO X,Y,RESULT PUSH AX PUSH CX MOV CL,X MOV AL,Y S&OPTR AL,CL MOV RESULT,AL POP CX POP AX ENDM ENDM,8

9、.1.5 宏库的建立与使用,为了节约编程时间和减少错误,我们可以将常用的 宏定义集中放在一个文件中,这个文件称为宏库。调用 宏库中的宏时,只需在源文件前面用伪指令INCLUDE将 宏库加入到自己的源文件中。,8.2 重复汇编,重复汇编指源程序中用重复伪指令定义需要重复 的语句序列,汇编程序对该语句序列进行多次汇编。伪指令REPT 伪指令IRP 伪指令IRPC,伪指令REPT,格式:REPT 表达式(重复语句序列)ENDM 其中,表达式包含的项必须有定义,不能包含外部 变量,且必须可求出常数值,表达式的值给出重复块的 重复次数。,例:将0-50中5的倍数存放到10个字节单元中,N=0 REPT

10、10 N=N+5 DB N ENDM汇编产生如下结果 1 DB 5 1 DB 10 1 DB 15 1 DB 50,伪指令IRP,格式:IRP 形参,实参1,实参2,(重复语句序列)ENDM 其中实参个数确定重复汇编的次数,重复汇编语句序列时,依次用尖括号中的实参取代形参。,例:IRP R,A,B,C,D PUSH R&X ENDM汇编期间得到如下结果:1 PUSH AX 1 PUSH BX 1 PUSH CX 1 PUSH DX,伪指令IRPC,格式:IRPC 形参,字符串(重复语句序列)ENDM 与伪指令IRP 相似,但实参必须是字符串,其中字符串中字符个数确定重复汇编的次数,重复汇编语句

11、序列时,依次用字符串中的一个字符取代形参,直到用完字符串中的所有字符。,例:IRPC S,ABCDEFGHI DB S ENDM汇编期间得到如下结果:1 DB A 1 DB B 1 DB I,8.3 条件汇编,条件汇编的作用是使汇编程序能根据条件有选择的对程序段进行汇编。源程序中依需要设定条件,汇编时汇编程序根据条件是否满足,对该段程序进行汇编或不进行汇编,以得到所需的目标代码。IF和IFE IFB和IFNB IFIDN和IFDIF,IF和IFE,IF 表达式的值不为0,则满足条件,即条件为真,其表达式的值应该是一个常数。IFE 表达式的值为0,则条件为真。,例:宏MOVSN判断参数N是否为0

12、,如果不为0,则将N右移两位,否则将AL寄存器置0。,MOVSN MACRO N IF N MOV AL,N MOV CL,2 SAR AL,CL ELSE MOV AL,0 ENDIF ENDM,IFB和IFNB,伪指令IFB和IFNB测试宏定义中的参数,如果参数是空格,则IFB条件为真。否则IFNB条件为真。,例:宏MOVSM在汇编时,测试参数HANDLE的值,判断对MOV BX,HANDLE或 MOV BX,1 进行汇编。,MOVSM MACRO BYTE,HANDLE MOV AH,42H MOV AL,00 IFNB HANDLE MOV BX,HANDLE ELSE,MOV BX,

13、1 ENDIF MOV CX,00 MOV DX,BYTE INT 21H ENDM,IFIDN和IFDIF,伪指令IFIDN和IFDIF比较字符串参数1和字符串参数2的值是否相等,如果相等则IFIDN条件为真,否则IFDIF条件满足。,例:宏FILEOP 将参数OPREATE作为判断条件。,FILEOP MACRO FILENAME OPREATE IFIDN OPREATE,CREAT MOV AH,16H MOV DX,SEG FILENAME MOV DS,DX MOV DX,OFFSET FILENAME INT 21H ENDIF,IFIDN OPREATE,ENDSS MOV AH,10H MOV DX,SEG FILENAME MOV DS,DX MOV DX,OFFSET FILENAME INT 21H ENDIF ENDM,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号