第三章80X86伪指令系统.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章80X86伪指令系统

第三章 80X86伪指令系统 一.伪指令概述 构成汇编语言程序的语句可以分为三种:指令性语句(指令语句)、指示性语句(伪指令语句)和指令语句(宏调用语句)。指令语句,又称可执行语句,表示计算机具有的一 个基本能力。比如数据传送,数据相加、相减等。伪指令语句,又称命令语句,告诉汇编程序如何对程序进行汇编。比如段定义、储存单元分配等。一个汇编语言程序经汇编,连接和装入内存后,在执行程序之前: 指示性语句的功能已经完成,故又称伪操作。 指令性语句的功能尚未完成,需控制CPU去执行,才能完成。 二、伪指令详解 符号定义语句 等值语句 格式:符号名 EQU 需等值的表达式 功能:用符号名等值指定的表达式;其中表达式可以是任何有效的操作数,汇编时用语句中的表达式代替程序中符号所在的地方。 说明: ▲可用于定义符号常量,方便修改程序。 ▲某表达式多次出现时,用等值伪操作可以方便编程。 ▲等值语句表达式的种类 (1)常数或数值表达式 COUNT EQU 10 NUM EQU 89*3+5-9 (2)地址表达式 ADD1 EQU VAR2+10H (3)变量或标号 CON EQU VAR ▲在EQU语句右边出现的标号需在EQU语句以前进行定义。 等号语句 格式:符号 需等值的表达式 功能:把等号“ ”右边表达式的值或符号赋给等号“ ”左边的符号。表达式可以是任何有效的操作数。 说明:EQU语句与“ ”的区别: 在同一源程序中,EQU语句定义的符号不能被重新赋值或者说不能被重新定义,同一符号只能定义一次,符号的数值不能被改变。“ ”定义的符号可以被重新赋值,同一符号的数值在同一个程序中可以改变。 数据定义语句 格式:变量名 类型助记符 操作数 [ ,操作数 , ……] 功能:用于在内存中为常数、初始数据或者变量分配储存单元。 说明: (1)变量名指示内存操作数所占用的内存单元地址(符号地址),在程序中,可以通过变量,名对内存单元进行访问。变量名为用户自定义标识符,表示初值表首元素的逻辑地址。可以用变量名这个符号表示地址,常称为符号地址。变量名可以没有,这种情况,汇编程序将直接为初值表分配空间,无符号地址。设置变量名是为了方便存取它指示的存储单元。 (2)类型助记符指示定义的内存操作数的类型 字节、字、双字等 。常用的类型助记符有: DB——定义字节伪指令:用于分配一个或多个字节单元,并可以将它们初始化为指定值。初值表中每个数据一定是字节量(Byte)。 DW——定义字伪指令:用于分配一个或多个字单元,并可以将它们初始化为指定值。初值表中每个数据一定是字量(Word)。 DD——定义双字伪指令:用于分配一个或多个双字单元,并可以将它们初始化为指定值。初值表中每个数据是一个32位的双字量(Double Word)。 DF——定义3字伪指令:用于为一个或多个6字节变量分配空间及初始化。 DQ——定义4字伪指令:?用于为一个或多个8字节变量分配空间及初始化。 DT——定义10字节伪指令:用于为一个或多个10字节变量分配空间及初始化。 思考:各种类型助记符在程序中可以分别用于存放哪些类型的操作数? (3)操作数指示内存操作数的内容,即初始化的数值。初值表是用逗号分隔的参数,主要由数值常数、表达式或“?”以及DUP组成。 数值常数——汇编程序将定义的操作数,按其类型分配内存单元数,顺序存入变量名指向的内存单元中。常量和表达式表示内存操作数的初始值,其值应在其定义的类型范围内,否则汇编出错。 例 aa DB 270;错 bb DW 80000;错 ?——表示初值不确定,即未赋初值; DUP——表示重复初值。可用 DUP 复制操作符定义相同的操作数,其格式为: 重复次数 DUP 操作数 例 ee DB 3 DUP 4 等价于 ee DB 4, 4, 4 例 ee DB 2 DUP (2DUP(1,2)) 等价于 ee DB 1,2,1,2,1,2,1,2 数值返回语句 §SEG 取符号地址的段地址 §OFFSET 取符号地址的偏移地址 §TYPE取变量或标号的类型值 §LENGTH取DUP汇编回送分配给变量单元数 §SIZE取变量的大小 格式:SEG/OFFSET/TYPE/LENGTH 变量/标号(LENGTH/TYPE/SIZE后面不能使用标号) §HIGH取数值的高半部分 §LOW取数值的低半部分 格式:HIGT/LOW 变量 类型指定语句 PTR 格式:变量/标号 PTR 属性 THIS 格式:变量/标号 EQU THIS 属性 段定义伪指令 SEGMENT……ENDS 段寻址伪指令 ASSUME 过程定义伪指令 PROC……ENDP 定位

文档评论(0)

liudao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档