单片机的汇编语言与程序设计.ppt

合集下载

单片机程序设计ppt课件

单片机程序设计ppt课件

;为正数,求X+2
AJMP SAVE
;转到SAVE,保存数据
ZER0:MOV A,# 64H ;数据为零,Y=100
AJMP SAVE
;转到SAVE,保存数据
NEG:DEC A
CPL A
;求∣X∣
SAVE: MOV 31H,A
;保存数据
SJMP $ ;暂停
精选ppt课件
13
2.多分支选择结构 当程序的判别输出有两个以上的出口流向时,称为多分支选 择结构。8051的多分支结构程序还允许嵌套,即分支程序中 又有另一个分支程序。汇编语言本身并不限制这种嵌套的层 次数,但过多的嵌套层次将使程序的结构变得十分复杂和臃 肿,以致造成逻辑上的混乱。多分支选择结构通常有两种形 式,如图4-4所示。
LJMP END1
MEMSP2:MOV A,R0
;乘法分支
MOV B,R1
CLR C
MUL AB
MOV RESULT,A
MOV RESULT+1,B
LJMP END1
精选ppt课件
18
MEMSP3:MOV A,R0 MOV B,R1
CLR C DIV AB MOV RESULT,A MOV RESULT+1,B
精选ppt课件
24
【例】50 ms软件延时程序。
软件延时程序一般都是由DJNZ Rn,rel指令构成。执行一条 DJNZ指令需要两个机器周期。软件延时程序的延时时间主要与机 器周期和延时程序中的循环次数有关,在使用12 MHz晶振时,一 个机器周期为1μs,执行一条DJNZ指令需要两个机器周期,即 2μs。适当设置循环次数,即可实现延时功能。
精选ppt课件
9
【例】设a存放在累加器A中,b存放在寄存器B中,若a≥0,

计算机接口技术课件 第三章 MCS-51单片机汇编语言与程序设计基础

计算机接口技术课件 第三章 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

大学课件MCS51单片机指令系统与汇编语言程序设计

大学课件MCS51单片机指令系统与汇编语言程序设计

ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。

51单片机汇编程序设计PPT课件

51单片机汇编程序设计PPT课件
格式:DS n DS n从标号指定单元开始,预留n个单元的存贮区。
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

第4章 MCS-51单片机的汇编语言程序设计

第4章 MCS-51单片机的汇编语言程序设计

下面介绍一些MCS-51汇编程序常用的伪指令。 (1)汇编起始伪指令ORG 格式:[标号:] ORG 16位地址 功能:规定程序块或数据块存放的起 始地址。如: ORG 8000H START: MOV A ,#30H …… 该指令规定第一条指令从地址 8000H 单元开 始存放,即标号START的值为8000H。
【例4.5】多分支程序。根据R7的内容分别转向相应的处理程序。 设R7的内容为处理程序的序号0~N,对应的处理程序的入口地 址分别为A0~AN。 程序如下: START:MOV DPTR,#TAB ;设置数据指针 MOV A,R7 ;处理程序的序号送A ADD A,R7 ;序号加倍后作为偏移量 MOV R3,A ;偏移量暂存于R3 MOVC A,@A+DPTR ;取处理程序入口地址高8位 XCH A,R3;偏移量交换于A中,入口地址高8位交换于R3中 INC A ;偏移量加1 MOVC A,@A+DPTR ;取处理程序入口地址低8位 MOV DPL,A ;低8位地址送DPL MOV DPH,R3 ;高8位地址送DPH CLR A ;A 清0 JMP @A+DPTR ;转向相应的处理程序 TAB: DW A0,A1,A2, A,41H
MOV R1,A CLR A ADDC A,#00H MOV R0,A MOV A,42H ADD A,R1 MOV R1,A CLR A ADDC A,RO MOV R0,A
;取40H单元值 ;40H单元值+41H单元值,结果存 ;于A中,并影响标志位CY ;结果暂存于R1 ;A清0 ;进位标志CY送A ;CY送高位 ; 取42H单元值 ;前两单元和的低位与42H单元内容相加, ;并影响标志位CY ;和的低位存于R1 ; ;两次高位相加 ;高位和存于R0

(单片机完整课件PPT)第三章

(单片机完整课件PPT)第三章

寻址范围包括:
(1)内部RAM中的位寻址区。位有两种表示方法,例如, 40H;另一种是单元地址加上位,例如,(28H).0,指 的是28H单元中的最低位。它们是等价的。 (2)特殊功能寄存器中的可寻址位
可寻址位在指令中有如下4种的表示方法:
a. 直接使用位地址。例如PSW.5的位地址为0D5H。
b. 位名称的表示方法。例如:PSW.5是 F0 标志位,可使 用F0表示该位。 c.单元地址加位数的表示方法。例如 :(0D0H).5。 d.特殊功能寄存器符号加位数的表示方法。例如:PSW.5。
课堂练习:
指出下列指令中划线的操作数的寻址方式: Mov r0,#60h Mov a,30h Mov a, @r0 Movc a, @a+dptr Cjne a,#00h,one Cpl c Mov c,30h
如: MOV
A,Rn
;(Rn)→A,n=0~7
表示把寄存器Rn的内容传送给累加器A
寻址范围:ACC,B,DPTR,PSW,R0~R7,C
三、存储器寻址 寻址空间:64K 外RAM、64K ROM、128B 内RAM
1.直接寻址方式
操作数直接以单元地址的形式给出: MOV A,40H 寻址范围:内部RAM的256个单元 2.寄存器间接寻址方式 寄存器中存放的是操作数的地址 在寄存器的名称前面加前缀标志“@” 如: MOV A,@Ri ;i=0或1
单片机原理与应用技术
厦门理工学院电子与电气工程系 陈志英
第3章 单片机汇编语言编程技术
机器语言:是计算机可以识别和直接执行的语言,它是由一 组二进制代码组成。 汇编语言:是用助记符代替机器语言的操作码,用16进制 数代替二进制代码。 高级语言:是采用类似自然语言并与具体计算机类型基本无

第4章 MCS-51单片机汇编语言程序设计(2)

第4章 MCS-51单片机汇编语言程序设计(2)
START:MOV DPTR,#TAB : MOV A,R7 ADD A,R7 MOV R3,A MOVC A,@A+DPTR
XCH A,R3 INC A MOVC A,@A+DPTR MOV DPL,A MOV DPH,R3 CLR A JMP @A+DPTR TAB DW DW A0 A1
…………. DW AN
INC
DPTR
MOVX A,@DPTR SUBB A,R7 JNC XCH BIG1 A,R7
BIG0:INC DPTR
实现程序如下: 实现程序如下
START:CLR C : MOV DPTR,#ST1 , MOVX A,@DPTR , MOV R7,A
MOVX @DPTR,A RET BIG1:MOVX A,@DPTR SJMP BIG0
实现程序如下: 实现程序如下 MOV 30H, 20H ANL 30H,#00011111B MOV A,21H SWAP A RL A ANL A,#11100000B ORL 30H,A
第4章 MCS-51单片机汇编语言程序设计
实现程序如下: 实现程序如下 例 A,@R1 ADDC4.3 做3个字节的 无符号的加法. 无符号的加法.设一个加 MOV R0,#52H , MOV @R0,A 数存放在内部RAM 50H、 RAM的 数存放在内部RAM的50H、 MOV R1,#55H , DEC R0 51H、52H单元中 单元中, 51H、52H单元中,另一 DEC R1 RAM的53H、 MOV A,@R0 个加数存放在RAM 个加数存放在RAM的53H、 MOV A,@R0 54H、55H单元中 单元中, 54H、55H单元中,相加 ADD A,@R1 结果存内部RAM的50H、 结果存内部RAM的50H、 RAM ADDC A,@R1 51H、52H单元 单元, 51H、52H单元,均从高 MOV @R0,A 字节开始存放, 字节开始存放,进位存放 MOV 00H,C 在位寻址区的00H位中。 00H位中 在位寻址区的00H位中。 MOV @R0,A DEC DEC R0 R1

《单片机简单程序》PPT课件

《单片机简单程序》PPT课件
汇编控制指令,仅提供汇编信息,没有指令代码。
精选PPT
4
一. 汇编语言指令类型
3. 宏指令:
宏汇编功能:将需要多次反复执行的程序段定义成一 个宏指令名(宏定义),编程时,可在程序中使用 宏指令名来替代一段程序(宏调用)。 宏定义过程:
宏指令名 MACRO 形式参数

;定义程序段
ENDM 宏调用过程:
主 … 程 序 子 程 … 序 S C A … L L S … C A L L S …
… R E T
精选PPT
23
4-6-4 子程序的类型
按子程序与主程序之间传递参数的方式分类。 入口参数:调用子程序之前,需要传给子程序的参数。 出口参数:子程序送回调用程序的结果参数。
设计子程序应满足通用性的要求,不针对具体数据编程。
选用不同的参数传递方式。 1.寄存器传送参数 2.存储器传送参数 3.堆栈传送参数
精选PPT
24
4-7 算术运算程序
如:分支号=0,程序转移到ADDR0处;当分支号=1,
程序转移到ADDR1处;… 。
(1)用地址表法。设分支号已存入A。
A=?
MTJS:MOV DPTR,#TAB ;取表首地址 0 1
n
CLR C RLC A
;分支号×2
处处 理理
处 理

一二
MOV R2,A
MOVC A,@A+DPTR;取分支地址低位
R2,A ;循环计数器←n
A
;结果单元清0
R3,A ;进位数据存R3
R0
;修改数据指针
A,@R0 ;累加
NEXT ;无进位转NEXT
片 内 R A M … …
X n … …
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PC
RO
A
9M3H
操作码 ×0F×H
DP 2T4R00H
PC
……
240F × ×
“读”
H
MOVC
PSEN A,@A+DPTR
ALU
6、相对寻址
相对寻址
以当前PC值为基准地址,加上指令的偏 移量“rel”,结果为目标地址。rel为有 符号补码数,范围:-128~+127
寻址空间: 程序存储器
例: JNZ rel
D= 2025H
7、位寻址
对内部RAM、SFR的位地址空间进行访问,称 为位寻址。位地址用于布尔指令。
寻址空间: 片内RAM的20H~2FH字节地址 位地址:00H~7FH 共128位
共211位 SFR中11个能被8整除的字节地址 位地址请参看P26表 共83位
例: SETB D5H CLR C
本章学习目标:
了解汇编语言的一般规则,借助指令手册 能读懂汇编程序。
一、 指令格式
51系列单片机采用ASM-51指令格式,格式如下: [标号:] 操作码 [目的操作数][,源操作数] [;注释]
其中包含: ✓方括符[ ]表示可选项 ✓标号代表指令所在地址,1-8个字母/数字,“:”结 尾 ✓操作码就是指令功能助记符,指令实体 ✓目的操作数 ✓源操作数 ✓注释,以“;”开头
二、常用符号
n=0~7
Rn —当前选中寄存器区的8个工作寄存器(R0~R7) Ri —当前选中寄存器区中可做间址寄存器的
2个工作寄存器(R0、R1) i=0、1
direct -—— 8位内部RAM单元地址 00H~7FH
—— 专用特殊功能寄存器SFR的地址80H~FFH
#data —— 立即数(8位) #data16—— 立即数(16位)
; 累加器A不等零则转移 设:rel=23H
ROM

2000H 70H
操作码
PC
2001H 23H
偏移量
rel=23H
(PC)=2002H
PC
2002H 下一条指令
. ...
ALU
PC
2025H
...
修正后转移 目标地址D
(PC) = 2 0 0 2 H
)Rel = 0 0 2 3 H
(PC) = 2025H
“与”
ALU “结果”
3、寄存器寻址 寄存器寻址: 当前选定的寄存器内容就是实际操作数
寻址空间: R0~R7,由RS0、RS1确定寄存器区/4 A、B、CY(位),DPTR、AB
例1: 例2:
MOV A,R3 ADD A,R3
;A (R3) ;A (A)+(R3)
4、寄存器间接寻址
寄存器间接寻址: 指令选定的寄存器内容就是实际 的操作数地址
addr16 — 16位目的地址,用于LCALL、LJMP指令
地址范围64KB ROM空间
addr11 — 11位目的地址,用于ACALL、AJMP指令
地址范围2KB ROM空间 rel — 8位带符号的偏移量, 范围-128~127
用于SJMP和所有的条件转移指令中 DPTR — 数据地址指针,可做16位间址寄存器
bit — 内RAM或SFR中的直接位寻址
A — 累加器 B — 专用寄存器,用于MUL和DIV指令 C — 位累加器 ( PSW.7 ),进位/借位标志
@ — 间址或基址寄存器前缀如 @Ri , @A+DPTR @DPTR , @A+PC
/ — 位操作的前缀,表示对该位操作数取反 (X) — X中的内容 ((X))— 由X寻址的单元中的内容
箭头左边的内容被箭头右边的内容所代替
三、 寻址方式
指令的寻址方式: 用何种方式寻找指令的操作数
1、立即寻址
或指令的执行地址
立即寻址: ❖操作数紧跟操作码OP后面,存放在 程序存储器中
寻址空间: ❖程序存储器
例1:MOV A,# 30H
RO
PC
7M4H
PC
30H
PC
××
;A #30H
操作码A 立即3数0H
寻址空间:
内部 RAM(@R0, @R1, SP) 外部 RAM(@R0, @R1,@DPTR)
例1:
PC PC
MOV @R0,A ;累加器传送指令
RO
A
FM6H
操作码× ×
内RAM
R 30H 0
30H × ×
例2:
PC PC
MOVX A,@DPTR RD
RO
A
EM0H
操作码× ×
DP 2000H TR
直接寻址是访问 SFR 的唯一方法
例1:MOV A, 30H ;A (30H)
RO
A
PC
EM5H
操作码内RAM
××
PC
30H
操作30数H 地×址×
PC
××
例2:ANL 30H,#30H
;30H
RO
PC
5M3H
操作码
PC
30H
直接地址
PC
30H
立即数
PC
××
(30H)∧ #30H 内RAM
30H × ×
例2:MOV DPTR,# 8000H ;DPTR #8000H
DP DP
RO
H80 L00
PC
9M0H
操作码 H H
PC
80H
立即数的高8位
PC
00H
立即数的低8位
PC
2、直接寻址
直接寻址
❖在指令中直接给出操作数的真实地址 ❖操作码后面紧跟一个实际操作数地址
寻址空间:
CPU内部
✓内RAM的低128字节 00H~7FH ✓特殊功能寄存器SFR区 80H~FFH
第3章 单片机的汇编语言与程序设计
3.1 汇编语言概述 3.2 指令系统简介 3.3 汇编语言的编程方法
3.1 汇编语言概述
汇编语言(Assembly Language)——用助记 (字)符代替操作码,用地址符号代替地址码的 一种面向机器的程序设计语言; 汇编语言优点——代码精炼、执行速度快,但 不便于编写较复杂的程序; 汇编程序处理过程——输入源程序→检查语法 正确性(如有语法错误,输出错误信息)→翻 译成二进制目标程序。
;将F0位置1 ; Cy位清0
小结: 寻址方式与相应的寻址空间
方式
寄存器
利用的变量 R0~R7,A,B
CY,DPTR
直接寻址
direct
寄存器间址
立即数 基址加变址 相对寻址
@R0, @R1, SP @R0, @R1 ,@DPTR
#data @A+DPTR,@A+PC
PC+rel
位寻址
bit
使用的空间
片内
内RAM的低128字节 特殊功能寄存器SFR
“读”
外RAM
2000H × ×
5、基址寄存器加变址寄存器间接寻址
基址寄存器加变址寄存器间接寻址: 以DPTR或PC作基址寄存器,A作变址寄存器
两者相加形成操作数地址。
寻址空间: 程序存储器(@A+DPTR、@A+PC)
例: MOVC A,@A+DPTR 设(A)= 0FH (DPTR)= 2400H
相关文档
最新文档