汇编语言中的操作数
一、常量
-
常数
汇编语言中,常数有不同的进制。
二进制以
b/B
结尾,八进制q/Q
结尾,十进制以d/D
结尾,十六进制以h/H
结尾。其中,十进制数是默认基数,可以不加后缀字母;凡是以字母开头的十六进制数都要在前面加一个0,用以区分标识符,如
0A25DH
。 -
字符串
字符串是用单引号或双引号括起来的一个或多个字符,其表示的值是括号里内容的ASCII代码值。
-
数值表达式:组成数值表达式的各个部分必须是确定的。
-
符号常量:使用标识符表达一个数值
定义符号常量的伪指令:
EQU
=
二、变量
标号只被汇编程序识别,表示的是指令的地址,与指令本身操作无关。
变量和标号都表示存储单元。变量表示存储单元中存放的数值,标号表示存储单元中存放的指令代码。
-
变量的定义
[变量名] 变量定义伪指令 参数[,...,参数]
重复次数 DUP(重复的参数值)
复制操作符,用于多个存储单元存储内容相同时多字数据存储时,遵循小端方式,即高高低低原则:高字节存储在高地址空间。
助记符 变量类型 DB
字节 DW
字 DD
双字 DQ
8字节 DT
10字节 -
变量的应用
1)在指令语句中:变量名表示其指向的存储单元的数据,因此可以通过变量名加减位移量表示以首个数据地址为基址的数据。
2)在伪指令语句中:通常做另一个变量定义伪指令语句中的参数,单独作为参数只能出现在
DW/DD
伪指令中。 -
变量的定位
默认数据段的偏移地址是从0开始,若想改变,则使用定位伪指令
ORG 需要的起始偏移地址
-
变量和标号的属性
1)段属性
SEG
:对应存储单元所在段的段地址2)偏移地址属性
OFFSET
:对应的首个存储单元的段内偏移地址3)类型属性
TYPE
:变量占用存储单元的字节数 -
析值运算符(数值回送运算符):
析值运算符 变量名/标号
析值运算符:
SEG,OFFSET,TYPE,LENGTH,SIZE
;其中,LENGTH
指第一个利用DUP
定义的变量中重复的次数,其他情况回送1;SIZE
返回LENGTH*TYPE
-
属性运算符
属性运算符 功能 类型 PTR 变量名/标号
临时指定或改变使用类型 THIS 类型
用于创建采用当前地址但指定类型的操作数 SHORT 标号
将标号作为短转移处理 段寄存器:
用来给一个存储器操作数指定一个段属性,即段超越
三、符号定义
-
等价语句
符号名 EQU 表达式
此处,表达式可以是常数、符号、字符串、数值表达式或地址表达式,定义后两者在引用上可以替换。
1)
EQU
不会给符号分配内存空间,与变量定义伪指令不同2)不可重新定义,不可与关键词或其他变量名相同
-
等号语句
符号名 = 数值表达式
与
EQU
功能基本相同,但可以对一个符号重复定义。 -
定义符号名语句
符号名 LABEL 类型
用该语句定义变量或标号的类型,且段属性与偏移属性与下一个紧接着的语句的存储单元的段属性和偏移属性相同,即可以使一个数据区有两种数据类型。