汇编语言PPT教学课件

合集下载

《IBM PC 80X86汇编语言程序设计》PPT电子课件教案-第六章 子程序设计

《IBM PC 80X86汇编语言程序设计》PPT电子课件教案-第六章 子程序设计

《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
1、子程序的概念和特点
子程序:把在程序中多次出现,具有独立功能 的程序段写成程序模块,该模块可被多次调用, 称之为子程序。
特点:①可重复使用(调用) ②具有通用性(可通过入口参数实现) ③可浮动性(存放位置灵活) ④可递归性和可重入性
第6章
第六章 子程序设计
一、子程序的定义 二、子程序的结构形式
三、子程序的设计和调用 四、子程序的参数传递方法 五、子程序的嵌套和递归调用 六、子程序的设计举例 七、多模块程序设计 八、汇编语言和高级语言的混合编程
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
一、子程序的定义
1、子程序的概念和特点 2、子程序的定义 3、子程序的调用和返回
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
2、子程序的定义
子程序的定义是由过程定义伪指令PROC和ENDP 来完成的。其格式如下:
过程名 PROC [NEAR/FAR]

过程名 ENDP
其中PROC表示过程定义开始,ENDP表示过程定 义结束。过程名是过程入口地址的符号表示。
一般过程名同标号一样,具有三种属性,即段 属性、偏移地址属性以及类型属性。
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
3、子程序的调用和返回
❖ 调用
①段内直接调用
格式:CALL 子程序名
功能:将子程序返回地址(断点)入栈
SP←SP-2
(SP)←IP,
并转到子程序入口地址去执行子程序。
❖ 返回指令

第3章汇编语言PPT课件

第3章汇编语言PPT课件
▪ n为比例因子,取1、2、4或8。
▪ 若 包 含 base 且 base 为 EBP 或 ESP,则隐含段地址在SS;否则, 隐含段地址在DS。
▪ 若在16位CPU上编程,则不能 使用这些寻址方式。
02.12.2020
80x86汇编语言程序设计
3.3 指令系统
▪ 介绍设计完整程序所需的常用指令,对于其余指令,一部分在后续章节中讲授,一部分自 学。 ▪ 介绍常用指令的格式、功能以及对CF、OF、SF、ZF的影响。
语法格式:
LEA reg16, mem
; reg16 = mem的有效地址
对标志位的影响:无。
【例】设BX = 5678H,EAX = 1,EDX = 2。
lea
si, 2[bx]
; 执行后,SI = 567AH
lea
si, 2[eax][edx]
; 执行后,SI = 5
4. LDS、LES
语法格式:
80x86系统的堆栈具有如下特点: ▪ 堆栈是在内存的堆栈段中,具有“先进后出”的特点。 ▪ 堆栈只有一个出入口,即当前栈顶。当堆栈为空时,栈顶和栈底指向同一内存单
第3章 80x86指令系统
讲授要点
▪ 3种操作数(立即数、寄存器和内存操作数)的形式。 ▪ 常用指令的格式、功能以及对CF、OF、SF、ZF的影响。 ▪ 使用指令时容易犯的错误。
02.12.2020
80x86汇编语言程序设计
3.1 指令格式
1.指令的书写格式
标号: 指令助记符
操作数
; 注释
2.操作数的3种形式:
02.12.2020
80x86汇编语言程序设计
3.3.1 数据传送指令
2. XCHG ( Exchange ):交换

汇编语言程序格式 PPT课件

汇编语言程序格式 PPT课件
⑤ MEMORY:与PUBLIC同义。
汇编语言程序格式
(4) ‘类别名’
类别名必须用单引号括起来。连接时对不同模块、 不同名的程序段只要‘类别名’相同,则放在一个连续 的物理空间,但每段之间是独立的,不进行组合。
汇编语言程序格式
2.指定段寄存器伪指令(ASSUME)
作用:明确段和段寄存器之间的关系,即告诉汇编程序, 在运行期间通过哪个段才能找到所要的指令和数据
③ COMMON:本段与其他模块中说明为COMMON方式的同名 段从同一地址开始重叠连接,段长是同名段中最长的段的 长度。
汇编语言程序格式
④ STACK:表示该段是堆栈段的一部分。把所有相同 ‘类 别名’的具有STACK组合类型的段连接成一个连续段,该段 长度为各原有段的总和。将连续段首地址送SS,段内最大 偏移地址送SP(SP指向栈顶)。当定义了STACK属性后,在 主程序中可省略对SS和SP的初始化。
MOV AH,9
INT 21H
;利用DOS功能调用显示信息
.EXIT 0
;程序结束点,返回DOS
END
;汇编结束
汇编语言程序格式
简化段定义的源程序格式
.MODEL SMALL
;定义程序的存储模式
.STACK
;定义堆栈段
.DATA
;定义数据段
STRING DB ’Hello,Everybody !’,0DH,0AH,’$’
汇编语言程序格式
2.数据段定义伪指令(.DATA) ✓ 格式:.DATA [名字] ✓ 定义一个数据段,如果有多个数据段,则用名字来 区别:只有一个数据段时,隐含段名为@DATA。
3.堆栈段定义伪指令(.STACK) ✓ 格式:.STACK [长度] ✓ 定义一个堆栈段,并形成SS及SP的初值,SP的默认 值为1024,隐含段名为@STACK。可选的长度参数指定堆 栈段所占存储区的字节数,默认大小是1KB。

51单片机汇编语言指令教程(校对版)ppt课件

51单片机汇编语言指令教程(校对版)ppt课件

06
05
04
03
02
01
00
返回前一次
最新课件
19
2.2.3立即寻址
指令本身直接含有所需要的8位或16位的操作数。
将此数称为“立即数”(使用#标明)。如:
MOV A,#30H
;将(8位)立即数送累加器A
MOV DPTR,#2000H ;16位立即数送DPTR积存器
【注意】:MOV A,#30H MOV A,30H 两者的区别。 立即数寻址的指令长度为2或3个字节。
三字节指令在存储器中存放的方式示意图
最新课件
9
指令的字节数与指令的运行时间
指令的字节多是否意味着指令周期就长?
指令
字节数 周期数
MOV A,R0
1
1
MOV A,#0FFH 2
1
MOV 20H,#30H 3
2
MUL AB
1
4
INC DPTR
1
1
指令说明 R0内容送累加器A
立即数FFH送A 立即数30H送内存20h单元
MOV A,00H ;将RAM中00H单元数据送累加器A
MOV A,R0 ;将工作寄存器R0的内容送累加器A
这里使用了不同的寻址方式,其指令的结构也不相同。
前者是:11100101(0E5H)、00000000(00H) 双字节。
后者的机器码是:11101000(0E8H)
单字节;
在物理结构上,R0与RAM的00H单元恰好是同一单元, 所以不同的指令而执行结果是一样的。
或者:指令中分别包含1个字节的操作数和1个字节的操作 数地址。如:
MOV direct,#data 举例:MOV 20H,#0FFH

汇编语言复习PPT课件

汇编语言复习PPT课件

第16页/共19页
[例7]欲对数组A、B的相应元素作如下运算: I=1,2,5时,逻辑与运算 I=3,6,7时,逻辑或运算 I=4,8时,逻辑异或运算
将运算结果存入数组C 分析: 00——逻辑与运算
11——逻辑或运算 01或10——逻辑异或运算 DATA SEGMENT A DB 8 DUP(?) B DB 8 DUP(?) C DB 8 DUP(?) RELU DW 0111110001110000B DATA ENDS
第17页/共19页
MOV CX,8 __________ MOV BX,RELU MOV AX,A[SI] AGAIN: MOV DX,BX AND DX,03H ___________ JZ A_AND_B CMP DX,03H JZ A_OR_B XOR AX,B[SI] JMP DONE ___________ A_AND_B:AND AX,B[SI] JMP DONE A_OR_B: OR AX,B[SI] DONE: MOV C[SI],AX
3、字符串操作:字符串移动 字符串比较 在已知字符串中查找某一字符
4、表格(数组)处理:查找(顺序查找、XLAT指令) 排序 插入 删除
第14页/共19页
[例5] 写出每条指令执行后的结果
MOV SI, 4 MOV BX, 0100H
MOV AX, 0050H
DS
MOV CX, [BX]
INC BX
BUF1
或 (2) MOV
CLLE, BAYBTXE,PBTURF1
B(3U) FM2O+V2 BUF3+9,
0A6H
第12页/共19页
汇编语言编程
1、分支结构只有一个出口,必须使用JMP指令
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2020/12/12
11
分隔符
语句的4个组成部分要用分隔符分开 标号后用冒号,注释前用分号 操作数之间和参数之间使用逗号分隔 其他部分通常采用空格或制表符 多个空格和制表符的作用与一个相同 续行符 “&”
2020/12/12
12
属性
常数:无
属性

变量 偏置
字节
类型

双字 段
标号 偏置
操作数与参数
指令的操作数可以是立即数、寄存器和 存储单元。
伪指令的参数可以是常数、变量名、表 达式等,可以有多个,参数之间用逗号分隔。
2020/12/12
10
注释
语句中由分号“;”开始的部分为注释内容, 用以增加源程序的可读性。
必要时,一个语句行也可以由分号开始作为阶 段性注释。
汇编程序在翻译源程序时将跳过该部分,不对 它们做任何处理。
汇编语言大小写不敏感
2020/12/12
8
助记符
指令(操作码)助记符是指令名称的代 表符号,它指出指令的操作类型,汇编 程序将其译成机器指令。
伪指令助记符(定义符)是在对源程序汇 编期间由汇编程序处理的操作,如定义 数据、分配存储区、指示程序结束等。 没有对应的机器指令。
2020/12/12
9

类型

2020/12/12
13
4.2 8086汇编语言中的 伪指令
伪指令语句主要完成变量定义、存储 器分配、指示程序开始和结束、段定义、 段分配等。
伪指令语句没有对应的机器代码,它 是由汇编程序(MASM)对源程序汇编期 间进行处理的。
2020/12/12
14
4.2.1 符号定义语句
1.EQU 格式: 符号名 EQU 表达式 功能: 定义符号名 2.= 格式: 符号名 = 表达式 功能:与EQU相同
2020/12/12
5
语句格式
⑴ 指令性语句——由指令构成的语句,它通常对应一条机 器指令,出现在程序的代码段中:
[标号:] 指令助记符 [操作数1][,操作数2][;注释]
操作码
⑵ 说明性语句——由伪指令构成的语句,它通常指示汇 编程序如何汇编源程序:
[名字] 伪指令助记符 参数,参数,… [;注释]
汇编语言是面向机器的,是和机器的 硬件密切相关的。
汇编语言编写的程序效率高,节省内 存,运算速度快。
2020/12/12
3
编辑
4.1 8086汇编语言的语句
MASM
A.ASM
汇编语言源 程序文件
汇编
A.OBJ
目标 文件
LINK
A.EXE
可执行 连接 文件
伪指令
汇编
第一遍扫描:存储分配 第二遍扫描:代真
PORTA EQU 4000 × PORTB = 1000
2020/12/12
16
4.2.2 变量定义语句
格式1:[变量名] 助记符 操作数,操作数,……[;注释] 格式2:[变量名] 助记符 n DUP(操作数,操作数,……)[;注释]
变量名为用户自定义标识符,代表紧跟在它后面的操作 数的逻辑地址;用这个符号表示地址,常称为符号地址。
➢EQU与“=”的不同点在于,EQU不能重新定义,而 “=”可以。
➢常数若使用有意义的符号名来表示,可以提高程序的可 读性,同时更具有通用性
2020/12/12
15
符号定义
PORTA equ 10H PORTB = 12H DATA equ 20
符号应用(左侧的符号形式等价右边程序段) IN AL,PORTA ;IN AL,10H OUT PORTB,AL ;OUT 12H,AL MOV AX,DATA*2 ;MOV AX,20*2
第4 章 8086汇编语言
2020/12/12
1
本章要点
1. 掌握汇编语言语句格式 2. 掌握段定义源程序格式 3. 了解指令与伪指令的区别,掌握常用伪指令的使用。 4. 掌握常量表达式、变量的定义及应用;变量、标号
的属性。 5. 掌握基本DOS功能的调用
2020/12/12
2
汇编语言是利用指令的助记符、符号 地址、标号来编写的语言,它是机器语 言的符号表示,是低级语言。
2020/12/12
17
定义存储单元伪指令助记符
变量定义伪指令根据申请的主存空间单位分类 DB——定义字节伪指令 DW——定义字伪指令 DD——定义双字伪指令 DQ——定义4字伪指令 DT——定义10字节伪指令
2020/12/12
18
DB 定义字节单元伪指令
DB伪指令用于分配一个或多个字节单元,并可以将 它们初始化为指定值
汇编语句
指令性语句 伪指令语句
2020/12/12
执行
指令
4
指令和伪指令
指令——使CPU产生动作、并在程序执行时才处理的 语句,生成目标码。
伪指令——不产生CPU动作、在程序执行前由汇编程 序处理的说明性语句,例如,数据说明、变量定义 等等,不生成目标码。 MOV SP,BX 10011 DB 1,2
一个程序中,每个标识符的定义是唯一的,还不 能是汇编语言采用的保留字。
2020/12/12
7
保留字
保留字是汇编程序已经利用的标识符,主要有:
o 指令助记符——例如:MOV、ADD o 伪指令助记符——例如:DB、EQU o 操作符——例如:OFFSET、PTR o 寄存器名——例如:AX、CS o 预定义符号——例如:@data
初值表中每个数据一定是字节量(Byte),存放一 个8位数据:
可以是0~255的无符号数 或是-128~+127带符号数 也可以是字符串常数
2020/12/12
19
存储单元 偏移地址
Data segment
;数据段
X d,?
Y db 'ABC'
变量名可以没有。这种情况,汇编程序将直接为操作数 分配空间,无符号地址。
设置变量名是为了方便存取它指示的存储单元。
n 必须是正整数,表示括号中的操作数重复的次数
DUP——表示重复
操作数可以是常数、字符串、变量、标号、表达式、?等, 多个操作数之间必须要用逗号分开。
?——表示初值不确定,即未赋初值;
定义
2020/12/12
6
标号、变量与标识符
标号是反映指令位置(逻辑地址)的标识符,后跟一个冒
号分隔。
变量是反映伪指令位置(逻辑地址)和属性的标识符,后
跟空格或制表符分隔,没有冒号。
标识符一般最多由31个字母、数字及规定的特殊符号
(如 _、$、?、@)组成,不能以数字开头。默认情 况下,汇编程序不区别标识符中的字母大小写。
相关文档
最新文档