汇编语言的基本概念
微机原理及应用
第五章 汇编语言的基本概念
概 述
汇编语言程序格式
伪指令
PC机常用系统功能介绍
微机原理及应用
汇编语言程序设计特点
汇编语言是一种用符号表示的、面向CPU 指令系统的程序设计语言。汇编语言具有 以下两个基本特点:
可以更充分利用机器硬件的全部功能,发挥机 器的长处; 程序目标代码占用内存少,执行速度快,效率 高,具有实时性;
微机原理及应用
定位类型 —— 段起始边界的确定
PAGE、PARA、WORD、BYTE
PAGE——段起始地址最低8位为0 PARA——段起始地址最低4位为0 WORD——段起始地址最低位为0
例:完成80H+90H
解:MOV AL,80H+90H ;使用数值表达式 ;(AL)=10H、CF=不变 ;使用加法指令 ;(AL) = 10H、CF = 1
MOV AL,80H ADD AL,90H
微机原理及应用
关系运算符
关系运算符的功能
• EQ • NE • LT • GT • LE • GE 相等关系 不相等关系 小于关系 大于关系 小于或等于关系 大于或等于关系
微机原理及应用
汇编语言与高级语言
由于汇编的这种特点,汇编语言常用于编写计算 机系统程序、实时通信程序和实时控制程序。但 汇编语言程序依赖于机器硬件,其通用性和移植 性都较差。 相对于汇编语言,高级语言的编程方便快捷,通 用性和移植性都较好,在一些涉及大量数据处理、 人机界面等设计任务的应用程序中,采用高级语 言编程更为合适。
偏移属性:指变量所在地址与所在段的段首地址 之间的地址偏移字节数(段内偏移量)。
类型属性:指变量中每个元素所包含的字节数, 类型包括字节变量(BYTE)、字变量(WORD)及 双字变量(DWORD)等
微机原理及应用
(3)标号——指令性语句(可执行语句)所 在地址的符号表示。 标号的三个属性:
微机原理及应用
关系运算符 关系运算符的使用特点
在两个性质相同的操作数之间进行大小关系比较
若关系正确为真(T), 全 1 操作数
若关系错误为假(F), 全 0 操作数
例: MOV AX, 0A2H NE 02H
; 汇编后得到 “ MOV AX, 0FFFFH ”
微机原 定义数据段
SIZE 的应用特点
变量定义数据字节数
DATA SEGMENT VAR1 DB 100 DUP(?) VAR2 DW 100 DUP(?) DATA ENDS
变量定义数据个数
;(BX)= 100 ;(BX)= 100 ;(BX)= 100 ;(BX)= 200
有三种基本语句:
• 指令性语句 —— 可译为指令机器码 • 指示性语句 (伪指令)—— 仅作源程序管理用
• 宏指令语句 —— 汇编时进行宏代替
微机原理及应用
指令性语句:即执行性语句(指令),与机器码一一对应,表示
某种确定操作,包括四部分:
[ 标号:] 指令操作码 AX,CX [ 操作数 ] ; 加法 [;注释 ] 例: AGAN:ADD
段属性:指标号所在段的段基值,
偏移属性:标号所在地址与所在段的段首址之 间的偏移地址。
类型属性:指在转移指令中标号可转移的距离, 也称距离属性。有NEAR和FAR两种。
注意:标号通常作为转移指令或CALL指令的目标地址。
微机原理及应用
(4)表达式——由常数、寄存器、变量、标 号与运算符组合而成的运算式。
分析运算符(数值返回运算符)的功能
• SEG • OFFSET • TYPE • LENGTH • SIZE 符号地址段值属性返回符 符号地址偏移量值属性返回符 符号地址中数据类型属性返回符 DUP重复次数返回符 变量总字节数返回符
微机原理及应用
分析运算符
对存储器地址进行运算
将存储器地址的三个属性,即段、偏移量、类型分 离出来。
格式: LENGTH 变量 SIZE 取分配给变量的字节个数,由 DUP定义数据个数时才有效。 格式: SIZE 变量
微机原理及应用
例
符号地址与逻辑址址
段地址 = 0200H
0000H 定义数据段 DATA 如下: 从实际地址 02000H 开始存数据 0002H 即段地址为 0200H 段内偏移地址从 0000H 开始 DATA SEGMENT VAR1 DB 20,30 VAR2 DW 2000H,3000H 0006H VAR3 DD 22003300H DATA ENDS
指示性语句:即说明性语句(伪指令),不对应机器码,只为汇
编提供所需信息,由四部分组成:
[ 名字 ]
例: SUM
伪指令
DB 64H
[ 操作数 ]
[;注释 ]
;变量SUM的值是64H
宏指令:由伪指令定义的指令序列,包括宏定义、宏调用和
宏扩展三部分
微机原理及应用
MASM汇编语句中的操作数
汇编语言中使用的操作数,可以是常数、 寄存器、存储器、变量、标号或表达式。
微机原理及应用
伪指令和宏指令
段定义伪指令 过程定义伪指令
数据类型定义及存储器地址分配伪指令
符号定义伪指令
微机原理及应用
1、段定义伪指令
1)、段定义语句 SEGMENT / ENDS
用于对 DS、ES、SS、CS 段的定义
格式: 段名 SEGMENT [ 定位选择 ] [ 组合类型 ] [‘类 别’] …… 段名 ENDS 注意: ENDS必须与SEGMENT成对出现,且段名必须一致。
SEG 功能:返回符号地址的段逻辑值 OFFSET 功能:返回符号地址的偏移逻辑值
微机原理及应用
TYPE 的应用特点
• 返回变量数据类型所含的字节数量 MOV BL,TYPE VAR1 ;(BL)= 1 MOV BL,TYPE VAR2 ;(BL)= 2 MOV BL,TYPE VAR3 ;(BL)= 4
微机原理及应用
段
; ――――――――――――――――――――――――――――
段名1
SEGMENT
语句1 语句2 „„
; 一个段的开始
段名1 段名2 段名2
ENDS SEGMENT
; 一个段的结束 ; 另一个段的开始 ; 另一个段的结束
; ――――――――――――――――――――――――――――-
„„
运算式在汇编时由汇编程序计算出结果,再作 为指令中的一个操作数参与指令的执行。
MOV AL , 2+3 汇编后变为 MOV AL , 5
微机原理及应用
保留字
汇编源程序中标识符不能使用的字符串
所有指令助记符:如MOV、ADD等。
寄存器名:包括16位和8位寄存器。如AL、DH、 AX、CS、TF等。
宏汇编程序规定的所有伪指令助记符:如 ASSUME、DB、DW、DD等。 宏汇编程序规定的其他助记符:BYTE、DUP、 EQ、SEG等。
微机原理及应用
MASM中运算符
6类运算符
算术运算符、逻辑运算符、关系运算符 分析运算符、属性修改运算符、其他运算符
微机原理及应用
算术运算符
2. 汇编
生成目标文件(.OBJ) C:>MASM EXAMP↵
3. 连接
生成DOS格式的可执行文件(.EXE 或.COM文件) C:>LINK EXAMP↵
微机原理及应用
汇编语言程序格式
汇编语言中的语句
语句是由各种符号(标记)及分隔符按照一定 的规则组织起来的一个有序序列。 标识符 操作符 操作数 注释
• 指令功能
MOV MOV MOV MOV BX,LENGTH VAR1 BX,LENGTH VAR2 BX,SIZE VAR1 BX,SIZE VAR2
微机原理及应用
属性修改运算符
属性修改运算符的功能
• PTR 操作数重新定义类型运算符
微机原理及应用
属性修改运算符
PTR
临时修改类型属性或强制说明操作数的类型。 可用类型:BYTE、WORD、DWORD、NEAR、FAR等
算术运算符的功能
+
-
加法运算符
减法运算符
*
/
乘法运算符
除法运算符 求余运算符 左移运算符 右移运算符
MOD SHL SHR
算术运算符 算术运算符的使用特点
数值表达式中可使用所有算术运算符 地址表达式仅使用‘+、-’算术运算符
微机原理及应用
算术运算符不影响标志位
20 VAR1 30 VAR2 00H 20H 00H 30H VAR3 00H 33H 00H
微机原理及应用
SEG • MOV • MOV • MOV • MOV • MOV • MOV
和 OFFSET 应用
BX,SEG VAR1 BX,SEG VAR2 BX,SEG VAR3 BX,OFFSET VAR1 BX,OFFSET VAR2 BX,OFFSET VAR3 ;(BX)= ;(BX)= ;(BX)= ;(BX)= ;(BX)= ;(BX)= 0200H 0200H 0200H 0000H 0002H 0006H
ENDS ; ―――――――――――――――――――――――――――――
„„
END
; 其它段
; 源代码结束
; ―――――――――――――――――――――――――――――
微机原理及应用
源程序的基本框架
微机原理及应用
微机原理及应用