




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 宏汇编语言,5.1 宏汇编语言的开发过程 5.2 宏汇编语言基本语句,5.1 宏汇编语言的开发过程,5.2.1 源程序的结构,一个完整的源程序在结构上必须做到: 用方式选择伪指令说明执行该程序的微处理 器类型; 用段定义语句定义每一个逻辑段; 用过程定义语句定义每一个子程序; 用ASSUME语句说明段约定; 用汇编结束语句说明源程序结束; 程序在完成预定功能之后,应能安全返回DOS。,5.2 宏汇编语言基本语句,.486 ;方式定义 DATA SEGMENT USE16 ;定义数据段 MESG DB HELLO,0DH,0AH,$ DATA ENDS CODE SEGMENT USE1
2、6 ;定义代码段 ASSUME CS:CODE,DS:DATA ;说明段约定 BEG: MOV AX,DATA ;BEG为启动地址 MOV DS,AX MOV CX,10 LAST: MOV AH,9 MOV DX,OFFSET MESG INT 21H LOOP LAST MOV AH,4CH INT 21H ;返回DOS CODE ENDS END BEG ;汇编结束,1. 方式选择伪指令 2. 段定义语句 3. 段约定语句 4. 过程定义语句 5. 汇编结束语句 6.返回DOS语句 这类语句是与程序结构密切相关的基本语句,用来说明MPU类型、段结构与寻址方式的段约定、目标块的定位和源程序
3、结束。,1. 方式选择伪指令,功能: 通知汇编程序,当前的源程序指令是哪一种CPU指令,经过汇编链接之后生成的目标程序在哪一种CPU机型上运行。 不属于选定CPU的指令均为非法指令。80486指令集是在8086、8088、80286、80386基础上逐步发展起来的,很显然,80486的某些指令在早期的80X86系列是没有的,为了使汇编程序能够识别,在高版本的汇编程序中,对应于每一种CPU的指令系统,都有一个目标指令的集合。,指令以句号开头, 格式和功能如下:, 8086 ;只汇编8086、8088指令。 286或 286C ;只汇编8086、8088及80286实模式指令 286P ;只汇编8
4、086、8088及80286全部指令 386或 386C ;同286,且汇编80386实模式指令 386P ;同286P,且汇编80386全部指令 486或 486C ;同386,且汇编80486实模式指令 486P ;同386P,且汇编80486全部指令 通常,方式选择伪指令放在程序的头部,做为源程序的第一条语句。不设置方式选择伪指令与设置8086是等价的。,2. 段定义语句 功能: 是逻辑段的定界语句,源程序中每一个逻辑段都必须用段定义语句定界。 段定义语句格式如下: 段名 SEGMENT 定位参数 链接参数 分类名 段长度 段体 段名 ENDS,SEGMENT/ENDS 是一对段定义语句
5、,一个逻辑段从SEGMENT语句开始,到ENDS语句结束。 段名 命名规则和变量名及标号名一样,它不能代表段体的性质,但为了阅读方便,习惯上总是根据段体的性质起一个适当的段名。通常用DATA做为数据段的段名,用STACK做为堆栈段的段名,CODE为代码段的段名。,定位参数,链接参数,分类名 为段定义语句的3个属性参数,可以选用13个,也可以全部省略。 属性参数的功能: 为源程序的汇编、链接提供必要的信息。,(1) 定位参数 定位参数通知链接程序,逻辑段的目标代码在存储器中如何存放。 BYTE字节地址:表明该逻辑段的目标代码可以从任意地址开始依次存放; WORD 字地址:表示该逻辑段的目标代码,
6、从偶地址开始依次存放; PARA (或者缺省) 节地址:表示该逻辑段的目标代码,从一个能被16整除的地址开始依次存放; PAGE 页地址:表示该逻辑段的目标代码,从一个能被256整除的地址开始依次存放。,注意: 链接程序对于不同模块中的同名段进行链接时,对于有BYTE属性的段,总是紧接着前一段存放,不留空闲单元。对于有WORD属性的段,也是紧接前一段存放,最多留出一个空闲单元。,(2) 链接参数 链接又称组合,链接参数通知链接程序如何将不同模块中的同名逻辑段组合成一个段 PUBLIC:通知链接程序,把不同模块中具有PUBLIC属性的同名段,在满足定位方式前提下,按照指定的链接顺序进行链接,组成
7、一个逻辑段; MEMORY:实验证明 MEMORY属性和 PUBLIC属性是等价的; COMMON:通知链接程序,把不同模块中,具有 COMMON 属性的同名段,根据指定的链接顺序,按照 “覆盖” 方式组合成一个逻辑段。组合之后的逻辑段体积,等于链接之前具有 COMMON 属性同名段中最大的段体;, STACK: 具有STACK属性的逻辑段是堆栈段,链接程序将把不同模块中具有STACK属性的同名段链接成一个大的堆栈段。链接后的堆栈空间是链接前各模块预留的堆栈空间之和。 程序装入后,DOS自动给SS寄存器赋值,使之等于堆栈段段基址,自动给SP赋值,使之等于堆栈空间的字节数,使 SS:SP自动指向
8、栈顶。 链接程序要求:EXE文件的汇编源程序,必须有堆栈段,否则链接时发出警告信息: Warning no stack segment 这行信息仅仅是提醒用户注意,并不表示源程序有什么错误。, AT 表达式: 该属性表明:逻辑段在定位时,其段基址等于表达式给出的值。AT属性常和 ORG伪指令配合 如: DATA SEGMENT AT 0040H ORG 0017H KEYFLAG DB ? DATA ENDS 定义键标志单元(KEYFLAG)的物理地址为00417H,以便代码段中可以使用变量名KEYFLAG访问这个单元。 AT 参数不能使用在代码段。 缺省:表明该段是一个独立的逻辑段,链接程序
9、对于不同模块中,链接参数缺省的同名段,不进行组合。,注意: 模块化程序设计中才用到链接参数,(3) 分类名 表示逻辑段的类别。 由用户定义,是长度不超过40个字符的字符串。 分类名必须用单引号括起来,分类名可有可无。 习惯上,数据段分类名用DATA,代码段分类名用CODE,堆栈段分类名用 STACK。 链接程序把不同模块中分类名相同的同名段组织成一类,存放在邻近的存储区中。,(4) 段长度 这一参数是80386、80486汇编语言新增的段参数,只有高版本的汇编器才能识别,它有两种描述方式可供选择: USE16:表示该逻辑段长度最大允许为64K,单元的有效地址为16位,访问该逻辑段应采用16位寻
10、址方式。 USE32:表示该逻辑段长度可以超过64K,单元的有效地址为32位,访问该逻辑段采用32位寻址方式。,注意: 80486在实模式下定义的逻辑段最大长度不允许超过64K , 一般采用16位寻址方式。 TASM5默认段长度为USE16,【小结】 1. 段定义语句有4个属性参数,每一个参数都有多种选择。 2. 模块化程序中才有必要考虑各模块之间同名段的定位方式和链接方式。对于单一模块的程序不需考虑这些问题。 3. 单一模块的程序,如果有堆栈段的话,堆栈段的链接属性应为 STACK(因为只有STACK属性才表示该段是堆栈段),分类名应为用STACK,且不能省略。其它的逻辑段,前3个属性参数都
11、选用缺省方式。 4. 不同模块中,链接方式相同的同名段,如果有分类名的话,分类名必须相同。 5. DOS环境下运行的程序选用USE16做段长度。,3. 段约定语句 格式: ASSUME 段寄存器:段名,段寄存器:段名 功能: ASSUME 语句通知汇编程序,寻址逻辑段使用哪一个 段寄存器。,说明: ASSUME语句是非执行语句,要求放在代码段之中,执行寻址操作之前。习惯上,把ASSUME语句作为代码段的第一条语句。 ASSUME语句,仅仅是约定了对某个逻辑段进行寻址操作时使用哪一个段寄存器,而段寄存器的初值还必须在程序中用指令设置。,4. 过程定义语句 “过程”即“子程序”。子程序必须用RET
12、作为返回指令,用过程定义语句为子程序定界。 格式: 过程名 PROC 属性参数 过程的实体 RET 过程名 ENDP,5. 汇编结束语句 格式1: END 程序的启动地址标号 例如 : END BEGIN 功能 : 通知汇编程序,源程序到此结束,用BEGIN作标号的指令是程序的启动指令。 DOS装载程序的可执行文件(EXE文件)时,自动把标号BEGIN所在段的段基址赋给CS,把BEGIN所在单元的偏移量赋给IP。从而CPU自动从BEGIN开始的那条指令依次执行程序。 注意 :在单一模块的源程序中,以及在模块化程序的主模块中必须用此格式作为源程序的最后一条语句。,格式2: END 功能 : 通知
13、汇编程序,源程序到此结束。在模块化程序的子模块中,必须用此格式作为源程序的最后一条语句。,结束语句有三种: 段结束 (SEGMENT/ENDS) 过程结束(PROC/ENDP) 汇编结束(END),6. 返回DOS语句 程序在完成预定任务之后,必须返回DOS。返回DOS最常用的方法是使用DOS系统4CH功能调用,即连续执行以下3条(或2条)指令: MOV AH,4CH MOV AL,返回码 ; 不准备组织批处理 文件,此条可省 INT 21H,.486 ;方式定义 DATA SEGMENT USE16 ;定义数据段 MESG DB HELLO,0DH,0AH,$ DATA ENDS STACK SEGMENT PARA STACK STACK USE16;定义堆栈段 DB 100 DUP(?) STACK ENDS CODE SEG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大连海洋大学《全科医学》2023-2024学年第一学期期末试卷
- 企业资金流动的审计策略分析
- 辽宁特殊教育师范高等专科学校《现代食品营养与安全自科类》2023-2024学年第一学期期末试卷
- 2025届北京理工大附中分校七年级数学第一学期期末教学质量检测试题含解析
- 油漆库存数量管理办法
- 法务案件归类管理办法
- 法院执业证书管理办法
- 泵站运行值班管理办法
- 流程引擎租户管理办法
- 济南信用评价管理办法
- 2025中考(传统文化)类满分作文10篇
- 标准检验指导书(SIP)-钣金
- 交易员心理培训课件
- 京东笔试题库及答案
- 城市公园绿化施工安全措施方案
- DB11 T 627-2009 好氧降解法治理生活垃圾非卫生填埋场监测技术规范
- 建筑工程赶工计划措施
- 第十三讲先锋队与中华民族独立解放(1919-1949)-中华民族共同体概论专家大讲堂课件
- ICU发热与体温管理课件
- 职业中等专业学校计算机应用专业课程标准
- 《工业战略性新兴产业分类目录(2023)》
评论
0/150
提交评论