汇编语言——宏汇编
MWhite关注
2017.12.20 20:49:12字数 614阅读 393
- 标识符字段
- 操作符字段
- 指令助记符
- 伪指令助记符
- 操作数字段
- 注释字段
1. 运算符
算术运算符
数值表达式中可用所有运算
地址表达式中只可用+ -
逻辑运算符
and or
关系运算符
关系满足则返回全1,否则返回全0
源文件中写
MOV AX, 0A2H NE02H
编译后为
MOV AX, 0FFFFH
分析运算符
- SEG 取变量或标号所在段的段寄存器值作为段基址,结果为16位值
- OFFSET 取变量或标号的段内偏移量,结果为16位值
- TYPE 取变量或标号的类型
- LENGTH 取DUP重复次数
- SIZE 取分配给变量的字节个数
合成运算符
合成运算符修改已定义的单个操作数,重 新生成段基址、偏移量相同而类型不同的 新操作数。
- PTR 新操作数的类型为表达式中指定的“新类型”,
- THIS 新操作数的段基址和偏移量为汇编过程中遇到THIS运算符时的当前值
- LABEL
Name LABEL Type
变量类型( BYTE /WORD /DWORD) 标号类型(FAR /NEAR)
2. 常用伪指令
数据定义伪指令
- EQU
- =
- $ 地址计数器(符号“$”表 示当前偏移地址值) 比如$+4
- DB—— 变量为字节数据类型(8位)
- DW—— 变量为字数据类型(16位)
- DD —— 变量为双字数据类型(32位)
- DQ —— 变量为4字数据类型(64位)
- DT —— 变量为10字节数据类型(80位)
程序结构伪指令
段名 SEGMENT [ 定位选择 ] [ 链接类型 ] [‘类别标识符’]
……
段名 ENDS
段说明伪指令ASSUME
ASSUME DS:DATA,SS:STACK,CS:CODE
过程定义伪指令
段内定位语句ORG
ORG语句之后段内所有的数据或代码均以 表达式或常量的值为起始偏移量连续存放, 除非遇到另一个ORG语句。
宏汇编语言基本语法
1.方式选择伪指令
.8086
通常, 方式伪指令放在程序的头部, 作为源程序的 第1条语句.
2.段定义语句
Segment_name segment [定位类型][链接参数][‘分类名’][段长度]
….
Segment_name ends
ASSUME 段寄存器:段名,ꞏꞏꞏ,段寄存器:段名
- 通常ASSUME作为代码段的第一条指令.
- ASSUME语句仅约定了对某个逻辑段进行寻址操 作时使用哪个段寄存器,而段寄存器的初值必在程序中用 指令设置.
SS可赋值,也可不 赋值.