




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章宏汇编语言 5 1宏汇编语言的开发过程5 2宏汇编语言基本语句 5 1宏汇编语言的开发过程 5 2 1源程序的结构 一个完整的源程序在结构上必须做到 用方式选择伪指令说明执行该程序的微处理器类型 用段定义语句定义每一个逻辑段 用过程定义语句定义每一个子程序 用ASSUME语句说明段约定 用汇编结束语句说明源程序结束 程序在完成预定功能之后 应能安全返回DOS 5 2宏汇编语言基本语句 486 方式定义DATASEGMENTUSE16 定义数据段MESGDB HELLO 0DH 0AH DATAENDSCODESEGMENTUSE16 定义代码段ASSUMECS CODE DS DATA 说明段约定BEG MOVAX DATA BEG为启动地址MOVDS AXMOVCX 10LAST MOVAH 9MOVDX OFFSETMESGINT21HLOOPLASTMOVAH 4CHINT21H 返回DOSCODEENDSENDBEG 汇编结束 1 方式选择伪指令2 段定义语句3 段约定语句4 过程定义语句5 汇编结束语句6 返回DOS语句这类语句是与程序结构密切相关的基本语句 用来说明MPU类型 段结构与寻址方式的段约定 目标块的定位和源程序结束 1 方式选择伪指令 功能 通知汇编程序 当前的源程序指令是哪一种CPU指令 经过汇编链接之后生成的目标程序在哪一种CPU机型上运行 不属于选定CPU的指令均为非法指令 80486指令集是在8086 8088 80286 80386基础上逐步发展起来的 很显然 80486的某些指令在早期的80X86系列是没有的 为了使汇编程序能够识别 在高版本的汇编程序中 对应于每一种CPU的指令系统 都有一个目标指令的集合 指令以句号开头 格式和功能如下 8086 只汇编8086 8088指令 286或 286C 只汇编8086 8088及80286实模式指令 286P 只汇编8086 8088及80286全部指令 386或 386C 同 286 且汇编80386实模式指令 386P 同 286P 且汇编80386全部指令 486或 486C 同 386 且汇编80486实模式指令 486P 同 386P 且汇编80486全部指令通常 方式选择伪指令放在程序的头部 做为源程序的第一条语句 不设置方式选择伪指令与设置 8086是等价的 2 段定义语句功能 是逻辑段的定界语句 源程序中每一个逻辑段都必须用段定义语句定界 段定义语句格式如下 段名SEGMENT定位参数链接参数 分类名 段长度段体段名ENDS SEGMENT ENDS是一对段定义语句 一个逻辑段从SEGMENT语句开始 到ENDS语句结束 段名命名规则和变量名及标号名一样 它不能代表段体的性质 但为了阅读方便 习惯上总是根据段体的性质起一个适当的段名 通常用DATA做为数据段的段名 用STACK做为堆栈段的段名 CODE为代码段的段名 定位参数 链接参数 分类名 为段定义语句的3个属性参数 可以选用1 3个 也可以全部省略 属性参数的功能 为源程序的汇编 链接提供必要的信息 1 定位参数定位参数通知链接程序 逻辑段的目标代码在存储器中如何存放 BYTE字节地址 表明该逻辑段的目标代码可以从任意地址开始依次存放 WORD字地址 表示该逻辑段的目标代码 从偶地址开始依次存放 PARA 或者缺省 节地址 表示该逻辑段的目标代码 从一个能被16整除的地址开始依次存放 PAGE页地址 表示该逻辑段的目标代码 从一个能被256整除的地址开始依次存放 注意 链接程序对于不同模块中的同名段进行链接时 对于有BYTE属性的段 总是紧接着前一段存放 不留空闲单元 对于有WORD属性的段 也是紧接前一段存放 最多留出一个空闲单元 2 链接参数链接又称组合 链接参数通知链接程序如何将不同模块中的同名逻辑段组合成一个段 PUBLIC 通知链接程序 把不同模块中具有PUBLIC属性的同名段 在满足定位方式前提下 按照指定的链接顺序进行链接 组成一个逻辑段 MEMORY 实验证明MEMORY属性和PUBLIC属性是等价的 COMMON 通知链接程序 把不同模块中 具有COMMON属性的同名段 根据指定的链接顺序 按照 覆盖 方式组合成一个逻辑段 组合之后的逻辑段体积 等于链接之前具有COMMON属性同名段中最大的段体 STACK 具有STACK属性的逻辑段是堆栈段 链接程序将把不同模块中具有STACK属性的同名段链接成一个大的堆栈段 链接后的堆栈空间是链接前各模块预留的堆栈空间之和 程序装入后 DOS自动给SS寄存器赋值 使之等于堆栈段段基址 自动给SP赋值 使之等于堆栈空间的字节数 使SS SP自动指向栈顶 链接程序要求 EXE文件的汇编源程序 必须有堆栈段 否则链接时发出警告信息 Warningnostacksegment这行信息仅仅是提醒用户注意 并不表示源程序有什么错误 AT表达式 该属性表明 逻辑段在定位时 其段基址等于表达式给出的值 AT属性常和ORG伪指令配合如 DATASEGMENTAT0040HORG0017HKEYFLAGDB DATAENDS定义键标志单元 KEYFLAG 的物理地址为00417H 以便代码段中可以使用变量名KEYFLAG访问这个单元 AT参数不能使用在代码段 缺省 表明该段是一个独立的逻辑段 链接程序对于不同模块中 链接参数缺省的同名段 不进行组合 注意 模块化程序设计中才用到链接参数 3 分类名 表示逻辑段的类别 由用户定义 是长度不超过40个字符的字符串 分类名必须用单引号括起来 分类名可有可无 习惯上 数据段分类名用 DATA 代码段分类名用 CODE 堆栈段分类名用 STACK 链接程序把不同模块中分类名相同的同名段组织成一类 存放在邻近的存储区中 4 段长度这一参数是80386 80486汇编语言新增的段参数 只有高版本的汇编器才能识别 它有两种描述方式可供选择 USE16 表示该逻辑段长度最大允许为64K 单元的有效地址为16位 访问该逻辑段应采用16位寻址方式 USE32 表示该逻辑段长度可以超过64K 单元的有效地址为32位 访问该逻辑段采用32位寻址方式 注意 80486在实模式下定义的逻辑段最大长度不允许超过64K 一般采用16位寻址方式 TASM5默认段长度为USE16 小结 1 段定义语句有4个属性参数 每一个参数都有多种选择 2 模块化程序中才有必要考虑各模块之间同名段的定位方式和链接方式 对于单一模块的程序不需考虑这些问题 3 单一模块的程序 如果有堆栈段的话 堆栈段的链接属性应为STACK 因为只有STACK属性才表示该段是堆栈段 分类名应为用 STACK 且不能省略 其它的逻辑段 前3个属性参数都选用缺省方式 4 不同模块中 链接方式相同的同名段 如果有 分类名 的话 分类名 必须相同 5 DOS环境下运行的程序选用USE16做段长度 3 段约定语句格式 ASSUME段寄存器 段名 段寄存器 段名功能 ASSUME语句通知汇编程序 寻址逻辑段使用哪一个段寄存器 说明 ASSUME语句是非执行语句 要求放在代码段之中 执行寻址操作之前 习惯上 把ASSUME语句作为代码段的第一条语句 ASSUME语句 仅仅是约定了对某个逻辑段进行寻址操作时使用哪一个段寄存器 而段寄存器的初值还必须在程序中用指令设置 4 过程定义语句 过程 即 子程序 子程序必须用RET作为返回指令 用过程定义语句为子程序定界 格式 过程名PROC属性参数 过程的实体 RET过程名ENDP 5 汇编结束语句格式1 END程序的启动地址标号例如 ENDBEGIN功能 通知汇编程序 源程序到此结束 用BEGIN作标号的指令是程序的启动指令 DOS装载程序的可执行文件 EXE文件 时 自动把标号BEGIN所在段的段基址赋给CS 把BEGIN所在单元的偏移量赋给IP 从而CPU自动从BEGIN开始的那条指令依次执行程序 注意 在单一模块的源程序中 以及在模块化程序的主模块中必须用此格式作为源程序的最后一条语句 格式2 END功能 通知汇编程序 源程序到此结束 在模块化程序的子模块中 必须用此格式作为源程序的最后一条语句 结束语句有三种 段结束 SEGMENT ENDS 过程结束 PROC ENDP 汇编结束 END 6 返回DOS语句程序在完成预定任务之后 必须返回DOS 返回DOS最常用的方法是使用DOS系统4CH功能调用 即连续执行以下3条 或2条 指令 MOVAH 4CHMOVAL 返回码 不准备组织批处理文件 此条可省INT21H 486 方式定义DATASEGMENTUSE16 定义数据段MESGDB HELLO 0DH 0AH DATAENDSSTACKSEGMENTPARASTACK STACK USE16 定义堆栈段DB100DUP STACKENDSCODESEGMENTUSE16 定义
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年软件行业软件企业法务专业考试试题集及答案详解
- 2025年初入股市投资者必-备知识手册及模拟题集
- 2025年教育行业教师招聘考试备考指南与技巧
- 2025年物业服务质量管理高级考试试题集萃
- XX市天地车人综合监管系统项目建设用户需求书
- 2025年低碳技术与碳排放管理模拟考试题库
- 2025年注册会计师考试财务成本管理备考攻略
- 2025年新媒体运营主管的面试模拟题和答案宝典
- 2025年物流仓储管理面试实战指南与预测题
- 2025年计算机等级考试考前冲刺模拟题及解析文档
- 小儿推拿手法穴位的全身调理与养生保健
- 警械培训课件
- 中建制冷机组设备吊装工程专项施工方案冷水机组运输及吊装方案
- 读书分享读书交流会《人生海海》
- 人工智能在检验医学中的应用
- 基于保护创始人股东有限公司章程范本
- 郑州外国语中学初一新生分班(摸底)数学模拟考试(含答案)
- 人力资源员工旅游活动方案
- 外贸报价单英文模板excel报价单表格模板
- 夜间专项施工专项方案
- 糖尿病足病历讨论
评论
0/150
提交评论