汇编语言的基本概念

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理及应用

; ――――――――――――――――――――――――――――
段名1
SEGMENT
语句1 语句2 „„
; 一个段的开始
段名1 段名2 段名2
ENDS SEGMENT
; 一个段的结束 ; 另一个段的开始 ; 另一个段的结束
; ――――――――――――――――――――――――――――-
„„
2. 汇编
生成目标文件(.OBJ) C:>MASM EXAMP↵
3. 连接
生成DOS格式的可执行文件(.EXE 或.COM文件) C:>LINK EXAMP↵
微机原理及应用
汇编语言程序格式
汇编语言中的语句
语句是由各种符号(标记)及分隔符按照一定 的规则组织起来的一个有序序列。 标识符 操作符 操作数 注释
偏移属性:指变量所在地址与所在段的段首地址 之间的地址偏移字节数(段内偏移量)。
类型属性:指变量中每个元素所包含的字节数, 类型包括字节变量(BYTE)、字变量(WORD)及 双字变量(DWORD)等
微机原理及应用
(3)标号——指令性语句(可执行语句)所 在地址的符号表示。 标号的三个属性:
SEG 功能:返回符号地址的段逻辑值 OFFSET 功能:返回符号地址的偏移逻辑值
微机原理及应用

TYPE 的应用特点
• 返回变量数据类型所含的字节数量 MOV BL,TYPE VAR1 ;(BL)= 1 MOV BL,TYPE VAR2 ;(BL)= 2 MOV BL,TYPE VAR3 ;(BL)= 4
格式: 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
微机原理及应用
伪指令和宏指令

段定义伪指令 过程定义伪指令


数据类型定义及存储器地址分配伪指令
符号定义伪指令
微机原理及应用
1、段定义伪指令
1)、段定义语句 SEGMENT / ENDS
用于对 DS、ES、SS、CS 段的定义
格式: 段名 SEGMENT [ 定位选择 ] [ 组合类型 ] [‘类 别’] …… 段名 ENDS 注意: ENDS必须与SEGMENT成对出现,且段名必须一致。
存储器中的 32 位值为 CS:IP 目的地址 JMP DWORD PTR [BX] JMP DWORD PTR [2000H]
微机原理及应用
PTR 的应用特点(在变量定义中的应用)
• 定义数据段
DATA SEGMENT VAR1 DB 20H,30H DATA ENDS
• 代码段中使用
MOV AX,VAR1 ;错误,操作数类型不合 MOV AX,WORD PTR VAR1;正确,返回字数据

分析运算符(数值返回运算符)的功能
• SEG • OFFSET • TYPE • LENGTH • SIZE 符号地址段值属性返回符 符号地址偏移量值属性返回符 符号地址中数据类型属性返回符 DUP重复次数返回符 变量总字节数返回符
微机原理及应用
分析运算符

对存储器地址进行运算

将存储器地址的三个属性,即段、偏移量、类型分 离出来。
指示性语句:即说明性语句(伪指令),不对应机器码,只为汇
编提供所需信息,由四部分组成:
[ 名字 ]
例: SUM
伪指令
DB 64H
[ 操作数 ]
[;注释 ]
;变量SUM的值是64H
宏指令:由伪指令定义的指令序列,包括宏定义、宏调用和
宏扩展三部分
微机原理及应用
MASM汇编语句中的操作数
汇编语言中使用的操作数,可以是常数、 寄存器、存储器、变量、标号或表达式。
微机原理及应用
第五章 汇编语言的基本概念
概 述
汇编语言程序格式
伪指令
PC机常用系统功能介绍
微机原理及应用
汇编语言程序设计特点
汇编语言是一种用符号表示的、面向CPU 指令系统的程序设计语言。汇编语言具有 以下两个基本特点:
可以更充分利用机器硬件的全部功能,发挥机 器的长处; 程序目标代码占用内存少,执行速度快,效率 高,具有实时性;
例:数据段中定义了字变量VAR,
则 MOV AL,VAR ;错误,类型不匹配
改为:
MOV AX,VAR
或:MOV AL,BYTE PTR VAR
微机原理及应用

PTR 的应用特点(在 JMP 指令中的应用)
• 段内间接近转移 —— CS不变、IP变 存储器中的 16 位值为段内 IP 目的地址 JMP WORD PTR [BX] JMP WORD PTR [2000H] • 段间间接远转移 —— CS变、IP变
(1)常数——固定值,无属性;
数字常量
二进制数:以“B”结尾,如00001101B; 八进制数:以“O”结尾,如725O; 十六进制数:以“H”结尾,如0A12H;
十进制数:以“D”结尾或无任何字母作结尾,如 10D、10。
微机原理及应用
字符串常量
字符串常量表示为包含在两个单引号之间的一 连串ASCII字符。当单引号本身作为一个串元 素时,需连写两个单引号。每个串元素的值定 义为该元素所对应的1字节ASCII码值。
SEG
取变量或标号所在段的段寄存器值 作为段基址,结果为16位值
格式: SEG 变量名或标号名

OFFSET
取变量或标号的段内偏移量,结果 为16位值
格式: OFFSET 变量名或标号名
微机原理及应用
TYPE 取变量或标号的类型所占字节数 格式: TYPE 变量名或标号名
LENGTH 取变量所含的数据元素个数,由 DUP(重复操作符)定义数据个数时才有效。
微机原理及应用
定位类型 —— 段起始边界的确定
PAGE、PARA、WORD、BYTE
PAGE——段起始地址最低8位为0 PARA——段起始地址最低4位为0 WORD——段起始地址最低位为0
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
微机原理及应用
从汇编源程序获得可执行程序的过程
为了能顺利完成汇编,用户必须为汇编程序提供 一些额外的、与硬件有关的信息,如:程序使用 的变量应分别存放在内存的哪个单元、堆栈应从 内存的什么地址开始等等。
微机原理及应用
汇编语言源程序的一般结构
分段式结构:
数据段
堆栈段 代码段 附加段
有三种基本语句:
• 指令性语句 —— 可译为指令机器码 • 指示性语句 (伪指令)—— 仅作源程序管理用
• 宏指令语句 —— 汇编时进行宏代替
微机原理及应用
指令性语句:即执行性语句(指令),与机器码一一对应,表示
某种确定操作,包括四部分:
[ 标号:] 指令操作码 AX,CX [ 操作数 ] ; 加法 [;注释 ] 例: AGAN:ADD
ENDS ; ―――――――――――――――――――――――――――――
„„
END
; 其它段
; 源代码结束
Baidu Nhomakorabea
; ―――――――――――――――――――――――――――――
微机原理及应用
源程序的基本框架
微机原理及应用
微机原理及应用
汇编语言的上机过程
1. 源程序的建立
可用多种编辑程序建立源程序,但要求源程序 用ASCII码存储,程序扩展名为.ASM。 如源程序文件EXAMP.ASM
运算式在汇编时由汇编程序计算出结果,再作 为指令中的一个操作数参与指令的执行。
MOV AL , 2+3 汇编后变为 MOV AL , 5
微机原理及应用
保留字
汇编源程序中标识符不能使用的字符串
所有指令助记符:如MOV、ADD等。
寄存器名:包括16位和8位寄存器。如AL、DH、 AX、CS、TF等。
算术运算符的功能


+
-
加法运算符
减法运算符


*
/
乘法运算符
除法运算符 求余运算符 左移运算符 右移运算符
MOD SHL SHR
算术运算符 算术运算符的使用特点
数值表达式中可使用所有算术运算符 地址表达式仅使用‘+、-’算术运算符
微机原理及应用
算术运算符不影响标志位
微机原理及应用
LENGTH 和 • 定义数据段
SIZE 的应用特点
变量定义数据字节数
DATA SEGMENT VAR1 DB 100 DUP(?) VAR2 DW 100 DUP(?) DATA ENDS
变量定义数据个数
;(BX)= 100 ;(BX)= 100 ;(BX)= 100 ;(BX)= 200
例:完成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 相等关系 不相等关系 小于关系 大于关系 小于或等于关系 大于或等于关系
段属性:指标号所在段的段基值,
偏移属性:标号所在地址与所在段的段首址之 间的偏移地址。
类型属性:指在转移指令中标号可转移的距离, 也称距离属性。有NEAR和FAR两种。
注意:标号通常作为转移指令或CALL指令的目标地址。
微机原理及应用
(4)表达式——由常数、寄存器、变量、标 号与运算符组合而成的运算式。
′Hello, this is a sample program!′
还可用符号定义伪指令定义成标识符,即符号 常量
H EQU ′Hello, this is a sample program!′
微机原理及应用
(2)变量——通常指存放在存储单元中的值。 变量的三个属性:
段属性:指变量所在段的段基值,此值必须在一 个段寄存器中。
宏汇编程序规定的所有伪指令助记符:如 ASSUME、DB、DW、DD等。 宏汇编程序规定的其他助记符:BYTE、DUP、 EQ、SEG等。
微机原理及应用
MASM中运算符
6类运算符
算术运算符、逻辑运算符、关系运算符 分析运算符、属性修改运算符、其他运算符
微机原理及应用
算术运算符
微机原理及应用
汇编语言与高级语言
由于汇编的这种特点,汇编语言常用于编写计算 机系统程序、实时通信程序和实时控制程序。但 汇编语言程序依赖于机器硬件,其通用性和移植 性都较差。 相对于汇编语言,高级语言的编程方便快捷,通 用性和移植性都较好,在一些涉及大量数据处理、 人机界面等设计任务的应用程序中,采用高级语 言编程更为合适。
微机原理及应用
关系运算符 关系运算符的使用特点
在两个性质相同的操作数之间进行大小关系比较
若关系正确为真(T), 全 1 操作数
若关系错误为假(F), 全 0 操作数
例: MOV AX, 0A2H NE 02H
; 汇编后得到 “ MOV AX, 0FFFFH ”
微机原理及应用
分析运算符
• 指令功能
MOV MOV MOV MOV BX,LENGTH VAR1 BX,LENGTH VAR2 BX,SIZE VAR1 BX,SIZE VAR2
微机原理及应用
属性修改运算符

属性修改运算符的功能
• PTR 操作数重新定义类型运算符
微机原理及应用
属性修改运算符
PTR
临时修改类型属性或强制说明操作数的类型。 可用类型:BYTE、WORD、DWORD、NEAR、FAR等
相关文档
最新文档