汇编语言程序设计 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,
并转到子程序入口地址去执行子程序。
❖ 返回指令
2024《程序设计》PPT课件
《程序设计》PPT课件•引言•编程语言基础•算法与数据结构•程序设计方法与技巧目•程序调试与优化•实际应用案例分析录01引言程序设计概念与重要性程序设计定义程序设计是指设计、编制、调试程序的方法和过程,是软件构造活动中的重要组成部分。
程序设计的重要性程序设计是计算机科学的基础,是实现问题求解、数据处理、系统控制等任务的关键手段。
程序设计的应用领域程序设计广泛应用于各个领域,如操作系统、数据库、网络通信、人工智能等。
课程目标与学习内容课程目标掌握程序设计的基本概念、方法和技能,培养计算思维能力和问题解决能力。
学习内容学习程序设计语言、算法与数据结构、程序设计方法、软件工程等基础知识,通过实践项目提高编程能力。
教学方法与评估方式教学方法采用讲授、讨论、案例分析、实验等多种教学方法,注重理论与实践相结合。
评估方式采用作业、实验、考试等多种评估方式,全面评价学生的知识掌握程度和编程能力。
同时,鼓励学生参加编程竞赛和项目实践,提高实践能力和创新能力。
02编程语言基础由二进制代码组成,执行效率高,但编写难度大,可读性差。
机器语言汇编语言高级语言用助记符代替二进制代码,编写难度降低,但仍需对硬件有深入了解。
接近自然语言,易于编写和理解,但执行效率较低。
包括面向过程语言和面向对象语言等。
030201编程语言分类及特点面向过程的编程语言,具有高效、灵活、可移植性好等特点。
常用于系统级开发、嵌入式开发等领域。
C 语言面向对象的编程语言,具有跨平台、安全性高、生态丰富等特点。
常用于Web 开发、大数据处理、移动应用开发等领域。
Java 语言简洁易读的编程语言,具有丰富的库和框架支持,适用于数据分析、人工智能、Web 开发等多个领域。
Python 语言常见编程语言介绍与比较03关注生态和社区支持选择具有丰富生态和社区支持的编程语言,可以获得更好的学习和发展机会。
01根据项目需求选择不同的编程语言适用于不同的项目类型和开发场景,应根据实际需求进行选择。
计算机接口技术课件 第三章 MCS-51单片机汇编语言与程序设计基础
例2:编制一段程序,要求在端口线 :编制一段程序,要求在端口线P1.0,P1.1上分别产生周期为 , 上分别产生周期为 200us和400us的方波.设单片机的外接频率为 的方波. 和 的方波 设单片机的外接频率为12MHz. . 分析:利用定时器产生方波,将定时器设置成为工作方式 , 分析:利用定时器产生方波,将定时器设置成为工作方式3,将寄 存器T0定时 定时100us,T1定时 定时200us,达到定时时间后引起中断,在中 存器 定时 , 定时 ,达到定时时间后引起中断, 断服务程序中各自将P1.0和P1.1引脚取反. 引脚取反. 断服务程序中各自将 和 引脚取反 定时器预设值的设置: 定时器预设值的设置: 单片机的晶体振荡频率为12MHz,计时器的计时频率为1MHz,机 单片机的晶体振荡频率为 ,计时器的计时频率为 , 器周期为1us. 定时 定时100us,因此寄存器 需要计数 需要计数100次 器周期为 . T0定时 ,因此寄存器T0需要计数 次 ,其预 置值为64H+1=9CH. T1定时 定时200us,因此寄存器 需要计数 需要计数200次 置值为 . 定时 ,因此寄存器T1需要计数 次 其预置值为C8H+1=38H. ,其预置值为 . 定时器T0,T1的工作方式设置: 的工作方式设置: 定时器 的工作方式设置 T0采用工作方式 ,因此 采用工作方式3,因此TMOD寄存器的值设置为 寄存器的值设置为#22H. 采用工作方式 寄存器的值设置为 . 定时器T0,T1的控制设置: 的控制设置: 定时器 的控制设置 打开T0, ;要求TCON寄存器的值设置为 寄存器的值设置为#50H. 打开 ,T1;要求 寄存器的值设置为 .
定义存储区域的大小. 6. DS —定义存储区域的大小. 定义存储区域的大小 例: ORG 0350H DS 3
单片机应用技术(第三版)第四章汇编语言程序设计课件
第4章 汇编语言程序设 计 实训4 信号灯的控制2
4.1 概述 4.2 简单程序设计 4.3 分支程序设计 4.4 循环程序设计 4.5 查表程序 4.6 子程序设计与堆栈技术 本章小结 习题4
第4章 汇编语言程序设计
实训4 信号灯的控制2
1. 实训目的 (1) 掌握汇编语言程序的基本结构。 (2) 了解汇编语言程序设计的基本方法和思路。 2. 实训设备与器件 (1) 实训设备:单片机开发系统、微机等。 (2) 实训器件与电路:参见实训1电路图。 3. 实训步骤与要求 (1) 运行程序1,观察8个发光二极管的亮灭状态。
ORG 0000H ;程序从地址0000H开始存放
START: MOV P1,#00H
;把立即数00H送P1口,点亮
;所有发光二极管
ACALL DELAБайду номын сангаас ;调用延时子程序
MOV P1,#0FFH
;灭掉所有发光二极管
第4章 汇编语言程序设计
(2) 在单片机开发调试环境中,将内部RAM的20H单元内
容修改为00H,运行程序2,观察8个发光二极管的亮灭状态;
重新将内部RAM的20H单元内容修改为80H,再次运行程序2,
观察8个发光二极管的亮灭状态。
(3) 运行程序3,观察8个发光二极管的亮灭状态。
程序1:所有发光二极管不停地闪动。
51单片机汇编程序设计PPT课件
5、赋值伪指令
格式汇编指令
格式: END END指示源程序到结束,常将其放在汇编语言源 程序的末尾。
3.3.3 汇编语言程序设计过程
1、分析任务,确定算法或解题思路 2、根据算法和解决思路画出程序流程图 流程图是由一些框图和流程线组合而成:
【例3-10】 求单字节有符号二进制数的补码。
编程如下:
CMPT:
MOV A , 30H
JNB ACC.7 , NCH
;(A)≥0,不需要转换
MOV C , ACC.7 ;保存符号
MOV 10H , C
CPL A
ADD A , #1
MOV C , 10H
MOV ACC.7 , C ;恢复符号
NCH: END
3.3.2 伪指令
1、定位伪指令 格式:ORG n 2、定义字节伪指令 格式:标号:DB X1, X2, ……Xn 此伪指令的功能是把Xi存入从标号开始连续的单元中。 3、定义双字节伪指令 格式:标号:DW X1,X2,……Xn 此伪指令的功能是把Xi存入从标号开始的连续单元中。
4、预留存贮区伪指令
解:编程说明: 内部数据区首址: R0←30H 外部数据区首址: DPTR←2000H 循环次数: R2←32H 程序流程如图3-9所示。
参考程序如下: START: MOV R0 , #30H MOV DPTR , #2000H MOV R2 , #32H
LOOP: MOV A , @R0 MOVX @DPTR , A INC R0 INC DPTR DJNZ R2 , LOOP END
MOV R2 , #10H MOV R4 , #00H MOV R5 , #00H
计算机组成原理与汇编语言程序设计
ADR1 DW VAR2
ADR2 DD VAR2
…
五、汇编语言程序设计
➢上述示例中,变量ADR1的内容(即字存储单元内容)是变量VAR2的 偏移量,而ADR2双字存储单元的内容是变量VAR2的偏移量和段基值。
❖ 三、标号 ➢指令语句的名字字段上的名字叫标号,它是一条指令的符号地址。
➢标号是一条指令语句的符号地址。在汇编源程序中,只有在需要 转向一条指令语句时,才为该指令语句设置标号,以便在转移类 指令(含子程序调用指令)中直接引用这个标号。因此,标号可 作为转移类指令的操作数,即转移地址。
MOV CX,’12’ ;字符串作源操作数
➢(2)在指令语句中,常数可作为存储器操作数寻址方式中的位移量。 如: MOV AX,DS:[1000H] ;直接寻址方式
ADD 10H[DI],CX
;变址寻址方式
MOV AL,0ABH[BX]
;基址寻址方式
SUB DX,1234H[BP][SI] ;基址变址寻址方式
AREG EQU AX
M
EQU MOV
…
MOV AREG,1234H
M CX,BX
➢ 等值伪指令语句仅在汇编源程序时,作为替代符号用,不产生任何目 标代码,也不分配存储单元。
➢在同一源程序中,同一符号不能用EQU伪指令重新定义。例如:
五、汇编语言程序设计
▪ M EQU MOV …
▪ M EQU MUL ▪ 第二条语句在汇编时,会产生符号重新定义的语法错误。 ➢2、等号伪指令 ➢格式:符号=表达式 ➢这种伪指令的含义和作用与EQU等值伪指令相同。但有如下差异: ▪ (1)等号伪指令可以重新定义符号。例如:
➢DD:为定义的变量分配4个字节单元/双字单元
汇编语言程序设计教程第4版课件第8章
与宏有关的操作符
(1)连接操作符(&) • 在宏定义中,可以用连接操作符&作为形参的前 缀或后缀。在宏展开时,&符前后的两个符号连 接在一起构成一个新的符号。这个连接的功能对 修改某些符号是很有用的。 (2)字符串传递操作符(< >) • 在宏调用时,若某个实参中包含逗号或空格等间 隔符,则必须用字符串传递操作符将该实参括起 来,以保证其完整性。这样就可以将该实参作为 一个单一的参数而不是多个参数了。
2018/9/26 汇编语言程序设计教程 3
宏定义与宏调用
• 宏是具有宏名的一段汇编语句序列。宏的 定义相当于C语言中的预定义语句DEFINE, 定义一个标识符来代表一组指令序列。 • 在汇编时,汇编程序用对应的代码序列替 代宏指令。
2018/9/26
汇编语言程序设计教程
4
宏定义的格式
宏定义是用一组伪指令来实现的。其格式是:宏名 MACRO [形式参数表] ┇ (宏体) ENDM
2018/9/26 汇编语言程序设计教程 17
定义宏库的原则
• • • • • 宏尽量具有通用性; 宏定义中的标号必须用 LOCAL 伪指令说明; 要对宏中使用的每一个寄存器进行保护; 附有必要的使用说明; 宏库文件是文本文件,其扩展名无严格限 制,可由用户定义。
2018/9/26
汇编语言程序设计教程
2018/9/26 汇编语言程序设计教程 25
不定重复汇编伪指令IRP
IRP的格式为: IRP 形参,<参数表> ┇ (重复体) ENDM • IRP的功能是使汇编程序对重复体作重复汇编,汇编时, 依次将参数表中的参数取出代替形参,重复汇编的次数等 于参数表中参数的个数。 • IRP 和 ENDM 必须成对出现,重复体部分的语句序列的重 复次数由参数表中的参数个数决定,参数之间应用逗号分 隔,用参数表中的参数取代形参后得到的应该是有效的指 令序列。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RET
15
二.按分支号转移
如:分支号=0,程序转移到ADDR0处;当分支号=1,
宏定义过程:
宏指令名 MACRO 形式参数
…
;定义程序段
ENDM 宏调用过程:
…
宏指令名 实际参数
…
宏指令名 实际参数
6
二.汇编控制指令(伪指令)
常用伪指令及其功能:
1. ORG—起始地址指令:指明程序和数据块起始地址 。
指令地址 机器码
源程序
ORG 2000H
2000H 78 30 MAIN:MOV R0,#30H
汇编语言程序设计
学习内容
4-1 汇编程序的约定 4-2 程序设计步骤 4-3 直线程序 4-4 分支程序 4-5 循环程序 4-6 子程序
2
4-1 汇编程序约定
汇编语言程序: 用汇编语言编写的、完成特定功能的指令序列。
汇编程序: 能将汇编语言源程序转换成机器语言目标程序的系统软件。
汇编语言程序到机器语言程序的转换过程称为汇编。
FRT: MOV A,40H MOV R3,A MOV B,#03H
;取行李重量计价单位G ;M=G×3
MUL AB
MOV R2,A
;暂存3G
MOV A,R3
;取回G
CJNE A,#05H,L1;G≤5 ?
SJMP WETC L1:JC WETC
SUBB A,#05H
;是,转至WETC ;否则M=3G+2(G-5)
2.按功能设计程序,明确各程序之间的相互关系。 1
3.用注释行说明程序,便于阅读和修改调试和修改。
10
4-2 常用程序结构: 直线程序、分支程序、循环程序、子程序
4-2-1 直线程序
直线程序又称简单程序,程序走向只有一条路径。
双字节变补程序(设数据在R4R5中) : MOV A,R5 ;取低字节 CPL A ADD A,#1 ;低字节变补 MOV R5,A MOV A,R4 ;取高字节 CPL A ADDC A,#0 ;高字节变补
… MAIN:MOV DPTR,#X1
ADD A,#X2
5. END —结束汇编指令。
例:START: …
…
END
START
8
6 DS –定义存储区命令。从指定地址开始 保留指定数目的字节单元作为存储区。 例如:ADDRTABL:DS 20 即从标号ADDRTABL代表的地址开始,保留20 个连续的地址单元。
11
MOV R4,A
例 4-2-1-1 压缩式BCD码分解成为单字节BCD码 。
MOV R0,#40H ;设指针 MOV A,R0 ;取一个字节 MOV R2,A ;暂存 ANL A,#0FH ;清0高半字节 INC R0
片 内 R A M 4 2 H 0 十 4 1 H 0 个
4 0 H 十 个
十进制数:20 十六进制数:87H,0F0H 二进制数:01011001B 字符: ‘H’ 字符串: “Hello”。 2)使用伪指令提供汇编信息。
4
汇编的主要任务:
1)确定程序中每条汇编语言指令的指令机器码。 2)确定每条指令在存储器中的存放地址。 3)提供错误信息。 4)提供目标执行文件(*.OBJ/*.HEX)和列表文件(
影响条件
例 求R2中补码绝对值,正数不变, 负数变补。
MOV A,R2
Y
条件满足?
N
处理段
JNB
影响条件
INC A MOV R2,A NEXT:SJMP NEXT ;结束
条件满足?
N
处理1
Y
处理2
13
行李计价: 当G≤5,M=G×3; 当G>5,M=G×3+(G-5)×(5-3)
7.BIT —位定义命令。 例:AQ BIT P1.0 (也可以是绝对地址 )
9
汇编语言程序设计步骤
一.确定方案和计算方法
二.了解应用系统的硬件配置、性能指标。
三.建立系统数学模型,确定控制算法和操作步骤。
四.画程序流程图
开始
表示程序结构和程序功能
五. 编制源程序
Y
?
N
1.合理分配存储器单元和了解I/O接口地址。
2002H E6
MOV A,R0 …
3000H 3001H
ORG 3000H
23
DB 23H,100,‘A’
64
23.002H D4B1
—定义字节型常数指令。
例: DB 12H,100,‘A’
7
3. DW —定义字型常数指令。 例: DW 1234H,5678H
4. EQU —等值。为标号或标识符赋值。 X1 EQU 2000H X2 EQU 0FH
RLC A ADD A,R2 WETC:MOV 41H,A
;存结果M
RET
14
4-2-2-2 多重分支程序
一.多次使用条件转移指令,形成两个以上判断框。
例 求符号函数Y=SGN(X)
开始
SGN(X)=
+1 当 X>0 0 当 X=0 -1 当 X<0
SYMB: MOV A,40H JZ STOR
取X
MOV @R0,A ;保存数据个位
MOV A,R2
SWAP A
;十位换到低半字节
ANL A,#0FH
INC R0
MOV @R0,A ;保存数据十位
12
4-2-2 分支程序
由条件转移指令构成程序判断框部分,形成程序分支结构。
4-2-2-1 单重分支程序
一个判断决策框,程序有两条出路。 两种分支结构:
*.LST)。
一. 汇编语言指令类型 1.机器指令:
指令系统中的全部指令,每条指令有对应的机器代码。 2. 伪指令:
汇编控制指令,仅提供汇编信息,没有指令代码。
5
一. 汇编语言指令类型
3. 宏指令:
宏汇编功能:将需要多次反复执行的程序段定义成一
个宏指令名(宏定义),编程时,可在程序中使用
宏指令名来替代一段程序(宏调用)。
Y
N
X=0?
;取X
Y= 0
;X=0,Y=X
Y
N
X<0?
Y=-1
Y= + 1
JB ACC7,MINUS;X<0
MOV A,# 1 ;X>0,Y=+1
保存Y
SJMP STOR MINUS:MOV A,#0FFH;X<0,Y= -1 STOR: MOV 41H,A ;保存Y
结束
图4-4-4求符号函数流程图
1.手工汇编:人工查指令表汇编。用于设计短小程序或调试程 序的场合。
2.机器汇编:用汇编程序进行汇编。交叉编译的概念; 汇编语言的特点:
1 程序效率高,占存储空间小,运行速度快;
2 使用汇编语言比高级语言难,需对硬件有相当了解;
3 缺乏通用性,不易移植;
3
源程序使用机器汇编要考虑汇编程序的约定
1)按指令格式和语法规则编写程序。 常数的表示: