- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 宏汇编语言;;5.2.1 源程序的结构; .486 ;方式定义
DATA SEGMENT USE16 ;定义数据段
MESG DB ‘HELLO’,0DH,0AH,’$’
DATA ENDS
CODE SEGMENT USE16 ;定义代码段
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语句
这类语句是与程序结构密切相关的基本语句,用来说明CPU类型、段结构与寻址方式的段约定、目标块的定位和源程序结束。
;1. 方式选择伪指令;指令以句号开头, 格式和功能如下: ;2. 段定义语句
功能:
是逻辑段的定界语句,源程序中每一个逻辑段都必须用段定义语句定界。
段定义语句格式如下:
段名 SEGMENT 定位参数 链接参数 ‘分类名’ 段长度
段体
段名 ENDS;定位参数,链接参数,‘分类名’
为段定义语句的3个属性参数,可以选用1~3个,也可以全部省略。
属性参数的功能:
为源程序的汇编、链接提供必要的信息。;(1) 定位参数
定位参数通知链接程序,逻辑段的目标代码在存储器中如何存放。
① BYTE字节地址:表明该逻辑段的目标代码可以从任意地址开始依次存放;
② WORD 字地址:表示该逻辑段的目标代码,从偶地址开始依次存放;
③ PARA (或者缺省) 节地址:表示该逻辑段的目标代码,从一个能被16整除的地址开始依次存放;
④ PAGE 页地址:表示该逻辑段的目标代码,从一个能被256整除的地址开始依次存放。 ; (2) 链接参数
链接又称组合,链接参数通知链接程序如何将不同模块中的同名逻辑段组合成一个段
① PUBLIC:通知链接程序,把不同模块中具有PUBLIC属性的同名段,在满足定位方式前提下,按照指定的链接顺序进行链接,组成一个逻辑段.通知宏汇编本模块可供其它模块引用的名字;
② MEMORY:实验证明 MEMORY属性和 PUBLIC属性是等价的;
③ COMMON:通知链接程序,把不同模块中,具有 COMMON 属性的同名段,根据指定的链接顺序,按照 “覆盖” 方式组合成一个逻辑段。组合之后的逻辑段体积,等于链接之前具有 COMMON 属性同名段中最大的段体.该段在连接时与其它同名分段有相同的起始地址.
;④ STACK: 具有STACK属性的逻辑段是堆栈段,链接程序将把不同模块中具有STACK属性的同名段链接成一个大的堆栈段。链接后的堆栈空间是链接前各模块预留的堆栈空间之和。
程序装入后,DOS自动给SS寄存器赋值,使之等于堆栈段段基址,自动给SP赋值,使之等于堆栈空间的字节数,使 SS:SP自动指向栈顶。
链接程序要求:EXE文件的汇编源程序,必须有堆栈段,否则链接时发出警告信息:
Warning no stack segment
这行信息仅仅是提醒用户注意,并不表示源程序有什么错误。;⑤ AT 表达式: 该属性表明:逻辑段在定位时,其段基址等于表达式给出的值。AT属性常和 ORG伪指令配合
如: DATA SEGMENT AT 0040H
ORG 0017H
KEYFLAG DB ?
DATA ENDS
定义键标志单元(KEYFLAG)的物理地址为00417H,以便代码段中可以使用变量名KEYFLA
文档评论(0)