汇编语言程序格式之伪操作

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


  • 处理选择伪操作

用来告诉汇编程序选择哪一种指令系统

.8086 选择 8086 指令系统
.286 选择 80286 指令系统
.286P 选择保护模式下的 80286 指令系统
.386 选择 80386 指令系统
.386P 选择保护模式下的 80386 指令系统
.486 选择 80486 指令系统
.486P 选择保护模式下的 80486 指令系统
.586 选择 Pentium 指令系统
.586P 选择保护模式下的 Pentium 指令系统

此类伪操作一般放在程序的最前面,若不给出,默认.8086


  • 段定义伪操作

汇编程序在把源程序转换成目标程序时,必须确定标号和变量(代码段和数据段的符号地址)的偏移地址,并且需要把有关信息通过目标模块传送给连接程序,以便连接程序把不同的段和模块连接在一起,形成一个可以执行程序。

格式:
segment-name SEGMENT [定位类型] [组合类型] [使用类型] [‘类别’]
……
…… ; 语句序列
segment-name ENDS

(1)定位类型 align_type
    PARA    BYTE    WORD    DWORD    PAGE
(2)组合类型 combine_type
    PRIVATE    PUBLIC    COMMON    STACK    AT   exp
(3)使用类型 use_type
    USE16    USE32
(4) 类别 ‘class’


  • 程序开始和结束伪操作

格式:

​ 开始:NAME module_name / TITLE text

​ 结束:END [ label ]


  • 数据定义及存储器分配伪操作

80x86提供了各种数据及存储器分配伪指令,这些伪指令在汇编程序对源程序进行汇编期间,由汇编程序完成数据类型定义及存储器分配等功能。

格式:

​ [变量] 助记符 操作数 [ , 操作数 , … ] [ ; 注释]

助记符字段说明所用伪操作的助记符。 常用的有以下几种:

DB(define byte):DB伪指令用来定义字节,对其后的每个数据都存储在一个字节中。

DW(define word):DW伪指令用来定义字,对其后的每个数据分配2个字节(1个字)。

DD(define doubleword):DD伪指令用来定义双字,对其后的每个数据分配4个字节(2个字)。用DD存入地址时,第一个字为偏移地址,第二个字为段地址。

DQ(define quadword):DQ伪指令用来定义4字,即64位字长的数据,DQ之后的每个数据占用8个字节(4个字)。

DT(define ten bytes):DT伪指令用来为压缩的BCD数据分配存储单元,它虽然可以分配10个字节(5个字),但最多只能输入18个数字。


  • 表达式赋值伪操作

当程序中多次出现同一个表达式。可用赋值伪操作给表达式赋予一个名字。

格式:

​ 表达式名 EQU 表达式

如:DATA EQU 256 / DATA EQU [BP+8]


  • 地址计数器与对准伪操作

使用地址计数器保存当前正在汇编的指令的偏移地址。

格式:

​ ORG   $+8    ; 跳过8个字节的存储区
​ JNE    $+6    ; 转向地址是 JNE 的首址 +6
​ JMP    $+2    ; 转向下一条指令

ORG伪操作用来设置当前计数器的值。格式: ORG constant expression

EVEN伪操作使下一个变量/指令开始于偶数字节。


  • 基数控制伪操作

汇编程序默认10进制数,为此。当使用其他基数表示的常数时,需要专门标记。

格式:

​ .RADIX expression

如:.RADIX 16


posted @ 2020-06-08 09:10  _LLLL  阅读(1218)  评论(0编辑  收藏  举报