当前位置: 网学 > 编程文档 > 汇编语言 > 正文

汇编语言程序语句之伪操作

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式

汇编语言程序语句除指令以外还可以由伪操作和宏指令组成.伪操作又称伪指令,它不像机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,这们可以完成如数据定义、分配存储区、指示程序结束等功能。

一、数据定义及存储器分配伪操作
这一类伪操作的格式是:
[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
一般情况下,这些说明可以不用.但是,如果需要用连接程序把本程序与其他程序模块相连接

  • 上一篇资讯: 基本概念(win32)汇编教程
  • 下一篇资讯: 汇编语言技术指标
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号