8086汇编语言(一) 汇编语言源程序

汇编语言源程序

1. 汇编语言源程序结构

  一个完整的汇编语言源程序通常由若干个逻辑段(Segment)组成, 包括数据段、附加段、堆栈段和代码段,它们分别映射到存储器中的物理段上。每个逻辑段以 SEGMENT语句开始, 以 ENDS语句结束,整个源程序用END语句结尾。
  代码段中存放源程序的所有指令码, 数据、变量等则放在数据段和附加段中。程序中可以定义堆栈段,也可以直接利用系统中的堆栈段。具体一个源程序中要定义多少个段应根据实际需要来定。但一般来说,一个源程序中可以有多个代码段, 也可以有多个数据段、附加段及堆栈段, 但一个源程序模块只可以有一个代码段、一个数据段、个附加段和一个堆栈段。将源程序以分段形式组织是为了在程序汇编后,能将指令码和数据分别装入存储器的相应物理段中

2. 源程序结构框架

段名1 SEGMENT
...
段名1 ENDS
段名2 SEGMENT
...
段名2 ENDS
...
段名n SEGMENT
...
段名n ENDS

3. 语句类型和格式

(1). 指令性语句的一般格式
[标号] : [前缀] 操作码 [操作数1, 操作数2] [;注释]

“[ ]” 括起来的内容可以省略, 操作数可以有2个、1个和没有。

(2). 指示性语句的一般格式
[名字] [伪操作] 操作数1, 操作数2, ... [;注释]

“[ ]” 括起来的内容可以省略。

4. 数据项

(1). 常量
常量类型 表示 举例
十进制常量 以字母 “D” 结尾或不加结尾 52D, 52
二进制常量 以字母 “B” 结尾 1011B
十六进制常量 以字母 “H” 结尾 5CH
字符常量 用单引号括起的一个或多个ASCII字符码 ’DD’
(2). 标号 LABLE

  指令的标号由程序员确定, 不能与指令助记符或伪指令名, 也不能由数字打头, 字符个数不能超过31个。
  标号有3种属性: 段值、偏移量和类型。

(3). 变量

  变量是存储器中的某个数据区的名字, 变量的类型有:

类型 长度 表示
字节 8位 BYTE
16位 WORD
双字 32位 DWORD
四字 64位 QWORD
十节字 80位 TBYTE
(4). 表达式

  表达式不是指令, 本身不能执行, 在程序执行时, 表达式本身是一个有确定值的操作数。

运算符 符号
+
-
*****
/
取余 MOD
AND
OR
NOT
异或 XOR
等于 EQ
不等于 NE
小于 LT
大于 GT
小于等于 LE
大于等于 GE
(5). 运算符
名字 运算符 作用 例子
取偏移地址运算符 OFFSET 取标号或变量的偏移地址 MOV SI, OFFSET DATA1
取段地址运算符 SEG 取标号或变量的段地址 MOV AX, SEG DATA1
属性运算符 PTR 指定其后面存储器操作数的类型 MOV AL, BYTE PTR [SI]
方括号运算符 [ ] 表示存储器操作数, 括号中的内容表示操作数的偏移地址
段重设运算符 : 用来指定一个存储器操作数的段属性而不管原来隐含的段 MOV AX, ES:[SI]

你可能感兴趣的:(嵌入式,嵌入式硬件)