电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

《汇编语言编程》PPT电子课件教案-09 MASM语法(3)

35页
  • 卖家[上传人]:jiups****uk12
  • 文档编号:54889098
  • 上传时间:2018-09-21
  • 文档格式:PPT
  • 文档大小:130KB
  • / 35 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、汇编语言课件09 MASM语法(3),宏汇编,宏(Macro)是汇编语言程序设计当中颇具特色的一个方面,微软就称其汇编程序为宏汇编程序(Macro Assembler,M ASM)。利用宏的特性,可以使程序员编写的源程序更加灵活方便、提高工作效率。,宏是具有宏名的一段汇编语句序列。宏需要先定义,然后在程序中进行宏调用。由于形式上类似其它指令,所以常称其为宏指令。与伪指令主要指示如何汇编不同,宏指令实际上是一段代码序列的缩写;在汇编时,汇编程序用对应的代码序列替代宏指令。因为是在汇编过程中实现的宏展开,所以常称为宏汇编。,1 宏定义,宏定义由一对宏汇编伪指令 MACRO和ENDM来完成,其格式如下: 宏名 MACRO 形参表 ;宏定义体 ENDM 其中,宏名是符合语法的标识符,同一源程序中该名字定义唯一。宏定义体中不仅可以是硬指令序列,还可以是伪指令语句序列。宏可以带显式参数表。可选的形参表给出了宏定义中用到的形式参数,每个形式参数之间用逗号分隔。,例1 程序经常需要用DOS的2号功能调用显示一个字符,可以利用宏: dispchar macro char ; 定义宏,宏名dispchar

      2、,带有形参char mov ah,2 mov dl,char ; 宏定义中使用参数 int 21h endm ; 宏定义结束宏定义中的注释如果用两个分号分隔,则在后面的宏展开中将不出现该注释。,例2 例程序经常需要输出一段信息,该程序段也可以定义成宏: dispmsg macro messagemov ah,9mov dx,offset message int 21hendm,2 宏调用,宏定义之后就可以使用它,即宏调用。宏调用遵循先定义后调用的原则,格式为: 宏名 实参表 可见,宏调用的格式同一般指令一样,在使用宏指令的位置写下宏名,后跟实体参数;如果有多个参数,应按形参顺序填入实参,用逗号分隔。,在汇编时,宏指令被汇编程序用对应的代码序列替代,称之为宏展开。汇编后的列表文件中带“”或“ 1”等数字的语句为相应的宏定义体。 宏展开的具体过程是:当汇编程序扫描源程序遇到已有定义的宏调用时,即用相应的宏定义体取代源程序的宏指令,同时用位置匹配的实参对形参进行取代。,实参与形参的个数可以不等,多余的实参不予考虑,缺少的实参对相应的形参做“空”处理(以空格取代);另外汇编程序不对实参和形参进

      3、行类型检查,完全是字符串的替代,至于宏展开后是否有效则由汇编程序翻译时进行语法检查。,例 程序中需要显示一个问号“?”,只要如下书写:dispchar ? ;宏调用(源程序中的宏指令)汇编程序将其展开后的列表文件如下(注释是另加上的): 1 mov ah,2 ;宏展开 1 mov dl, ? ;实参替代形参 1 int 21h,dispchar al1 mov ah , 2 1 mov dl , al 1 int 21h,例:例子当在数据段定义了字符串 string后,要想显示它,利用宏指令简单方便: dispmsg string ;宏指令1 mov ah,9 ;宏展开 1 lea dx,string 1 int 21h 由此可见,宏象子程序一样可以简化源程序的书写,但注意它们是有本质区别的。,例: Silly MACRO a , bmov al , amov bl, bENDMSilly a 1 mov al, amov bl,宏调用在汇编时将相应的宏定义语句复制到宏指令的位置,执行时不存在控制的转移与返回。多次宏调用,多次复制宏定义体,并没有减少汇编后的目标代码,因而执行速度也没有

      4、改变。,子程序调用在执行时由主程序的调用CALL指令实现,控制转移到子程序,子程序需要执行返回RET指令将控制再转移到主程序。多次调用子程序,多次控制转移,子程序并多次执行,但没有被复制多次;所以汇编后的目标代码较短。但是,多次的控制转移以及子程序中寄存器保护、恢复等操作,要占用一定的时间,因而会影响程序执行速度。,宏调用的参数通过形参、实参结合实现传递,简捷直观、灵活多变。宏汇编的一大特色是它的参数。宏定义时既可以无参数,也可以有一个或多个参数;宏调用时实参的形式也非常灵活,可以是常数、变量、存储单元、指令(操作码)或它们的一部分,也可以是表达式;只要宏展开后符合汇编语言的语法规则即可。,SHIFT MACRO OPAR, TAG ,NUMMOV CL, NUMS&OPAR&R TAG, CLENDMSHIFT H, AX,2MOV CL,2 SHR AX, CL,由此可见,宏与子程序各有特点,程序员应该根据具体问题选择使用哪种方法。通常来说,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,应选用子程序。,重复汇编指令,REPT、IRP、IRCP 1. REP

      5、T 伪指令 REPT 表达式重复汇编代码块 ENDM,Byte_array MACRO nValue = 0REPT ndb ValueValue=Value +1END ENDM,Byte_array 3 1 db 0 1 db 1 1 db 2,2. IRP/FOR 伪指令 IRP 形参,重复汇编代码块 ENDM 例 IRP REG,push REGENDM,1 push AX 1 push BX 1 push CX,3. IRPC 伪指令 IRPC 形参,字符串重复汇编代码块 ENDM例 IRPC X,string db XENDM db 73h,74h,72h,69h,6eh,67h,局部标号,当宏定义体具有分支、循环等程序结构时,需要标号。宏定义体中的标号必须用 LOCAL伪指令声明为局部标号,否则多次宏调用将出现标号的重复定义语法错误。 局部标号伪指令 LOCAL只能用在宏定义体内,而且是宏定义 MACRO语句之后的第一条语句,两者间也不允许有注释和分号,格式如下:,LOCAL 标号列表 其中,标号列表由宏定义体内使用的标号组成,用逗号分隔。这样,每次宏展开时汇编程序将对其

      6、中的标号自动产生一个唯一的标识符(其形式为“?0000”到“?FFFF”),避免宏展开后的标号重复,例: 设计一个将16进制数码( 09、AF、af)转化成对应的ASCII码表示。转换前的ASCII码值在AL中,转换后的ASCII码也在AL(低4位)中,不进行错误检测,宏定义如下:,asctoh macrolocal asctoh1,asctoh2cmp al,10jnc asctoh1 ; ;小于等于 9 ,说明是09,只需加30Hadd al,0jmp asctoh2: asctoh1: sub al,10add al,A asctoh2: endm,这是一个没有参数的宏定义,但因有分支而采用了标号,前两次宏调用将展开为: asctoh ;第一次宏调用 1 cmp al,10 ;第一次宏展开 1 jnc ?0000 ;局部标号被汇编程序改变 1 add al,0 1 jmp ?0001 ;局部标号被汇编程序改变 1 ?0000: sub al,10 1 add al,A 1 ?0001:,asctoh ;第二次宏调用 1 cmp al,10 ;第二次宏展开 1 jnc ?0002

      7、;局部标号被汇编程序改变 1 add al,0 1 jmp ?0003 ;局部标号被汇编程序改变 1 ?0002: sub al,10 1 add al,A 1 ?0003:,结构与记录,复合类型的数据 结构结构(类型)名 STRUCT;数据定义为指令序列结构名 ENDS,STUDENT SRTRUCTNO db 8 DUP(?)NAME db 8 DUP(?)AGE db ? STUDUNT ENDS仅仅定义了一个分配存储的模版,结构变量的定义 结构变量名 结构(类型)名 字段值表 例: s1 STUDENT s2 STUDENT S_Array STUDENT 40 DUP(),结构变量字段的引用结构变量名.字段名 例将变量s1的年龄取道Al 中mov al, s1.AGE 或mov BX , offset s1mov al, BX.AGE,文件包含,宏必须先定义后使用,不必在任何逻辑段中,所以宏定义通常书写在源程序的开头。为了使宏定义为多个源程序使用,可以将常用的宏定义单独写成一个宏库文件。使用这些宏的源程序运用包含伪指令INCLUDE将它们结合成一体。包含伪指令的格式为: INCLUDE 文件名,文件包含方法不限于对宏定义库,实际上可以针对任何文本文件。例如,程序员可以把一些常用的或有价值的宏定义存放在 .MAC宏库文件中;也可以将各种常量定义、声明语句等组织在.INC包含文件中;还可以将常用的子程序形成 . ASM汇编语言源文件。,有了这些文件以后,只要在源程序中使用包含伪指令,便能方便地调用它们,同时也利于这些文件内容的重复应用。这是子程序模块和子程序库之外的另一种开发大型程序的模块化方法。 但需要明确,利用INCLUDE伪指令包含其他文件,其实质仍然是一个源程序,只不过是分在了几个文件书写;被包含的文件不能独立汇编,而是依附主程序而存在的。所以,合并的源程序之间的各种标识符,如标号和名字等,应该统一规定,不能发生冲突。,

      《《汇编语言编程》PPT电子课件教案-09 MASM语法(3)》由会员jiups****uk12分享,可在线阅读,更多相关《《汇编语言编程》PPT电子课件教案-09 MASM语法(3)》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.