汇编语言与汇编程序.ppt

汇编语言与汇编程序.ppt

ID:52322208

大小:328.01 KB

页数:58页

时间:2020-04-04

汇编语言与汇编程序.ppt_第1页
汇编语言与汇编程序.ppt_第2页
汇编语言与汇编程序.ppt_第3页
汇编语言与汇编程序.ppt_第4页
汇编语言与汇编程序.ppt_第5页
资源描述:

《汇编语言与汇编程序.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2.4.1过程的定义过程由伪指令PROC和ENDP定义。定义过程的格式为:过程名PROC[NEAR]或FAR过程名ENDP其中,PROC和ENDP必须成对出现,且前面都有同一过程名,过程的类型由PROC的操作数指出。若PROC后无操作数,则默认为NEAR类型。在汇编程序中,可以使用过程定义伪指令定义子程序,通过调用指令CALL调用子程序。过程名是为该子程序起的名字。PROC和ENDP两伪指令之间,是为实现某功能的程序段,其中至少有一条子程序返回指令RET以便返回调用它的程序。子程序也可以用“:”定义,“:”定义的标号是为该子程序起的名字。主程序把用“:”定义的子程序作为远过程来

2、调用。若子程序与调用它的主程序在同一代码段,则必须用过程来定义该子程序。中断调用都是远调用,所以中断服务子程序用“:”定义。若用过程来定义中断服务子程序定义过程为远过程,而不论他与调用程序是否在不同的代码段。(1)NEAR属性:调用程序和子程序在同一代码段中(段内调用)(2)FAR属性:调用程序和子程序不在同一代码段中(段间调用)codesegmentmainprocfar......callsubr1......retmainendpsubr1procnear......retsubr1endpcodeendscodesegmentmainprocfar......calls

3、ubr1......retsubr1procnear......retsubr1endpmainendpcodeends例1调用程序和子程序在同一代码段中例2调用程序和子程序不在同一代码段中sagxsegmentsubtprocfar......retsubtendp......callsubt......segxendssegysegment......callsubt......segyends2.4.2段的定义段的定义通过SEGMENT和ENDS伪指令进行。定义一个段的格式是:段名SEGMENT[定位方式][组合方式]['类别名']段名ENDS其中,SEGMENT和END

4、S必须成对出现,它们的前面需有相同的名字,该名字为段名。例:STACKSEGMENTSTACKDW20DUP(?)STACKENDS伪指令SEGMENT有3个可选择的操作数:定位方式,组合方式和类别名。1.段名可以用来表示段地址,如取段名为DATA的段地址送AX的指令:MOVAX,DATA2.组合方式有NONE、STACK等6种。(1)NONE即无组合方式,表示本段与其他段逻辑上不发生关连,这是隐含的组合方式。(2)STACK表示本段与其他模块中的STACK组合方式的同名段组合成一个段。模块中至少有一个STACK段,否则在连接时会有一个错误。定义堆栈段时,必须有组合方式STAC

5、K。(3)PUBLIC表明该段与其他模块中用PUBLIC说明的同名段连接成一个逻辑段,运行时装入同一个物理段中,使用同一个段地址。(其连接顺序由连接命令指定。)(4)COMMON表明该段与其他模块中由COMMON说明的所有同名段连接时,被重叠放在一起,其长度是同名段中最长者的长度。3.定位方式有PARA、BYTE、WORD、和PAGE4种。PARA表示本段要从16的整数倍地址开始,即段首址的最低四位必须为0,这是隐含的定位方式。BYTE表示本段可从任何地址开始。WORD表示本段要从偶地址开始。PAGE表示本段要从256的整数倍地址开始。4.类别名是用单引号括起来的字符串,它是任

6、意的一个名字。连接时LINK将把类别名相同的所有段存放在连续的存储区域中。2.4.3汇编地址计数器汇编地址计数器用符号$表示,它用来记录正在被汇编程序汇编的指令的地址,即它的内容标出了汇编程序当前的工作位置。汇编程序为每个段分配一个汇编地址计数器。对需要分配存储单元的变量和产生目标代码的指令,$就按存储单元数和目标代码的长度增值。因此,段内定义的所有标号和变量的偏移地址就是当前值。DATASEGMENTBUFDB'0123456789ABCDEF'COUNTEQU$-BUFDATAENDS常量COUNT的值就是变量BUF数据区所占的存储单元数16。$可以用作指令的操作数,此时$

7、的值就是该指令的偏移地址。$也可以出现在表达式中。如:$的值可以用伪指令ORG来设置。其格式是:ORG数值表达式功能是将$设置成数值表达式的值(0000H~FFFFH之间的整数)。e.gORG$+82.4.4段寄存器的假定存储单元的段地址来自某个段寄存器。源程序在代码段的开始就要对段寄存器与段之间的关系作假定,以便宏汇编程序MASM汇编时根据指令给定的偏移地址和段寄存器中的段地址计算出正确的物理地址。段寄存器与段的关系,由伪指令ASSUME设定,设定格式是:ASSUMESREG:SNAM[,

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

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

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