WEB开发网
开发学院软件开发汇编语言 汇编语言的符号、标号和变量符号 阅读

汇编语言的符号、标号和变量符号

 2008-10-14 09:35:33 来源:WEB开发网   
核心提示:.3 1变量的定义变量通常也有三种定义法.3 1 1用伪指令DB,DW,DD等来定义格式:[变量名]定义数据伪指令〈表达式〉其中变量名可有可无,若没有名字则该变量为无名变量.表达式可以是常数、保留符号"?"、ASCII码字符串(只能用DB定义)、地址表达式(不能用DB定义)、预置数据表格和用DUP定

.3 1 变量的定义

变量通常也有三种定义法

.3 1 1 用伪指令DB,DW,DD等来定义

格式:[变量名] 定义数据伪指令〈表达式〉

其中变量名可有可无,若没有名字则该变量为无名变量.表达式可以是常数、保留符号"?"、ASCII码字符串(只能用DB定义)、地址表达式(不能用DB定义)、预置数据表格和用DUP定义的重复值.变量名可在任一逻辑段中定义,其后边不紧跟冒号而是加一空格
  .例如:A DB 100;A为一个字节,值为100.

B DB 100,2 3;B值为100,B+1的值为6.

C DB 'ABC';C的值为41H,C+1的值为42H,C+2的值为43H.D DB ?;

D是一个字节,预留一个字节,可以置入任何内容.

E DB 23 DUP(0);定义23个0,每一个0占一个字节.

F DB 3 DUP(1,2 DUP(0));定义9个数,顺序为:1,0,0,1,0,0,1,0,0.

G DW 'AB','CD';G的值为4142H,G+2的值为4344H.

H DW 2 3;H为一个字,存放顺序为06,00H

I DW ? 预留一个字,占两个字节单元,

3 1 2 用伪指令LABEL定义变量

格式:

变量名 LABEL BYTE/WORD/DWORD

例如:

BUF LABEL BYTE

DB 21

它等价于 BUF DB 21

3 1 3 用伪指令EQU定义变量

格式:变量名 EQU THIS BYTE/WORD/DWORD

THIS是定义任意类型算符,它同LABEL一样用于建立变量或标号类型属性,而其段属性为语句所在段的段地址,偏移属性为所在位置的下一个能分配到的可用偏移地址.例如:

STACK SEGMENT

DW 100 DUP(?

TOP EQU THIS WORD(或TOP LABEL WORD)

STACK END

变量TOP被定义为字类型,它的偏移量应为STACK段定义100个字后的下一个字的偏移量,它恰就是堆栈指针SP的初值,因此经常用这种方法为SP赋初值.本文来自编程入门网

3 1 4 双重定义变量名利用隐含方式和显示方式的双重方式,可以对同一位置定义为双重变量.

格式

〈变量名〉 EQU THIS〈类型〉

〈变量名〉 DB/DW/DD…

例如:

AB EQU THIS BYTE

(或AB LABEL BYTE)

AW DW 50 DUP(0)AW定义为字变量,在AW前使用了THIS BYTE,定义了一个字节类型变量,访问同一个位置,用AB按字节访问,用AW则按字访问.

3 2 变量的访问

3 2 1 变量名作为存储单元的直接地址

变量名用直接寻址时,变量的类型必须与指令的要求相符合.

例如:AB已定义字节变量,AW定义为字变量,用变量名作直接寻址形式如下:

MOV AH,AB

MOV AX,AW

3 2 2 用合成运算符PTR临时改变变量类型

接上例用

MOV CX,WORD PTR AB

MOV CL,BYTE PTR AW

则可临时把AB变为字类型,AW变为字节类型,但段和偏移属性不变.

3 2 3 变量名作为相对寻址中的偏移量

例如:

MOV AX,AB〔SI〕

MOV AX,AW[BX][SI]

在这里AB,AW分别表示它们的偏移量而不是它们所表示的数据,常用于数组或表格操作中,AB[SI]就表示AB数组中第SI个元素.

Tags:汇编语言 符号 标号

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接