• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >汇编语言 > 汇编中的伪操作

汇编中的伪操作

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2017-06-28

匿名通过本文主要向大家介绍了汇编伪指令,汇编语言伪指令,51汇编伪指令,伪满洲国期刊汇编,arm汇编伪指令等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
</div>

汇编语言程序语句除指令以外还可以由伪操作和宏指令组成.伪操作又称伪指令,它不像机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,这们可以完成如数据定义、分配存储区、指示程序结束等功能。
一、数据定义及存储器分配伪操作
这一类伪操作的格式是:
[Variable]  Mnemonic Operand,...,Operand[;Comments]
其中变量(Variable)字段是可有可无的,它用符号地址表示,其作用与指令语句前的标号相同,但它的后面不跟冒号.如果语句中有变量则汇编程序使其记以第一个字节的偏移地址.
   注释(Comments)字段用来说明该伪操作的功能,它也是可有可无的.
   助记符(Mnemonic)字段说明所用伪操作的助记符,常用的有以下几种:
   DB伪操作用来定义字节,其后的每个操作数都占有一个字节.
   DW伪操作用来定义字,其后的每个操作数都占有一个字(低位字节在第一个字节地址中,高位字节在第二个字节地址中).
   DD伪操作用来定义双字,其后的每个操作数占有二个字.
   DQ伪操作用来定义四个字,其后的每个操作占有四个字.
   DT伪操作用来定义十个字节(五个字),其后的每个操作数占有十个字节,形成压缩的BCD码.
   操作数字段还可以使用复制操作符(duplication opreator)来复制某个操作数,例:
ARRAY1   DB   2 DUP(0,1,2,?)
注1:使用PTR属性操作符,可以指定操作数的类型属性.
例:
   MOV   AX,WORD PTR OPER1
注2:使用LABEL伪操作可以使同一变量具有不同的类型属性.
例:
   BYTE_ARRAY   LABEL   BYTE
   WORD_ARRAY   DW   50 DUP(?)

二、表达式赋值伪操作EQU
格式:变量名   EQU   表达式
例:
   CONST  EQU   256       数赋以符号名
   DATA   EQU   HEIGHT+12    地址表达式赋以符号名
   ALPHA  EQU   7
   BETA   EQU   ALPHA-2   
   B    EQU   [BP+8]      变址引用赋以符号名B
   P8    EQU   DS:[BP+8]
   另有一个与EQU类似的=伪操作也可以作为赋值操作使用.这们之间的区别是EQU伪操作中的表达式名是不允许重复定义的,而=伪操作则允许重复定义.
例:
   EMP=7
   EMP=EMP+1

三、段定义伪操作
   存储器的物理地址是由段地址和偏移地址组合而成的,汇编程序在把源程序转换为目标程序时,必须确定标号和变量的偏移地址,并且需要把有关信息通过目标模块传送给连接程序,以便连接程序把不同的段和模块连接在一起形成一个可执行程序.为此,需要用到段定义伪操作,段定义伪操作的格式如下:
   segment_name   SEGMENT
       ...
   segment_name   ENDS
其中删节号部分,对于数据段、附加段和堆栈段来说,一般是存储单元的定义、分配等伪操作;对于代码段则是指令及伪操作。
   此外,还必须明确段和段寄存储器的关系,这可用ASSUME伪操作来实现,其格式为:
   ASSUME  assignment,...,assignment
其中assignment说明分配情况,其格式为:
   segment_register_name:segment_name
其中段寄存器名必须是CS、DS、ES和SS中的一个,而段名必须是由SEGMENT定义的段中的段名。而ASSUME NOTHING则可取消前面由ASSUME所指定的段寄存器。
   由于ASSUME伪操作只是指定某个段分配给哪一个段寄存器,它并不能把段地址装入段寄存器中,所以在代码段中,还必须把段地址装入相应的段寄存器中。但是,代码段不需要这样做,代码段的这一操作是在程序初始化时完成的。
   SEGMENT伪操作还可以增加类型及属性的说明,格式如下:
    segname   SEGMENT [align_type]
             [combine_type]
             ['class']
          ...
    segname   ENDS
一般情况下,这些说明可以不用.但是,如果需要用连接程序把本程序与其他程序模块相连接时,就需要使用这些说明.分别叙述如下:
.定位类型(align_type)可以是:
PARA   指定段的起始地址必须从小段边界开始,即段地址的最低的16进制数位必须为0.
BYTE   该段可以从任何地址开始
WORD   该段必须从字的边界开始,即段地址必须为偶数
PAGE   该段必须从页的边界开始,即段地址的最低两个16进制数位必须为0(该地址能被256整除)
.组合类型(combine_type)可以是:
PUBLIC 该段连接时将与有相同名字的其他分段连接在一起.其连接次序由连接命令指定.
COMMON 该段在连接时与其他同名分段有相同的起始地址,所以会产生覆盖.COMMON的连接长度是各分段中最大长度.
AT expression 使段的起始地址是表达式所计算出来的16位段地址.但它不能用来指定代码段.
STACK   指定该段在运行时为堆栈段的一部分.
MEMORY 指定该将分配在所有其他连接在一起的段的前面(在高地址上),如果连接时有几个指定MEMORY的段,则遇到的第一个段作为MEMORY段,其他段则作为COMMON段.
.类别('class') 连接时用于组成段组的名字.

 2  下一页</div> </div> </div> </div> </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 伪指令
  • 汇编中的伪操作

相关文章

  • 2017-06-17通用数据传送指令
  • 2017-06-28(汇编源代码 )侦测CPU型号
  • 2017-06-28汇编与C语言的配合使用
  • 2017-06-28汇编语言中“[]”的用法
  • 2017-06-17CPU 状态控制指令
  • 2017-06-2880386保护方式简介
  • 2017-06-28汇编源码系列之getsect
  • 2017-06-28对“如何在运行时得到某处的实际地址”的补充
  • 2017-06-17实模式存储器寻址
  • 2017-06-28(汇编源代码 )PRINT FILE PROGRAM (打印文件)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 80386/80286处理的数据类型
    • 汇编教程:Win32调试API(3)
    • 汇编教程之树型视图控件
    • 了解汇编命令行参数
    • GUI编程中以对话框为主要界面的应用程序
    • 利用驱动程序读取硬盘序列号的汇编程序
    • 为何汇编的数据无类型
    • 汇编xor小妙用
    • 驱动程序的编译和连接
    • 几种基本的逻辑运算

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有