[工学]第8章汇编语言程序设计.ppt

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

ASM-51宏汇编 程序设计语言 汇编语言语句及其结构 伪指令 常用程序设计方法 模块化程序设计 通过实验了解程序的调试和运行 为硬件编程打下基础…… 8.1 汇编语言语句结构 指令与伪指令 指令——产生可执行代码 伪指令——不产生机器码 指示汇编器如何生成代码 确定各段代码的存储位置 分配变量和临时数据的地址 完成常数转换 符号地址的自动计算 汇编语言程序的组成 机器指令(machine instruction) 全体指令的集合,形成可执行机器码 伪指令(assembler directives) 定义程序结构、符号(变量、地址),非执行语句 控制( assembler controls) 控制汇编模式、汇编流程(代码生成) 如 IF … ELSEIF … 程序行组成 [标号][ :] 操作码 [操作数][,操作数] [;注释] 操作码必有,其它部分可选; 操作码是指令或伪指令的助记符; 标号必须以字母开头,由字母和数字组成,它代表一个地址。 标号涉及地址分配,则后跟冒号“:”, 如果只是一般的等价关系,就不需要冒号。 注释不是对指令的简单解释,而是有利于程序阅读。 8.1.2程序行中的常数 后缀D、H、B区别进制,最高位数字以A-F开头,必须加数字0,如#0A3H; 字符或字符串用单引号写出,如′A′,′ABCD′,这样可代替ASCII码,免去手工查表的麻烦。 需要注意的是,凡写成10进制的,均自动转换为计算机中的二进制表达。 汇编时选择足够的字长来保存中间数据,但将该数编码为指令中的一部分时,超出规定字长的高位信息自动丢失。 8.1.3程序行中的表达式 表达式中可有运算符号,包括“+、-、×、÷、()” 例如 X EQU 20h MOV A,#HIGH(X-100h) MOV B,#LOW(X-100h) MOV R0,#25*4 这里X-100h = 20h-100h = FF20h HIGH、LOW分别取高字节和取低字节,上面两行等价于: MOV A,#0FFH MOV B,#20H 运算符中的运算汇编过程中执行 程序运行期间,只有真正的指令才能被执行。 运算符的作用仅仅是减少手工计算 8.2伪指令 8.2.1 段定义伪指令 程序运行需要代码段、数据段和堆栈段 MCS-51的存储器组织有其自身特色 根据MCS-51的特点,有以下各种段 直接寻址的数据段 间接寻址的数据段 可位寻址的数据段字节寻址 位寻址的段 扩展数据段(16位地址) 代码段 堆栈段 存储空间回顾 8.2.1 段定义伪指令 格式 segment SEGMENT class segment是段名 class是类型 RSEG segment RSEG 将一个段说明为可重新定位的相对段,其中segment 是被定义过的段名。 一个可重新定位的代码段,其所有标号所代表的地址是相对的; 一个可重新定位的数据段,则变量的地址是相对的。 连接程序在将多个模块的同类段合并时,生成具有绝对地址的可执行程序。 关于可重定位段的伪指令 段名 SEGMENT 类型 类型为 BIT,CODE,DATA,IDATA,XDATA之一 RSEG 段名 说明所指段名为一个相对的段,可以重新定位 例: M_DAT SEGMENT DATA RSEG M_DAT M_COD SEGMENT DATA RSEG M_COD STACK SEGMENT IDATA RSEG STACK 例2 关于绝对段的伪指令 定位地址范围 CSEG 代码段 0000-FFFF DSEG 内部RAM 00-7F(直接寻址) BSEG 位寻址段20H.0~ ISEG 内部RAM 00-FF(间接寻址) XSEG 外部RAM 0000-FFFF 8.2.2 符号定义伪指令 (1)symbol EQU expression Symbol 为标号,不带冒号; expression 为表达式,EQU表示等价 程序可读性强。修改不易出错。 例如: LIMIT EQU 120 VALUE EQU LIMIT – 20 + A 需要注意以下两条指令的差异: MOV A,LIMIT MOV A,#LIMIT 在前一行,LIMIT是立即寻址的地址,后一行为立即寻址。 (2)地址说明BIT, CODE, DATA, IDATA, XDATA 代替上述EQU,后跟地址表达式,具体格式有: symbol BIT bit_address 命名位地址 symbol CODE code_address 命名代码ROM中的地址 symbol DAT

文档评论(0)

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

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

1亿VIP精品文档

相关文档