汇编语言(五)-汇编语言程序格式
汇编语言程序格式
1. 程序运行步骤描述
全部的过程是在DOS下完成
2. 伪指令的使用
机器指令:程序运行期间由计算机来执行
伪指令:汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、存储器分配、指示程序开始结束等功能
- 指令格式
标号:操作码 操作数,操作数 ;注释 (最多双操作数) - 伪指令格式
标号 伪操作码 操作数,…,操作数 ;注释 (个数未限制)
-
数据定义及存储器分配伪操作
[变量名] 伪操作 操作数[,操作数,…][;注释]
DB 定义一个字节( Byte )空间
DW 定义一个字( Word )空间
DD 定义一个双字( Double Word )空间
DATA_BYTE DB 10,4,10H,?
DATA_WORD DW 100,100H,-5,?DATA1 DB 330 ✖
注意:
数据按定义次序依次存放
存放满足高高低低原则
表数范围符合定义空间大小
ARRAY DB ‘HELLO’
DB ‘A’,‘B’,‘C’,‘D’(= DB ‘ABCD’)
DW ‘AB’,‘CD’DATA2 DW ‘ABCD’ ✖
- 重复定义
DA1 DB 10 DUP( 12H,34,‘a’ )
DA2 DW 2 DUP( 12,8 DUP(?),‘b’ )
-
段定义伪操作
段名 segment [定位类型][组合类型][使用类型][‘类别’]
|
段名 ends
段认定伪操作
注意:ASSUEM仅是段认定,不送数值
-
程序开始和结束伪操作
NAME module_name ;定义模块名
TITLE text ;打印标题
(上述二者不是必须的,二者皆无,用源文件名作模块名 )
END [ label ] ;结束汇编
符号的取名原则
(1) 由小写字母a-z、大写字母A-Z、阿拉伯数字0-9、特殊符号@和_组成
(2) 第一个符号必须是字母或特殊符号
(3) 有效长度31个字符
3. 表达式赋值伪操作
表达式名 EQU 表达式
在程序中用表达式(或数值)替代出现的表达式名称
注意:
表达式说明的先后次序(先说明再使用)
不允许同一个表达式名称多次说明
赋值伪操作 “ = ”
赋值操作和 EQU 相同,且允许重复定义
表达式操作符
- 算术操作符
+、- 、* 、/、MOD
注意:所有运算的结果均为整数
- 逻辑和移位操作符
AND、OR、XOR、NOT、SHL、SHR
具体含义和操作指令相同
- 关系操作符
EQ | NE | LT | LE | GT | GE |
---|---|---|---|---|---|
等于 | 不等 | 小于 | 小于等于 | 大于 | 大于等于 |
关系成立为真 FFFFH 或 FFH
关系不成立为假 0000H 或 00H
两个操作数必须都是数字,或同一段内的两个存储器地址
- 数值回送操作符
DAT DW 1234H
SEG 返回符号的段基址
OFFSET 返回符号的偏移地址
TYPE 返回符号的类型
DB | DW | DD | NEAR | FAR | 常数 |
---|---|---|---|---|---|
1 | 2 | 4 | -1 | -2 | 0 |
VAR DB 100 DUP( 12H )
DAT DW 12H,34H
LENGTH 返回连续定义的个数
SIZE 返回占用的总空间
SIZE = LENGTH * TYPE
注意:非连续定义LENGTH返回值为1
- 属性操作符
type PTR 表达式
对已分配的存储单元赋予另一种属性
属性包括:BYTE WORD DWORD NEAR FAR
DAT DW 1234H,5678H
THIS type
对下一个存储单元赋予另一种类型
HIGH 标号名 MOV AH, HIGH DAT
LOW 标号名 MOV AL, LOW DAT
注意:标号对应的数据必须是16位数据
操作符优先级
ORG 地址数值
使后续操作从指定地址开始
ORG 10
VAR1 DW 1234H
ORG 20
VAR2 DW 5678H
EVEN
使后续操作从偶数地址开始
A DB ‘morning’
EVEN
B DW 2 DUP(?)
$
地址计数器的当前值
ORG $+8
VAR1 DW 1234H
VAR2 DW 5678H
A DW 1, 2 , $+4 , 3 , 4 , $+4