版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、段定义伪指令2、变量定义伪指令1.段定义伪指令段定义伪指令指示汇编程序如何按段组织程序和使用存储器。段定义伪指令主要有:
SEGMENT/ENDSASSUMEORG1.段定义伪指令SEGMENT/ENDS格式:段名SEGMENT[定位类型][,组合类型][,字长类型][,类别]
……(段体)……
段名ENDS
任何一个逻辑段从SEGMENT语句开始,以ENDS语句结束。伪指令名SEGMENT和ENDS是本语句的关键字,不可以默认,并且必须成对出现。语句中段名是必选项,定位类型、组合类型、字长类型、类别为可选项。用户自己选定,不能省略,其规定同变量或标号,一个段开始与结尾用的段名应一致。2.段分配伪指令ASSUME
段分配伪指令用来完成段的分配,说明当前哪些逻辑段被分别定义为代码段、数据段、堆栈段和附加段。
1、代码段用来存放被执行的程序;
2、数据段用来存放程序执行中需要的数据和运算结果;
3、当用户程序中使用的数据量很大或使用了串操作指令时,可设置附加段来增加数据段的容量;
4、堆栈段用来设置堆栈。
说明:格式中,ASSUME是伪指令名,是语句中的关键字,不可省略。段寄存器名后面必须有冒号,如果分配的段名不止一个,则应用逗号分开。段名是指用SEGMENT/ENDS伪指令语句定义过的段名。ASSUME伪指令设置在代码段内(只能设置在代码段内),放在段定义语句之后。
格式:ASSUME段寄存器:段名[,段寄存器:段名,…]功能:说明源程序中定义的段由哪个段寄存器去寻址。段寄存器可以是CS,SS,DS,ES,FS或GS。
在用ASSUME语句来完成段的分配时,要注意以下几点:①在一个代码段中,如果没有另外的ASSUME语句重新设置,则原有的ASSUME语句的设置一直有效。②每条ASSUME语句可设置1-6个段寄存器。③可以使用NOTHING将以前的设置删除,例如:
ASSUMEES:NOTHING
;删除对ES与某段的关联设置
ASSUMENOTHING
;删除对全部6个段寄存器的设置④段寄存器的装入。【例1】
DATA
SEGMENT;定义数据段
XX
DB
?
YY
DB
?
ZZ
DB
DATA
ENDS
EXTRA
SEGMENT;定义附加段
RSS1
DW?
RSS2
DW?
RSS3
DD?
EXTRA
ENDS
STACK
SEGMENT;定义堆栈段
DW50
DUP()
TOP
EQUTHISWORD
STACK
ENDS
CODE
SEGMENT;定义代码段
ASSUMECS:CODE,DS:DATA
ASSUMEES:EXTRA,SS:STACK
START:MOVAX,DATA
MOVDS,AX
MOVAX,EXTRA
MOVES,AX
MOVAX,STACK
MOVSS,AX
MOVSP,OFFSETTOP
……
CODEENDS
ENDSTART例1解析:
在例1中,用SEGMENT和ENDS分别定义了四个段:数据段、附加段、堆栈段和代码段。在数据段和附加段中分别定义了一些数据,在堆栈段中定义了50个字单元的堆栈空间。段分配伪指令ASSUME指明CS寄存器指向代码(CODE)段,DS指向数据(DATA)段,ES指向附加(EXTRA)段,SS指向堆栈(STACK)段,如果一行写不下,可分为两个ASSUME语句来说明。2.变量定义伪指令变量定义伪指令用来定义变量的类型,并为变量中的数据项分配存储单元。变量定义伪指令有两种不同的格式。格式1格式:[变量名]DB/DW/DD/DQ/DT表达式格式2
格式1.[变量名]DB/DW/DD/DQ/DT表达式功能:DB(definebyte):定义一个字节类型的变量,其后的每个操作数均占用1个字节。
DW(defineword):定义一个字类型的变量,其后的每个操作数均占用1个字(2个字节)。
DD(definedoubleword):定义一个双字类型的变量,其后的每个操作数均占用2个字(4个字节)。
DQ(definequadword):定义一个四字类型的变量,其后的每个操作数均占用4个字(8个字节)。
DT(definetenbytes):定义一个十字节类型的变量,其后的每个操作数均占用5个字(10个字节)。其中,各变量定义伪指令都将高位字节数据存放在高地址中,低位字节数据存放在低地址中。格式1又可分为以下几种具体用法:(1)用数值表达式定义变量
【例2】K1DB10,4,10H
K2DW100,100H,-5
K3DD3*20,0FFFDH
变量K1,K2,K3经汇编后的结果如图1所示。图1:(2)用地址表达式定义变量
【例3】RS1DWADDR1
DW
ADDR2
RS2
DDLOOP1
DDLOOP2汇编程序在汇编时,在相应存储区域中存入有关变量或标号的地址值,其中偏移地址或段基址均占一个字,低位字节占用第一个字节地址,高位字节占用第二个字节地址。若用DD定义变量或标号,则偏移地址占用低位字,段基址占用高位字。变量RS1,RS2经汇编后的结果如图2所示。图2:(3)用字符串定义变量字符串必须用单引号引起来,其中字符的个数可以是一个,也可以是多个。注意空格也是字符(ASCII码为20H)。【例4】STRING1
DB
'123'
STRING2
DB
'HOWAREYOU?'
STRING3
DW
'C','DE'
变量STRING1,STRING2,STRING3经汇编后的结果如图3。注:对字符串的定义可用DB伪指令,也可用DW伪指令。用DW和DB定义的变量在存储单元中存放的格式是不同的。用DW语句定义的字符串只允许包含一个或两个字符,如果字符多于两个时,必须用DB语句来定义。图3:(4)用问号(?)定义不确定值的变量可为变量保留空单元,常用来存放运算的结果。
【例5】OPER1DB35H,?,0AH
OPER2DW0C0DH,?
OPER3DD?变量OPER1,OPER2,OPER3经汇编后的结果如图4所示。图4:格式2的说明:与格式1的不同之处在于格式2增加了nDUP(duplicate)用于表示重复次数,同时表达式需用圆括号括起。其中,重复次数n可以是常数,也可以是表达式,它的值应该是一个正整数,数值范围为1~65535,其作用是指定括号中操作数项的重复次数。括号中的操作数项
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年成都市教育科学研究院附属新都实验学校招聘教师真题
- 宾社区工作者招考真题及答案2025
- 主题词 09 文化传承-备战2022年中考语文之“真题+模拟”主题作文专项训练(原卷版)
- 水利工程巡查管护制度
- 物流仓储公司仓库管理员货物存储与盘点准确性绩效评定表
- 关于解决质量问题后续措施的通知(5篇)
- 互联网产品经理市场营销团队长绩效考评表
- 远离电磁辐射保护身体健康,小学主题班会课件
- 树立安全意识筑牢校园安全防线小学主题班会课件
- 新手入门智能家居使用全攻略手册
- 安全管理人员任命书
- 北京市延庆区教育委员会招聘教师笔试真题2025
- 2026湖南长沙市第二医院(长沙市妇幼保健院河西分院)招聘劳务派遣人员89人考试备考题库及答案详解
- 2026年电厂化学安全知识培训
- 海南天然橡胶产业集团股份有限公司招聘笔试题库2026
- 公司展示馆数字影像集成方案动态
- 烧伤患者液体补充原则
- 核心素养视域下七年级数学“截一个几何体”跨学科项目式教案
- 雨天砼浇筑施工方案(3篇)
- 24J113-1 内隔墙-轻质条板(一)
- 卫生院冷链药品管理制度
评论
0/150
提交评论