0%

X86指令体系下的汇编语言参数

前言:学习X86指令体系下的汇编语言参数

数值型参数

1、常数

表示一个固定的数值。

字符串常数其数值为ASCII码值

符号常数是用一个标识符表达的一个数值。汇编语言伪指令用一条指令EQU用于定义常量定义符号

2、符号常数定义伪指令(EQU、=)

EQU伪指令格式:

1
2
符号名  EQU 数值表达式
符号名 EQU <字符串>

功能:给符号定义一个数值或把符号定义成一个字符串,也可以说使EQU两边的项等效可以相互代换

等价语句不会给符号名分配存储空间,符号名不能与其他符号同名,也不能被重复定义

“ = “伪指令的格式:

1
符号名 = 数值表达式

数值表达式在汇编时应可以计算出数值,其作用同EQU,但用” = “定义的符号在同一个程序中,可以重复定义

1
2
N = N + 1      ;正确
N EQU N + 1 ;错误

EQU和” = “的右边允许出现符号,但该符号必须有确定的值

3、数值表达式

数值表达式可分为算数表达式、逻辑表达式、关系表达式。数值表达式的结果由程序计算

  • 算数运算符:+、-、*、/、MOD、SHL、SHR
  • 逻辑运算符:AND、OR、XOR、NOT
  • 关系运算符:EQ、NE、GT、LT、GE、LE

地址型参数

1、标号

标号是代码段中可执行语句的地址符号,后面跟着冒号。标号有三种属性:

  1. 段属性:变量所在的段,可以是CS、DS、SS、ES
  2. 偏移量属性:距CS段首地址的偏移量
  3. 类型属性:NEAR表示段内标号,FAR表示段间标号

2、变量

变量是在地址段或其他段中存储单元的地址符号

  1. 段属性:变量所在的段,可以是CS、DS、SS、ES
  2. 偏移量属性:距所在段首地址的偏移量
  3. 类型属性:由伪指令来定义,指定存取变量的一个元素所需要的数据的字节类型

地址表达式

地址表达式的结果是由汇编程序计算出的存储器地址,没有属性

变量或标号与某一整数相加减结果仍为变量或标号,属性不变

特殊运算符

属性替代运算符

  1. 强制类型运算符PTR

    格式: TYPE PTR 表达式

    TYPE是类型,可以是BYTE、WORD等等

  2. 定义类型运算符THIS

    THIS指令是与EQU或 = 配合使用

数值返回操作数

这一类操作数只回送操作数的某一属性值

image-20240514111342567

字节分离运算符LOW和HIGH

格式:LOW表达式或HIGH表达式

其中表达式的值为16位数据,LOW取表达式值的低字节,HIGH取高字节

记录专用运算符MASK和WIDTH

格式:MASK REC或WIDTH REC

其中REC为记录字段名,MASK运算结果为该记录字段在记录中的屏蔽码,即该字段各位均为”1”,而记录中其他各位均为”0”的代码;WIDTH运算结果为字段的宽度,即字段的二进制位数