文档介绍:第4章汇编语言程序格式
第四章汇编语言
1
、汇编语言的功能
汇编语言是面向机器结构的低级程序设计语言,是把机器语言符号化。
用汇编语言编的程序称为汇编语言源程序,源程序必须经过“汇编”,生成目标代码,经过“连接”后生成执行文件,方可直接运行。
汇编语言源程序结构:
例1:用汇编语言编写:求解Y=2(A+B)-C的程序
汇编语言源程序
目标码程序
可执行的目标码程序
编辑程序
汇编程序
连接程序
汇编语言的建立及汇编过程
第四章汇编语言
2
DATA SEGMENT
A DB 25
B DB 43
C DB 76
Y DB ?
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
COSEG SEGMENT
ASSUME CS:COSEG,
DS:DATA,SS:STACK1
START:MOV AX,DATA
MOV DS,AX
MOV AL,A
ADD AL,B
SAL AL,1
SUB AL,C
MOV Y,AL
MOV AH,4CH
INT 21H
COSEG ENDS
END START
19
2B
4C
00
……
B8
XX
XX
8E
D8
……
B4
4C
CD
21
数据段
堆栈段
代码段
第四章汇编语言
3
、伪操作
汇编语言源程序由汇编语言语句组成:
指令语句:也称可执行语句。每条语句都有对应的目标代码,代表计算机具有的一个基本能力。
伪指令语句:用于指示汇编程序如何汇编源程序的语句。部分语句产生目标代码,部分语句不产生目标代码。
宏指令语句:为提高编程效率而使用的扩展指令。
指令语句与伪指令语句格式:
[标识符] 操作符操作数[;注释]
标识符:任选段。指令语句为标号,以:结束。
字符个数为1~31个;
第一个字符必须是字母、“?”、“@”、或“—”;
不得使用系统保留字。
第四章汇编语言
4
指令语句与伪指令语句格式:(续)
[名字] 操作符操作数[;注释]
操作符:即指令的助记符,指明语句的功能。
操作数:指明指令的操作对象。
注释:任选段。以“;”开始
第四章汇编语言
5
、处理器选择伪操作
功能:指示汇编程序选择哪一种指令系统
主要有:
.8086 选择8086指令系统
.286 选择80286指令系统
.586 选择Pentium指令系统
.586P 选择保护方式下的Pentium指令系统
第四章汇编语言
6
、段定义伪操作
1、完整的段定义伪指令
语句格式:
段名 SEGMENT [定位类型][组合类型][‘类别名’]
本段语句序列(指令或数据)
段名 ENDS
功能:在内存中设置一个逻辑段。
定位类型:表示某段装入内存时,对段起始边界的要求。有四种选择:
PAGE(页):段从一个“页”的边界开始,256个字节为一页,段起始地址低8位为0。
PARA(节):隐含值。段从一个“节”的边界开始,16个字节为一节,段起始地址低4位为0 。
WORD(字):段从一个偶字节地址开始,段起始地址低1位为0 。
BYTE(字节):段可从任一个地址开始。
第四章汇编语言
7
组合类型:说明多个程序块连接时,本模块与其它模块的同名段如何组合,有6种选择:
None/PRIVATE:隐含值,表示本段与其他段无连接关系。
PUBLIC:表示把相同段名、定位类型,组合类型也是PUBLIC的段连接在一起,共同占用连续的存储单元,形成一个新段,重新调整偏移量。
COMMON:MON的段是覆盖的,共享最大的段存储区。
STACK:产生一个堆栈段,并把相同段名的段连接成一个连续段,系统自动设置SS为段的起始地址并初始化SP值。
AT 表达式:表示本段的起始单元可定位在表达式所示“节”的边界上。
MEMORY:表示本段的存储地址在所有段的最高处。
类别名:在链接处理时,LINK把类别相同的段存放在连续的存储区内。
第四章汇编语言
8
2、段寻址伪指令
语句格式:
ASSUME 段寄存器名:段名,段寄存器名:段名,…
功能:指定当前段,及当前段的段寄存器名。
取消 ASSUME 设置: ASSUME [段寄存器名] :NOTHING。
例9: DS_DATA SEGMENT
VAR1 DB 12H
DS_DATA ENDS
ES_DATA SEGMENT
VAR2 DB 34H
ES_DATA ENDS
CODE SEGMENT
VAR3 DB 56H
ASSUME CS:CODE,DS:DS_