汇编语言学习第4章.ppt

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

4.3.5过程定义伪指令 过程定义伪指令(PROC/ENDP) 格式:过程名 PROC 属性 ??? RET 过程名 ENDP ? 其中,过程名是个标识符,写法规定与标号相同,可以将过程名理解为是过程入口的符号地址,调用过程时只要在CALL指令后写上该过程名即可。属性字段用来指明过程的类型属性是NEAR还是FAR。RET指令总是设置在过程体的末尾,使过程结束后可以返回主程序,PROC和ENDP是过程定义的伪指令,PROC为起始语句,ENDP为结束语句,这两条语句之间的内容就是被定义的过程,PROC和ENDP前面的过程名应是相同的,并且PROC和ENDP总是成对出现。 例4.30:过程和主程序在同一代码段时,过程定义和调用格式如下。 CODE SEGMENT … ??? SUBT PROC NEAR … ??? RET SUBT ENDP … ?? CALL SUBT … ?? CODE ENDS 由于主程序和过程在同一代码段中,所以过程SUBT被定义为NEAR属性,主程序中执行到CALL指令时,是将一个字的返回地址(下一条指令的偏移地址,即IP的内容)压入堆栈,然后转到SBUT为首地址的过程去执行,过程执行到RET指令时,由堆栈弹出一个字的地址(即IP的内容),返回到CALL的下一条指令继续执行主程序。 例4.31 4.3.6调整偏移量伪指令 调整偏移量伪指令是在内存变量定义时用来调整内存变量起始偏移量的,它们是在把源程序汇编成目标文件时起作用。常用的调整偏移量伪指令有:EVEN、ALIGN和ORG,它们的主要目的是:为了更有效地读取内存单元的内容。 1.偶对齐伪指令EVEN 偶对齐伪指令格式: EVEN 伪指令的作用是:告诉汇编程序(Assember),本伪指令下面的内存变量从下一个偶地址单元开始分配。 如果下一个偏移量是偶地址,那么,该伪指令不起作用,否则,汇编程序将空出一个字节,从下一偶地址开始为其后变量分配内存单元。 例4.32:假设有下列变量定义,并且变量B1的偏移量是偶数,其内存单元分布如下图所示。 B1 DB 12H ;为了表示方便,不妨再假设其偏移量为:xxxx0H W1 DW 4567H 2.对齐伪指令ALIGN 对齐伪指令格式:ALIGN? NUM 其中:NUM必须是2的幂,如:2、4、8和16等。 伪指令的作用是:告诉汇编程序,本伪指令下面的内存变量必须从下一个能被Num整除的地址开始分配。 如果下一个地址正好能被Num整除,那么,该伪指令不起作用,否则,汇编程序将空出若干个字节,直到下一个地址能被Num整除为止。 例4.33:试比较下面二组变量定义,它们的对齐效果一致吗? B1 DB 12H EVEN W1 DW 4567H B1 DB 12H ALIGN 2 W1 DW 4567H 从上面的对比,我们不难看出:伪指令ALIGN的说明功能要比伪指令EVEN强。 3.调整偏移量伪指令ORG 调整偏移量伪指令格式:ORG? 数值表达式 伪指令的作用是:告诉汇编程序,本伪指令下面的内存变量从该“数值表达式”所指定的地址开始分配。 例4.34:假设有下列变量定义,并且变量word1的偏移量为0。 word1 DW 1234h byte1 DB 56h word2 DW 0abcdh ORG 1 byte2 DB ? word3 DW ? byte3 DB ? 4.汇编地址计数器伪指令 前面,我们介绍了几种改变偏移量计数器之值的方法,但在程序中还无法引用其值。汇编语言提供了一个特殊的符号“$”来引用偏移量计数器的值。 例4.35: W1 DW $, $ ORG $+3;从当前地址开始空3个字节 B1 DB 43H 例4.36 例4.37 4.3.7复合内存变量定义伪指令 1.重复说明符DUP 从前面的内容里,我们知道了定义少量内存变量的定义形式,但如果在程序中要说明50个、100个、200个甚至更多的、同类型的内存变量时,若采用前面所学的方法,对它们一一加以说明显然是不可行的。为此,汇编语言提供了变量的重复说明符DUP,其说明的一般形式如下: count? DUP? (表达式, 表达式, …, 表达式) 解释:count是重复次数,(表达式, 表达式, …, 表达式)是被重复的部分,“表达式”可以是存储单元的初值,也可以是含义另一个DUP的式子。如果在表达式的括号中有多个表达式,那么,它们之间要用逗号‘,’分开。 例4.38 2.结构类型说明符STRUC 重复说明符DUP只能用于重复同一数据类型的变量说明,它不可以重复不同数据类型的变量说明。为了把一组不同

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档