第4章语言探究.ppt

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.5.6 简化段定义伪指令 (4)代码段定义伪指令.CODE 代码段定义伪指令.CODE用于定义一个代码段。其格式如下: .CODE [名字] 注意:如果有多个代码段,则用名字区别。只有一个代码段时,隐含段名为 @CODE。 (5)程序返回伪指令.EXIT 程序返回伪指令.EXIT用于控制程序返回DOS操作系统或调用程序。其格式如下: .EXIT (6)程序开始伪指令.STARTUP 程序开始伪指令.STARTUP用于指示程序执行的开始位置。其格式如下: .STARTUP 4.5.6 简化段定义伪指令 【例4-2】简化段定义结构示例程序,实现两个字型数据相加运算。 NAME EXAMPLE4-2 .MODEL SMALL ; 定义内存模式为小模式 .386 ; 选择386指令系统集 .DATA ; 数据段开始 DW1 DW 3483H DW2 DW 4596H SUM DW ? .STACK 200 ; 定义堆栈段及其尺寸为200字节 .CODE ; 代码段开始 .STARTUP ; 加载后程序入口点 MOV AX,DA1 ADD AX,DW2 MOV SUM,AX .EXIT ; 返回DOS或调用程序 .END ; 程序结束 4.6 宏指令 宏是一种高级汇编语言技术,允许使用宏指令是宏汇编语言的一个最主要的特点。在这种技术中,允许将具有某中功能的语句序列定义成一条宏指令供程序调用,从而避免重复书写相同的语句序列。这样做不仅可以提高编程效率,而且提高了程序的可读性和易修改性。 4.6.1 宏指令定义、调用及展开 1.宏定义 宏定义MACRO/ENDM的格式如下: 宏指令名 MACRO [形参列表] ┇ ;宏体(指令序列) ENDM MACRO语句表示要开始定义一个宏,宏指令名要遵守汇编语言标识符的命名规则。在整个程序中是唯一的,不能与其它的名字相同。宏体是由指令语句、伪指令语句甚至是宏指令语句组成的。ENDM语句表示宏定义结束。如果在宏调用时,允许对宏体中的某些部分进行适当修改,在宏定义时,把允许修改的部分用形式参数(简称形参)来表示,在宏调用时用实在参数(简称实参)来替代相对应的形参,形参之间用逗号分隔。 4.6.1 宏指令定义、调用及展开 例如:定义宏指令,将AX、BX、CX、DX的内容依次压栈 PUSH4 MACRO PUSH AX PUSH BX PUSH CX PUSH DX ENDM 例如:定义宏指令,对两个存储单元(字节/字)的内容相互交换 两个存储单元的内容不能够直接进行相互交换,可以借助于一个通用寄存器实现。以下宏定义中用形式参数M1、M2和R分别表示要用两个存储单元和一个寄存器为实在参数。 XCHG2M MACRO M1,M2,R MOV R,M1 XCHG R,M2 MOV M1,R ENDM 4.6.1 宏指令定义、调用及展开 2.宏调用 宏指令一经定义,就可以在源程序的任何位置上使用宏指令,称为宏调用。宏调用的格式如下: 宏指令名 [实参列表] 其中,宏指令名是用宏定义伪指令定义的名字。如果调用的是有参数的宏,则要用实参列表给出相应的实参,实参之间用逗号隔开。实参应与宏定义中的形参顺序一致、类型相同、个数相等。 4.6.1 宏指令定义、调用及展开 【例4-3】下面的程序中调用了宏指令PUSH4 DATA SEGMENT ┇ DATA ENDS STACK SEGMENT STACK ‘STACK’ STA DW 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE.DS:DATA START: MOV AX,DATA MOV DS,AX ┇ PUSH4 ; 调用宏指令PUSH4,将AX、BX、CX、DX的内容依次压栈 ┇ MOV AH,4CH INT 21H CODE ENDS END START 4.6.1 宏指令定义、调用及展开 【例4-4】下面的程序中调用了宏指令XCHG2M DATA SEGMENT DA1 DW 1234H ; 定义字型变量DA1 DA2 DW 5678H ; 定义字型变量DA2 ┇ DATA ENDS STACK SEGMENT STACK ‘STACK’ STA DW 100 DUP(?) STACK ENDS

文档评论(0)

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

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

1亿VIP精品文档

相关文档