汇编语言程序设计教学课件葛建梅 第8章.ppt

汇编语言程序设计教学课件葛建梅 第8章.ppt

ID:50459218

大小:137.00 KB

页数:20页

时间:2020-03-09

汇编语言程序设计教学课件葛建梅 第8章.ppt_第1页
汇编语言程序设计教学课件葛建梅 第8章.ppt_第2页
汇编语言程序设计教学课件葛建梅 第8章.ppt_第3页
汇编语言程序设计教学课件葛建梅 第8章.ppt_第4页
汇编语言程序设计教学课件葛建梅 第8章.ppt_第5页
资源描述:

《汇编语言程序设计教学课件葛建梅 第8章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章高级语言汇编技术◆宏汇编◆重复汇编◆条件汇编伪指令8.1宏汇编在编写汇编语言程序的过程中,有时某个程序段要出现许多次,有时只是参数不同,但功能完全一样,则这样的程序段可以定义成一个指令,并且称它为宏指令。8.1.1宏定义若想在汇编语言中使用宏指令,就要定义一个宏。按照是否使用参数,可以将宏指令分为如下两种格式。1.不带参数的宏定义宏指令名MACRO┇宏体ENDM2.带参数的宏定义:宏指令名MACRO形参1,形参2,…┇宏体ENDM【例8.2】将两个存储单元数据交换的程序段定义成一个宏指令EXCH_MEM。EXCH_MEMMACROMEM_1,MEM_2,REGMOVREG,M

2、EM_1XCHGREG,MEM_2MOVMEM_1,REGENDMMEM_1,MEM_2,REG是形式参数,形参可以是多个,各个形参之间用逗号相隔。对于带参数的宏定义,宏体中程序段有些部分允许宏调用时作适当修改。在宏定义中,把允许修改的分用形式参数(简称形参)来表示,当宏调用时就用相应的实参数来取代。8.1.2宏调用和宏展开1.宏调用在汇编语言中使用已定义过的宏指令,称为宏调用。按照宏指令定义的格式,宏调用也可分为两种格式。(1)无参数宏调用:宏指令名(2)带参数宏调用:宏指令名实参1,实参2,…2.宏展开当宏汇编程序扫描到宏指令语句(即宏调用)时,宏汇编程序就把宏指令定义中宏体的

3、程序段代码替代宏指令语句。若是带参数的宏调用,则同时用相应的实参替代宏体中对应形参的位置,并对原有宏体代码作修改。下面是一个源程序的列表文件,它展示了宏定义、宏调用和宏展开的全部过程。在列表文件中,左边带“+”号的指令是宏汇编程序在宏展开时自动生成的指令。宏定义本身不生成任何目标代码,宏指令语句本身也不生成目标代码,它仅表示宏调用出现的位置。EXCH_MEMMACROMEM_l,MEM_2,REGMOVREG,MEM_1XCHGREG,MEM_2MOVMEM_1,REGENDMDATASEGMENTDA_W1DW55AAHDA_W2DW6688HDATAENDSCODESECMEN

4、TASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AX┇;宏调用和宏展开EXCH_MEMDA_W1,DA_W2,AX;宏指令语句+MOVAX,DA_Wl+XCHGAX,DA_W2+MOVDA_W1,REG┇MOVAH,4CHINT21HCODEENDSENDSTART8.1.3宏调用中的参数使用为了宏定义和引用的某些特殊需要,有时实参是由字符、空格等特殊符号组成的,因此汇编程序支持几个具有特定含义的运算符。1.连接运算符&在宏定义中,如果形式参数与其它字符连接在一起,或形式参数出现在字符串之中,那么,就必须使用连接运算符(&)

5、。在宏指令定义的具体使用时,连接操作符&可以在形参的前面,也可在形参的后面。在宏指令展开时,对应形参的实参就与它前面或后面的符号连接在一起构成一个新的符号。【例8.3】宏指令SHIFT_N功能是:对某一个寄存器进行由COUNT确定的移位次数,由DIRECT确定逻辑或算术左/右移位,移位的方向可通过&将S和DIRECT对应的实参连接起来。SHIFT_NMARCOREG,DIRECT,COUNTMOVCL,COUNTS&DIRECTREG,CLENDM如SHIFT_NBX,HR,3的宏指令的展开为:+MOVCL,3+SHRBX,CL这样就实现了使BX逻辑右移3位。形参DIRECT被实参

6、HR代替,通过连接符&将S和HR连接成SHR。同理SHIFT_NAX,HL,5可实现AX逻辑左移5位。2.文本操作符<>文本操作符是一对尖括号<>,用它括起来的内容将作为一个字符串来进行形式参数的整体替换。在宏引用时,如果实参内包含逗号、空格等间隔符,则必须使用该操作符,以保证实参的完整性。如果实参是某个具有特殊含义的字符,为了使它只表示该字符本身,也需要用该运算符括起来。NUMBERMACROTHEDATADBTHEDATAENDM假设在程序中调用此宏指令:DATASEGMENTNUMBER<1,3,5>DATAENDS则宏展开为:DATASEGMENT+DB1,3,5DATAE

7、NDS如果不加<>,则在宏展开为:+DB1;而3,5按规则被忽略3.表达式操作符%进行宏调用时,如要在实参中使用“%”,则在宏指令调用时宏汇编程序将获取“%”后常数表达式的值作为参数,而非表达式本身,如:NUMBERMACROX,Y,Z,DBX,Y,ZENDM若宏调用为:IEQU10JEQU50NUMBER16,%I+J,%J-I则相应的宏展开为:+DB16,60,404.字符操作符!字符操作符!的使用表明,“!”后的字符不是特殊字符,而是普通字符。这样对于包含在“<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。