版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章MASM伪指令系统 3.1汇编语言语句种类与格式3.1.1汇编语言语句的种类汇编语言源程序可以使用如下三类语句: 1指令性语句 2伪指令语句 3宏指令语句3.1.2汇编语言语句的格式指令性语句的格式为: 标号: 指令助记符 操作数 ,操作数;注释 伪指令语句的格式为: 名字伪指令定义符参数,参数;注释,1标号、名字 指令或数据的符号地址。 2助记符、定义符 规定指令或伪指令的功能。3参数 参数可分为三类,如下: (1)数值表达式 常数:二进制常数、十进制常数、十六进制常数、八进制常数、串常数、十进制科学计数法、十六进制实数 算术运算符: 、*、/、MOD 逻辑运算符: NOT、AND、O
2、R、XOR、SHR和SHL 关系运算符: EQ、NE、LT、LE、GT、GE (2)寄存器操作数寄存器操作数就是寄存器的名字,常用于指令性语句中。,(3)存储器操作数 存储器操作数即存储器的地址,常以一个表达式的形式给出,称为地址表达式。单个的变量、标号或有方括号的基址或变址寄存器是地址表达式的特例。4注释 注释项必须以分号开头。3.2常用伪指令3.2.1符号定义伪指令1等值语句EQU 格式:变量名 EQU 表达式 功能:EQU伪指令告知汇编程序,指令左右的二个量相等,并且用右边表达式的值定义左边的符号。表达式可以是常数、变量、标号、指令助记符、数值表达式、地址表达式。,2等号伪指令 格式:变
3、量名表达式 功能:“”伪指令用来为右边的表达式定义一个替代符号,且只能是数值表达式,不能为字符串或地址表达式,“”伪指令定义的符号允许重复定义。3.2.2数据定义伪指令与变量1数据定义语句 数据定义语句有5条,其格式相同,如下: 变量名 DB 初值表达式变量名 DW 初值表达式 变量名 DD 初值表达式(其它二种见课本) 功能: 让汇编程序在内存中划出指定个数的存储单元,然后将这些存储单元与变量名联系起来,并在存储单元中预置初值。,DB伪指令定义字节类型变量,其每个初值都占一个字节的存储空间。DW伪指令用来定义字类型变量,其每个初值都占一个字的存储空间。DD伪指令用来定义双字类型变量,其每个初
4、值都占二个字的存储空间。 初值表达式决定变量初值的个数,定义变量时可以指定多个初值,从而占据较多的存储空间。多个初值时各个初值间用逗号隔开。初值表达式中可以有常数或常数表达式、字符串、?和带DUP的表达式。例如: B0DB2 B1DB3,5,?,9 B2DW10H,2DUP(1234H,?) B3DD1,2 B4DB0,2DUP(?,1,2DUP(7)这5个变量分配内存情况如图3-1(a)(e)所示。,图41 DB DW DD 初值示意图,图3-1 DB、DW、DD初值示意图,说明:(1)表达式中也可以有用引号引起来的字符串,它表示将字符的ASCII码作为初值。例如: C1DBABCD C2D
5、WAB,B C3DDAB,这三个变量在内存中的存放情况如图3-2(a)(c)所示.,图3-2 DB、DW、DD初值示意图,(2) 对于DW和DD,表达式中也允许是一个变量名或者标号. 例: S1 DB 5S2 DW S1S3 DD S1 内存情况如图3-3所示。2变量的访问 (1)当变量只代表一个数据时,用变量名可直接对其代表的单元进行操作。 (2)当变量对应着多个数据时,变量名仅代表其第一个数据项,对其后数据项的存取可用变量名加一偏移量来实现。,图3-3 变量/标号名作初值,3变量的属性 一个变量一经定义就具备了如下三个属性: (1)段属性 表示变量对应数据区所在段的段基址。变量在哪个段内定
6、义,其段属性就是哪个段的段基址。 (2)偏移属性 表示变量对应数据区的段内的偏移量,即从段的起始地址开始到变量对应数据区的第一个存储单元之间的字节数,用16位无符号数表示。 变量的段属性与偏移属性构成了变量的逻辑地址。 (3)类型属性 指变量对应数据项的存取单位,它与变量定义时使用的伪指令有关。如:DB定义的变量,类型为BYTE(字节);DW定义的变量,类型为WORD(字);DD定义的变量,类型为DWORD(双字)等。,3.2.3标号及其属性 1标号的概念 标号是一条指令的符号地址,它常作为转移指令或子程序调用指令的操作数。标号同变量的区别在于标号代表的是指令代码而变量代表的数据。2标号的属性
7、 标号也是符号地址,同变量类似,也有三个属性。 段属性 偏移属性 类型属性3标号的定义 NEAR类型标号:在指令助记符前写上标号并用冒号分隔,就定义了一个NEAR标号。 FAR类型标号:必须借助于其它操作符定义,见下小节。,3.2.4析值/属性操作符及符号名定义语句1析值操作符(1)取偏移地址操作符OFFSET 格式:OFFSET变量或标号 功能:返回该变量或标号在它段内的偏移地址。(2)取段基址操作符SEG 格式:SEG变量或标号 功能:返回变量或标号所在段的段基址。(3)取类型操作符TYPE2属性改变操作符PTR 格式:类型PTR地址表达式 功能:PTR操作符的作用是将地址表达式的类型属性
8、临时指定为PTR操作符前面的类型,地址表达式的原类型属性将暂时不起作用。地址表达式的形式可以是标号、变量或,其它形式的地址,指定的类型可以是BYTE、WORD、DWORD、NEAR和FAR。 PRT的用法: 说明存储单元的类型 MOVSI,5( ) MOVBYTEPTRSI,5 ( ) 改变存储单元属性 A_BYTEDB1,2,3,4 MOVAX,WORDPTR A_BYTE 建立FAR标号 建立FAR标号一般也要借助于EQU来完成。,3.2.5段定义伪指令1段定义伪指令 格式:段名 SEGMENT 定位类型 组合类型 类别 段名ENDS2汇编程序对段的处理 设某源程序定义了三个段,段名分别为
9、WW1、WW2和WW3,如图45所示(见下页)。 汇编程序对该模块进行汇编时,每遇到一个新名字的段,就在段表中填入其段名,同时为该段配备一个初值为0的地址计数器,凡遇到产生目标代码的语句和所有的指令性语句(NIL除外),都按照它们所需要的字节数在程序地址计数器累计计数,并在相应段的代码区中生成指令代码或在数据区中生成数据。段内定义的所有标号及变量,其偏移地址都是由当前程序地址计数器的值确定。,图3-5 汇编程序对段的处理,3地址计数器的访问 地址计数器的名字为“$”,程序中可以使用或改变其值。3.3程序的段结构 在学习了段定义语句之后,我们分析一个简单的汇编语言源程序的结构。 DATASEGM
10、ENT VAR DB12H DATAENDS STACK1SEGMENTSTACK DB 300HDUP(?) STACK1ENDS CODESEGMENT ASSUMECS:CODE,DS:DATA,SS:STACK1,START:MOVAX,DATAMOVDS,AXINCVAR MOVAH,4CH INT21H CODE ENDS END START1源程序分段结构 汇编语言源程序由若干段组成,段是程序的基本构成单位,一般将数据集中放在一个段内,称为数据段.本例中为DATA段;将堆栈所需内存专划为一个段,称为堆栈段.本例中为STACK1段。在堆栈段内定义变量的目的是指定堆栈段的长度;将指令
11、代码集中放在一个段内,称为代码段,本例中为CODE段。一个程序必须有代码段,其它段根据需要定义。,2段假设伪指令ASSUME 格式:ASSUME 段寄存器名:段名,段寄存器名:段名, 功能:ASSUME伪指令设定段和段寄存器的关系,其中段寄存器名必须是CS、DS、ES和SS中的一个,而段名必须是由SEGMENT/ENDS定义的段名。 3段寄存器的填装 ASSUME伪指令仅告诉汇编程序在汇编源程序时假设段寄存器与段存在着这样的对应关系,它不能真正将段基址装入到相应的段寄存器中去。段寄存器的装入是应用程序在运行时实现的,并且4个段寄存器的装入方法有所不同。(1)DS和ES的装入 由于段基址不能用M
12、OV指令直接送往段寄存器,所以通过一通用寄存器再送往DS和ES。,(2)SS的填装 有二个办法: 在堆栈段定义时,指定组合类型为“STACK”。示例程序中STACK1段即是这样定义的,当程序代码装入到内存准备执行时,DOS将完成以下设置:SSSTACK1的段基址,SP栈底单元的偏移量1,本例中SP300H。 在堆栈段定义时,未指定组合类型为“STACK”,这时可用类似于DS、ES填装的办法对SS和SP进行设置。 (3)CS的填装 CS和IP的填装必须在程序执行之前完成,不可由程序自己来实现而是由DOS来实现。源程序结束时,通过END伪指令的参数指明程序运行时起始执行指令的位置,本例中为START,DOS将程序装入内存后,将这一位置的段基址装入CS,偏移量装入IP。,4DOS的返回 返回DOS的方法有多种,最常用也是最简单的方法是利用DOS的4CH号功能调用(见
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋建筑工程保修合同协议书范本(2024版)6篇
- 科学计算语言Julia及MWORKS实践 课件 20-极坐标图
- 进修学习护理总结出科
- 2024年幼儿园保育主任年度考核个人总结范文
- 2024月底工作总结
- 胆道感染的护理查房
- 翻译三级笔译实务模拟57
- 讲解眼科手术
- 人音版音乐七年级上册《在希望的田野上》课件
- 玉林师范学院《课程与教学论》2022-2023学年第一学期期末试卷
- 研学日游活动方案及流程
- 基于“钻石模型”的重庆柑橘产业发展研究的开题报告
- 电梯维修保养内容及标准
- 湖北银行2023年校园招聘笔试历年难、易错考点试题含答案解析
- 交通银行交银金融科技有限公司校园2023年招聘30人笔试历年难、易错考点试题含答案附详解
- 记叙文写作教学公开课一等奖市赛课获奖课件
- 2.PaleoScan详细操作流程
- 国土空间生态修复规划山水林田湖草
- 家禽生理结构-家禽的内脏器官解剖(动物解剖生理)
- 矿山开采与土地复垦
- 中国现当代文学知到章节答案智慧树2023年哈尔滨学院
评论
0/150
提交评论