前言:学习X86指令体系下的汇编语言参数
数值型参数
1、常数
表示一个固定的数值。
字符串常数其数值为ASCII码值
符号常数是用一个标识符表达的一个数值。汇编语言伪指令用一条指令EQU用于定义常量定义符号
2、符号常数定义伪指令(EQU、=)
EQU伪指令格式:
1 | 符号名 EQU 数值表达式 |
功能:给符号定义一个数值或把符号定义成一个字符串,也可以说使EQU两边的项等效,可以相互代换
等价语句不会给符号名分配存储空间,符号名不能与其他符号同名,也不能被重复定义
“ = “伪指令的格式:
1 | 符号名 = 数值表达式 |
数值表达式在汇编时应可以计算出数值,其作用同EQU,但用” = “定义的符号在同一个程序中,可以重复定义
1 | N = N + 1 ;正确 |
EQU和” = “的右边允许出现符号,但该符号必须有确定的值
3、数值表达式
数值表达式可分为算数表达式、逻辑表达式、关系表达式。数值表达式的结果由程序计算
- 算数运算符:+、-、*、/、MOD、SHL、SHR
- 逻辑运算符:AND、OR、XOR、NOT
- 关系运算符:EQ、NE、GT、LT、GE、LE
地址型参数
1、标号
标号是代码段中可执行语句的地址符号,后面跟着冒号。标号有三种属性:
- 段属性:变量所在的段,可以是CS、DS、SS、ES
- 偏移量属性:距CS段首地址的偏移量
- 类型属性:NEAR表示段内标号,FAR表示段间标号
2、变量
变量是在地址段或其他段中存储单元的地址符号
- 段属性:变量所在的段,可以是CS、DS、SS、ES
- 偏移量属性:距所在段首地址的偏移量
- 类型属性:由伪指令来定义,指定存取变量的一个元素所需要的数据的字节类型
地址表达式
地址表达式的结果是由汇编程序计算出的存储器地址,没有属性
变量或标号与某一整数相加减结果仍为变量或标号,属性不变
特殊运算符
属性替代运算符
强制类型运算符PTR
格式: TYPE PTR 表达式
TYPE是类型,可以是BYTE、WORD等等
定义类型运算符THIS
THIS指令是与EQU或 = 配合使用
数值返回操作数
这一类操作数只回送操作数的某一属性值
字节分离运算符LOW和HIGH
格式:LOW表达式或HIGH表达式
其中表达式的值为16位数据,LOW取表达式值的低字节,HIGH取高字节
记录专用运算符MASK和WIDTH
格式:MASK REC或WIDTH REC
其中REC为记录字段名,MASK运算结果为该记录字段在记录中的屏蔽码,即该字段各位均为”1”,而记录中其他各位均为”0”的代码;WIDTH运算结果为字段的宽度,即字段的二进制位数