《微型计算机原理与接口技术》第5章-2013_第1页
《微型计算机原理与接口技术》第5章-2013_第2页
《微型计算机原理与接口技术》第5章-2013_第3页
《微型计算机原理与接口技术》第5章-2013_第4页
《微型计算机原理与接口技术》第5章-2013_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 宏汇编语言5.1 宏汇编语言基本语句5.2 宏汇编语言的开发过程 一个完整的源程序在结构上必须做到: 用方式选择伪指令说明执行该程序的微处理 器类型; 用段定义语句定义每一个逻辑段; 用过程定义语句定义每一个子程序; 用ASSUME语句说明段约定; 用汇编结束语句说明源程序结束; 程序在完成预定功能之后,应能安全返回DOS。5.1 宏汇编语言基本语句 .486 ;方式定义 DATA SEGMENT USE16 ;定义数据段 MESG DB HELLO,0DH,0AH,$ DATA ENDS CODE SEGMENT USE16 ;定义代码段 ASSUME CS:CODE,DS:DATA

2、 ;说明段约定 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 ;汇编结束HELLO0D0A$MESGDSCS1. 方式选择伪指令2. 段定义语句3. 段约定语句4. 过程定义语句5. 汇编结束语句6.返回DOS语句 这类语句是与程序结构密切相关的基本语句,用来说明MPU类型、段结构与寻址方式的段约定、目标块的定位和源程序结束。1. 方式选择伪指令 功能: 通

3、知汇编程序,当前的源程序指令是哪一种CPU指令,经过汇编链接之后生成的目标程序在哪一种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全部指令通常,方式选择伪指令放在程序的头部,做为源程序的第一条语句。不设置方式选择伪指令与设置8

4、086是等价的。2. 段定义语句 功能: 是逻辑段的定界语句,源程序中每一个逻辑段都必须用段定义语句定界。 段定义语句格式如下: 段名 SEGMENT 定位参数 链接参数 分类名 段长度 段体 段名 ENDSSEGMENT/ENDS 是一对段定义语句,一个逻辑段从SEGMENT语句开始,到ENDS语句结束。 段名 命名规则和变量名及标号名一样,它不能代表段体的性质,但为了阅读方便,习惯上总是根据段体的性质起一个适当的段名。通常用DATA做为数据段的段名,用STACK做为堆栈段的段名,CODE为代码段的段名。定位参数,链接参数,分类名 为段定义语句的3个属性参数,可以选用13个,也可以全部省略。

5、属性参数的功能: 为源程序的汇编、链接提供必要的信息。 【小结】 1. 段定义语句有4个属性参数,每一个参数都有多种选择。 2. 模块化程序中才有必要考虑各模块之间同名段的定位方式和链接方式。对于单一模块的程序不需考虑这些问题。 3. 单一模块的程序,如果有堆栈段的话,堆栈段的链接属性应为 STACK(因为只有STACK属性才表示该段是堆栈段),分类名应为用STACK,且不能省略。其它的逻辑段,前3个属性参数都选用缺省方式。 4. 不同模块中,链接方式相同的同名段,如果有分类名的话,分类名必须相同。 5. DOS环境下运行的程序选用USE16做段长度。3. 段约定语句格式: ASSUME 段寄

6、存器:段名,段寄存器:段名功能: ASSUME 语句通知汇编程序,寻址逻辑段使用哪一个 段寄存器。说明: ASSUME语句是非执行语句,要求放在代码段之中,执行寻址操作之前。习惯上,把ASSUME语句作为代码段的第一条语句。 ASSUME语句,仅仅是约定了对某个逻辑段进行寻址操作时使用哪一个段寄存器,而段寄存器的初值还必须在程序中用指令设置。4. 过程定义语句 “过程”即“子程序”。子程序必须用RET作为返回指令,用过程定义语句为子程序定界。 格式: 过程名 PROC 属性参数 过程的实体 RET 过程名 ENDP5. 汇编结束语句 格式1: END 程序的启动地址标号 例如 : END BE

7、GIN 功能 : 通知汇编程序,源程序到此结束,用BEGIN作标号的指令是程序的启动指令。 DOS装载程序的可执行文件(EXE文件)时,自动把标号BEGIN所在段的段基址赋给CS,把BEGIN所在单元的偏移量赋给IP。从而CPU自动从BEGIN开始的那条指令依次执行程序。 注意 :在单一模块的源程序中,以及在模块化程序的主模块中必须用此格式作为源程序的最后一条语句。格式2: END功能 : 通知汇编程序,源程序到此结束。在模块化程序的子模块中,必须用此格式作为源程序的最后一条语句。结束语句有三种:段结束 (SEGMENT/ENDS)过程结束(PROC/ENDP)汇编结束(END) 6. 返回D

8、OS语句程序在完成预定任务之后,必须返回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 SEGMENT USE16 ;定义代码段 ASSUME CS:CODE,DS

9、:DATA,SS:STACK ;说明段约定 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 ;汇编结束编辑程序. ASM 文件汇编程序. OBJ 文件连接程序. EXE 文件Edit 等 TASMTLINK5.2 宏汇编语言的开发过程 .486 ;方式定义 DATA SEGMENT USE16 ;定义数据段 MESG DB HELLO,0DH,0AH,$ DATA ENDS CODE SEGMENT USE16 ;定义代码段 ASSUME CS:CODE,DS:DATA ;说明段约定 BEG: MOV AX,DATA ;BE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论