指令语句格式
【标号:】指令助记符 操作数;注释
标号:是机器指令语句存放地址的符号表示,代表该指令目标代码的第一个字节地址,后面必须紧跟冒号‘:’
指令助记符:指令助记符为语句的核心成分,表示了该语句的操作类型
操作数:操作数表示指令助记符的操作对象
注释:均已‘;’开始
伪指令语句格式
【符号名】伪指令符 操作数 ;注释
符号名:是伪指令语句的一个可选项
伪指令符:伪指令符指定汇编程序要完成的具体操作,如数据定义伪指令DB,DW,DD,段定义伪指令SEGMENT,假定伪指令ASSUME等
操作数:伪指令后面的操作数可以是常量,字符串,变量,表达式等,各个操作数之间必须以‘逗号’分隔
注释:伪指令的注释必须以‘;’开始
各种形式数字常量格式对照表
字符串常量
字符串常量是用单引号引起来的一个或多个字符。字符串常量是以各字符的ascii码表示。如‘A’用41H表示,字符串'A1B2'用41H,31H,42H,32H表示
变量
- 段属性
- 偏移地址属性
- 类型属性(DB/DW/DD)
变量的定义
表达式项是给变量或指定存储单元附上初值,它有以下几种形式:
- 数值表达式
- 字符串表达式
- ?表达式
- 带DUP的表达式
数值表达式
数据定义伪指令可以为一个或连续的存储单元设置数值初值
DATA SEGMENT
A DB 11H,12H,13H
B DW 1122H,3344H
C DD 12345678H
DATA ENDS
字符串表达式
字符串表达式中的字符串必须用引号引起来。DB,DW,DD伪指令将字符串中的各字符均已ascii码形式存放在相应的存储单元,表示形式各不相同
DATA SEGMENT
STR1 DB ‘123’
STR2 DW ‘AB’,‘A’
STR3 DD ‘AB’
DATA ENDS
?表达式:?表达式只分配存储单元,不赋值
CNT DB ?
BUF DW ?
带DUP的表达式
在表达式中使用重复数据操作符DUP,可以为连续的存储单元提供重复数据,其格式为:
N DUP (表达式)
其中N为重复因子,只能取正整数,表示定义了N个重复数据存储单元,其类型由它前面的数据定义伪指令确定,而每个数据存储单元中的初值由DUP后面圆括号中的表达式给定
BUF DB 100 DUP (0)
以上语句定义了以BUF为首址,大小为100个字节,初值为0的数据存储单元
标号
标号是一条指令语句的符号地址。在汇编原程序中,只有在需要转向一条指令语句时,才为该指令语句设置标号,一边在转移类指令(含子程序调用指令)中直接引号这个标号。因此,标号可作为转移类指令的操作数,即转移地址。
NEXT:MOV AL,[SI] ;带标号NEXT的指令
|
|
DEC CX
JNC NEXT
属性
- 段属性
- 偏移地址属性
- 类型属性(near/far)
算术运算符
- +(正号),-(负号)
- +(加),-(减),*(乘),/(除),mod(取模)
算术运算符与立即数,常量,括号等构成数值表达式
变量不能参数算术运算构成数值表达式
逻辑运算符
运算符类型
- AND,OR,NOT,XOR
- SHL,SHR
逻辑运算符可与立即数,常量,括号等构成数值表达式
关系运算符
- EQ(=),NE(!=),LT(<),GT(>),LE(<=),GE(>=)
- 关系运算符可与立即数,常量,变量,括号等构成数值表达式。
- 关系运算只能有0(假)与0ffh(真)两个返回值
返回值与二进制补码形式表示,位数由目的操作数决定
属性运算符
属性运算符是面向变量或符号的
属性操作符的类型
- 返回值型:获取变量或标号的相关属性返回值
- 强制转换型:强制改变变量或标号的相关属性
变量与标号是在数据定义与程序中设置的标识符
变量:表示数据的地址
B1 DB 12H
标号:表示指令的地址
LOOP1: MOV AX,BX
段属性操作符 SEG
格式:SEG <标识符>
功能:返回标识符所在段的段地址
偏移量属性操作符offset
格式:offset <标识符>
功能:返回该标识符的段内偏移地址
类型属性操作符type
格式:TYPE <标识符>
功能:返回变量与标号的类型值
标识符类型 | TYPE值 |
字节(DB) | 1 |
字(DW) | 2 |
双字(DD) | 4 |
近标号 (NEAR) | -1 |
远标号 (FAR) | -2 |
长度属性操作符 LENGTHOF
格式:lengthof <变量名>
只能应用于变量
功能:返回变量所定义的数据个数
容器属性操作符 sizeof
格式:
sizeof <变量名>
只能应用于变量
功能:返回变量所站存储单元的数目
强制属性操作符ptr
格式:<类型名> PTR <标识符>
<类型名> PTR <任何一种存储单元寻址方式>
功能:将标识符的类型属性临时性的强制为指定的类型
该强制只在本条指令内有效
常用的类型:
- BYTE,WORD,DWORD,NEAR,FAR
表达式
表达式是由运算符,操作符,常量与变量等构成的式子
注意表达式中不能出现寄存器,因为在汇编期间程序尚未执行
地址计数器引用符号$
符号使用方法
- 符号使用方法
格式:$[+-Imm]
其值表示当前偏移量计数器的值
助记符
每个操作数在内存中存放所占的字节数
常量定义伪指令
赋值伪指令EQU
格式:<标识符> EQU <表达式>
功能:用于指定表示符来代替表达式符或符号
例如:DATA EQU 2
MOVE EQU MOV
注意:该语句仅为标识符来复制,并不会分配存储空间
汇编程序中会将源程序中的表示符替换成对应的数值
同意程序中,EQU语句对符号名只能定义一次
等号伪指令
格式:
<标识符> = <表达式>
功能定义标识符,来代替表达式的值
与EQU语句的区别
只能定义数值,在同意程序中可对一个符号名重复定义
定位伪指令ORG
格式:org <数值表达式>
功能:将其后的数据或指令从“数值表达式”所指定的位置开始存放