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

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章节高级汇编语言技术

第七章 高级汇编语言技术;§7.1 宏汇编;仅是源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变 通过形参、实参结合实现参数传递,简捷直观、灵活多变;宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法 通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序;§7.1 宏汇编;一、宏定义;宏调用及其展开;宏展开; 宏展开 当宏汇编程序扫描到宏指令语句(即宏调用)时,宏汇编程序就把宏指令定义中宏体的程序段代码替代宏指令语句。 若是带参数的宏调用,则同时用相应的实参替代宏体中对应形参的位置,并对原有宏体代码作修改。 ; 宏展开; EXCH_MEM MACRO MEM_l,MEM_2,REG MOV REG,MEM_1 XCHG REG,MEM_2 MOV MEM_1,REG ENDM DATA SEGMENT DA_W1 DW 55AAH DA_W2 DW 6688H DATA ENDS CODE SECMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX ┇ ;;宏调用和宏展开 EXCH_MEM DA_W1,DA_W2,AX ;宏指令语句 + MOV AX ,DA_Wl + XCHG AX,DA_W2 + MOV DA_W1,AX ┇ MOV AH,4CH INT 21H CODE ENDS END START ;子程序调用和宏调用的区别;宏的参数;;宏的参数;;宏定义 LEAP MACRO COND,LAB JCOND LAB ENDM ;宏调用 LEAP Z,THERE LEAP NZ,HERE ;宏展开 JZ THERE JNZ HERE;宏的参数;NUMBER MACRO THEDATA DB THEDATA ENDM 假设在程序中调用此宏指令: DATA SEGMENT NUMBER 1,3,5 DATA ENDS 则宏展开为: DATA SEGMENT DB 1,3,5 DATA ENDS 如果不加 ,则在宏展开为: DB 1 ; 而3,5按规则被忽略 ;宏的参数;NUMBER MACRO X,Y,Z, DB X,Y,Z ENDM 若宏调用为: I EQU 10 J EQU 50 NUMBER 16,%I+J,%J-I 则相应的宏展开为: DB 16,60,40;宏的参数;例如宏指令定义: DEFIN_ST MACRO STRING DB ‘StringS’ ENDM 则宏调用: DEFIN_ST Please Input a Integer(!0):$ 其宏展开为: DB ‘Please Input a Integer(0):$’;宏嵌套;宏指令定义中嵌套宏定义实例 INIT_1 MACRO X,Y,Z SHIFT_Y MACRO MOV CL,X SZ Y,CL ENDM ENDM 如采用下面的宏调用: INIT_1 2,BX,AR ;即将BX算术右移2位的宏指令 则相应的宏展开为: SHIFT_BX MACRO

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档