Lecture 6 (AssemblerDirectives)_Chinese Rv01.pptVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Lecture 6 (AssemblerDirectives)_Chinese Rv01

第六讲 汇编伪指令 汇编伪指令 代码生成 流程 汇编命令—介绍 段控制 通用段(SEGMENT, RSEG) 绝对段(CSEG, DSEG 和 XSEG) 地址控制 ORG, USING, END 符号定义 EQU, SET, CODE, DATA, IDATA, XDATA 存储初始化/保留 DB, DW, DD, DS 编程模板例子 代码生成流程 汇编伪指令—介绍 汇编伪指令不是汇编语言指令,不生成任何机器代码 他们是置于汇编语言程序来指导汇编程序执行一个特定的任务或功能的特殊的代码。 他们可以用来定义符号值,保留和初始化多个存储空间并控制程序代码的替代。 汇编伪指令通常是具体到一个专门的汇编程序。我们会在这门课例讲 Keil A51 汇编程序。 汇编伪指令被分为如下类: 段控制 地址控制 符号定义 存储器初始化/保留 段控制 在x51 CPU 结构中, 相邻的块代码或数据存储经常被认为是一个段 举例: 一个函数定义 (程序存储器) 一个阵列 (数据储存器) 按照能否重新定位可以被分为两种段 通用的或可重新定位的 绝对的 这两个类型都可以被指定为5个存储分类之一 CODE, DATA, IDATA, XDATA, BDATA/BIT 通用(可重新定位)段分割 通用段使用 SEGMENT 伪指令生成 其最后的存储位置由连接器来分配。 格式如下:: Symbol SEGMENT segment_memory_class 举例: MYDATA SEGMENT DATA 上面的伪指令定义了一个可重新定址的段叫 MYDATA, 在DATA 存储类内 一旦上面的段名被定义后,下一步就是用RSEG 伪指令来选择段(如下面举例) RSEG MYDATA 无论何时遇到上面的声明, MYDATA 段将变为当前活动段直到汇编程序经过另外一个RSEG 伪指令,其会定义到另外一个段区域 绝对段 绝对段是指一个固定存储器段. 其是由CSEG, DSEG 和XSEG伪指令生成 段的最终位置在编译的时候是固定的。 这条伪指令的格式如下: CSEG AT address ; 定义一个绝对代码段 DSEG AT address ; 定义一个绝对数据段 XSEG AT address ; 定义一个绝对外部数据段 例子: CSEG AT 0300H ;选择代码段 ;启始地址在0300H DSEG AT 0400H ;选择数据段 ;启始地址在 0400H 地址控制—ORG ORG伪指令格式如下: ORG expression ORG 伪指令用于设置当前段的定位值,偏移地址由表达式给出 然而,它没有改变段地址.段地址只可以使用标准的段伪指令去改变. 例子: ORG 80H ;设置定位值为 80H ORG伪指令不只是用于代码段,也可以用于其它段,比如:数据段. 例如, 为在指定地址给SECONDS和 MINUTES两个变量各保留一个字节的存储器空间,我们要按如下方式来写: DSEG ;数据段 ORG 30H SECONDS: DS 1 MINUTES: DS 1 地址控制—END 伪指令的格式: END END 伪指令表示了源文件的结尾。 它通知汇编程序哪里是汇编程序的结束。 因此任何在END 伪指令后的文本都会被汇编程序所忽略。 END 伪指令是所有源文件所必须的 如果在程序结尾没有写END,汇编程序将会产生一个错误信息。 符号定义 符号定义伪指令是给一个表达式或一个寄存器分配一个符号名称 该表达式 可以是一个常量数字,一个地址参数或者另外一个符号名 有些时候,用一个符号代表一个值或者寄存器是很有利的,因为这样做对使用者来说很利于编程 另外一个好处是,将一个值等同与一个符号用户只需要在伪指令声明时改变一次就可以了 针对这一符号的剩余伪指令的声明将自动更新 符号定义—EQU, SET EQU 和SET 的伪指令格式如下所示: Symbol EQU expression Symbol EQU register Symbol SET expression Symbol SET register 和C里的 “#define”宏定义很相似 表达式可以包括简单的数学运算符,如 ‘+’, ’-‘, ‘ * ‘, ‘/’, MOD 寄存器包括 A, R0, R1, R2, R3, R4, R5, R6 and R7 符号定义—EQU, SET 举例: COUNT EQU R3 ;equate to a register TOTAL

文档评论(0)

wt60063 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档