89C51的指令系统

合集下载

第3章 89C51单片机汇编语言简介

第3章 89C51单片机汇编语言简介

第3章89C51单片机汇编语言简介教学目标本章主要介绍89C51单片机的寻址方式、指令系统、基本程序结构及汇编语言程序的编写,并给出了两个简单的应用实例。

通过本章节的学习,读者应初步掌握89C51单片机汇编语言的基本指令,并能够完成一些简单程序的编写和调试。

任务导入:基于汇编语言的静态LED显示系统的实现:利用89C51单片机的I/O端口驱动一个共阳极数码管,在数码管上循环显示0-9数字,时间间隔0.5秒。

任务分析要实现用一个数码管循环显示数字0~9的功能,我们可把数码管的段选线连接到单片的I/O口上,再通过程序让单片机的I/O口分时输出0~9对应的段码就可以了。

单片机的程序又如何编写呢?通过本章的学习,就可以用单片机的汇编语言让数码管按照要求进行显示。

任务必备知识3.1 89C51单片机指令系统3.1.1 89C51单片机指令分类89C51单片机指令系统共有111条指令。

这些指令可按不同方法进行分类:1.按字节数分单字节指令(49条)、双字节指令(45条)、三字节指令(17条)。

2.按指令的执行时间分单机器周期指令(64条)、双机器周期指令(45条)、四机器周期指令(2条)。

3.按指令的功能分数据传送指令(28条)、算术运算指令(24条)、逻辑运算指令(25条)、控制转移指令(17条)、位操作指令(17条)。

指令一般由两部分组成,即操作码和操作数。

在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写是相当有用的。

Rn——当前选中的寄存器区的8个工作寄存器R0—R7(n=0-7)。

Ri——当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)direct—内部数据存储单元的8位地址。

包含0—127(255)内部存储单元地址和特殊功能寄存地址。

#data—指令中的8位常数。

#data16—指令中的16位常数。

addr16—用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程序存储器地址。

第3章指令系统

第3章指令系统
解:程序如下: 程序如下: ORG NUM DATA STRING DATA START: CLR MOV LOOP: LOOP: CJNE SJMP NEXT: NEXT: INC INC SJMP COMP: COMP: MOV SJMP 0800H 20H 21H A R0, R0,#STRING @R0, @R0,#24H,NEXT COMP A R0 LOOP NUM, NUM,A $
单片机原理 及接口技术
第3 章
89C51单片机指 89C51单片机指 令系统
LOGO
LOGO
程序设计举例
一 二 三 四 五 六
简单程序设计举例 分支程序 循环程序 子程序设计举例 代码转换程序设计举例 运算类程序设计举例
BACK
LOGO
一、 简单程序设计举例
例1 :拆字。将片内RAM 20H单元的内容拆成两段,每段 拆字。将片内RAM 20H单元的内容拆成两段 单元的内容拆成两段, 四位。并将它们分别存入21H 22H单元中 程序如下: 21H与 单元中。 四位。并将它们分别存入21H与22H单元中。程序如下:
练习: 练习: 1.将片外RAM 2000H单元开 始的20个字节,传送到片 内RAM 30H单元开始的单元 中去。 2.将片内RAM 20H单元开始 的10个字节,传送到片内 RAM 30H单元开始的单元中 去。 3.将片内RAM BK1单元开始 的COUNT个字节,传送到片 外RAM BK2单元开始的单元 中去。
Back
LOGO
3.4
思考题与习题
1. 简述下列基本概念: 指令、指令系统、机器语言、汇编语言、高级 语言。 2. 什么是计算机的指令和指令系统? 3. 简述89C51汇编指令格式。 4. 简述89C51的寻址方式和所能涉及的寻址空间。 5. 要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?

B89C51产品使用手册

B89C51产品使用手册

B89C51 高可靠8位微控制器1.B89C51简介B89C51是一种高速低功耗的8位微控制器。

B89C51指令系统同80C51完全兼容。

它包括一个128 Bytes的RAM、4个8- bit的控制双向口、两个16-bit的定时/计数器、一个串行通信口。

它具有 5 个中断源,分为两个优先级。

B89C51有两种低功耗方式:待机方式和掉电方式。

具体采用哪种方式可以由软件设定。

待机方式下,内部处理器的时钟关掉,但外围电路可以继续工作;在掉电方式下,振荡器被停振。

外部时钟可以在任何情况或任何时间停下来,它不会影响内部处理器。

2.主要特征• 全静态设计8位 CMOS 微控制器• 电压范围 4 .5V~5.5V• 128 bytes 的 SRAM• 64KB 的程序存储地址空间• 64KB 的数据存储地址空间• 四组八位双向口• 两个16位定时/计数器• 一个全双工的串行口• 具有5个中断源,两级中断处理能力• 封装形式- DIP40:B89C51-24/43.管脚图40- PIN DIP B89C514.引脚描述5.总体结构框图6.功能描述B89C51的结构包括:一个核控制器、周边各种寄存器组成。

四个通用 I/O 口,128Bytes 的RAM , 两个定时计数器,一个串行口组成。

此处理器支持111种不同的操作码,可寻址64KB 的程序存储地址空间和64KB 的数据存储地址空间。

新增加的外围管脚为了更好的增加I/O 口的功能 ,新增加了 P4口。

它具有4位可位寻址的I/O 口和2个外部中断2INT ,3INT 。

它的封装为44引脚的 PLCC 封装。

6.1.2INT / 3INT两个新增加的外部中断2INT 和3INT 的功能和标准的80C52的外部中断0和1的功能相类似的。

它的功能由外部中断寄存器 XICON 的位来决定。

在80C52中的XICON 寄存器不是标准的寄存器而是位寻址的。

它的地址为0 C0H 。

第3章_89C51的指令系统

第3章_89C51的指令系统

⑤ 操作数与操作码之间用空格分隔,操作数与 操作数之间用逗号“,”分隔。
⑷ 注释:指令功能说明。
① 注释属于非必需项,是为便于阅读, 对指令功能作的说明和注解。 ② 注释必须以“;”开始。
指令有单字节指令、双字节指令、三字节不同长 度的指令,格式不同: (1)单字节指令:操作码、操作数 同在一个字 节中。
方括符[ ]表示可选项 标号代表指令所在地址,1-8个字母/数字,“:‖结尾

标号:指令的符号地址。
① 用于一段功能程序的识别标记或控制 转移地址。 ② 指令前的标号代表该指令的地址, 是用符号表示的地址。 ③ 一般用英文字母和数字组成。

标号必须用冒号“ :”与操作码分隔。

操作码:表示指令的操作功能。
MOV A,3AH ;将内RAM 3AH单元中的数据传送至A中
MOV A,P0 ;将特殊功能寄存器P0口中的数据传送至A中 说明:3AH和P0是以direct形式出现的直接地址 访问特殊功能寄存器SFR只能采用直接寻址方式。
直接寻址是给出操作数的直接地址。
3. 寄存器间接寻址方式 寄存器中存放的是操作数的地址,在寄存器前加前缀标志“@‖ 。 访问内部RAM或外部RAM的低256个字节时,只能采用R0或R1作 为间址寄存器。例如: MOV A,@Ri ;i=0或1 其中Ri中的内容为40H,把内部RAM40H单元内容送A。 寻址范围: (1)访问内部RAM低128个单元,其通用形式为@Ri (2)对外部RAM的64K字节的间接寻址,例如: MOVX A,@DPTR (3)片外数据存储器的低256字节 例如:MOVX A,@Ri (4)堆栈区 堆栈操作指令PUSH(压栈)和POP(出栈)使用堆栈指针 (SP)作间址寄存器

STC89C51单片机硬件结构资料

STC89C51单片机硬件结构资料

0023H —— 串口中断入口
( 002BH —— T2溢出中断入口 )
三、内部数据存储器
物理上分为两大区域:00H ~ 7FH即128B内RAM区
7FH
80H ~ FFH即SFR区。
用户RAM区
数据缓冲区、堆栈区、工作 单元
2FH / 30H
位寻址区 (位地址00H ~ 7FH )
1FH / 20H
M1 8D TF0 /
M0 8C TR0 /
+
GATE 8B IE1 GF1
C/T 8A IT1 GF0
M1 89 IE0 PD
M0 88 IT0 IDL
89H 88H 87H 83H 82H 81H
87 P0.7
86 P0.6
85 P0.5
84 P0.4
+
83 P0.3
82 P0.2
81 P0.1
0 0:
0 1: 1 0: 1 1:
0区 R0 ~ R7
1区 R0 ~ R7 2区 R0 ~ R7 3区 R0 ~ R7
数据 存储器
2、指针寄存器
(1)程序计数器PC
9F SM0
9E SM1
9D SM2
9C REN
9B TB8
9A RE8
99 TI
98 RI
98H 90H 8DH 8CH 8BH 8AH
97 P1.7
96 P1.6
95 P1.5
94 P1.4
93 P1.3
92 P1.2
91 P1.1
90 P1.0
GATE 8F TF1 SMOD
C/T 8E TR1 /
89C51 单片机 89C51 单片机 内部结构图 内部结构图

第2章89C51单片机硬件结构和原理2010

第2章89C51单片机硬件结构和原理2010

89C51有四个8位并行I/O接口P0~P3。 它们都是双向端口,每个端口各有8条I/O线。 P0~P3口四个锁存器同RAM统一编址,可作为SFR来寻址。
返回
2.2 MCS-51单片机引脚及其功能
§2.2.1 MCS-51单片机引脚

89C51单片机引脚如图2-3所示。
§2.2.2 MCS-51单片机引脚功能
返回
三、寻址方式:

1、当 EA=“1”时:

在0000~0FFFH范围内执行片内ROM中的程序,
当指令地址超过0FFFH 后就自动转向片外ROM
中取指令。

2、当 EA=”0”时:

片内ROM不起作用,CPU只能从片外ROM/EPROM 中取指令,可从 0000H 开始寻址。

3、片内ROBiblioteka 和片外ROM取指的速度相同。规定的操作。
返回
(3)振荡器和定时电路

89C51单片机片内有振荡电路,只需外接石英晶体和频率
微调电容(2个30pF左右),其频率范围为1.2MHz~12MHz。
该信号作为89C51工作的基本节拍即时间的最小单位。
返回
(二)、存储器的组成部分
1、程序存储器(ROM)

地址从0000H开始。

用于存放程序和表格常数。
程序存储器 4KBROM
数据存储器 256B RAM/SFR
2×16位 定时器/计数器
89C51 CPU 64KB 总线 扩展控制器 内中断 外中断 控制 并行口 可编程全双工 串行口
可编程I/O
串行通信 返回
一、组成 一个8位的微处理器CPU。
片内数据存储器(RAM128B/256B):

89C51单片机指令系统

89C51单片机指令系统

一.数据传送指令1. 以累加器A为目的操作数的指令(4条,即四种寻址方式)MOV A,RN ;MOV DIRECTMOV A,@RIMOV A,#DATA2. 以寄存器Rn为目的操作数的指令(3条)MOV RN,AMOV RN,DIRECTMOV Rn,#DATA3. 以直接地址为目的操作数的指令(5条)MOV DIRECT,AMOV DIRECT,RNMOV DIRECT,DIRECTMOV DIRECT,@RIMOV DIRECT,#DATA4. 以间接地址为目的操作数的指令(3条)MOV @RI,AMOV @RI,DIRECTMOV @RI,#DATA5.16位数据传送指令(1条)MOV DPTP,#DATA166. 查表指令MOVC A,@A+DPTRMOVC A,@A+PC7. 累加器A与片外RAM传送指令(4条)MOVX A,@RIMOVX A,@DPTRMOVX @RI,AMOVX @DPTR,A8. 栈操作指令(2条)1)PUSH(入栈)指令PUSH DIRECT2) POP(出栈)指令POP DIRECT9. 交换指令(4条)1)字节交换指令XCH A,RNXCH A,DIRECTXCH A,@RI2)半字节交换指令XCHD A,@RI2.算数运算指令1. 加法类指令(4条)ADD A,RNADD A,DIRECTADD A,@RIADD A,#DATA2. 带进位加法指令(4条) ADDC A,RNADDC A,DIRECTADDC A,@RIADDC A,#DATA3. 带借位减法指令(4条) SUBB A,RNSUBB A,DIRENTSUBB A,@RISUBB A,#DATA4. 乘法指令(1条)MUL AB5. 除法指令(1条)DIV AB6. 加1指令(6条)INC AINC RNINC DIRECTINC @RIINC DPTR7. 减1指令(4条)DEC ADEC RNDEC DIRECTDEC @RI8. 十进制调整指令(1条)DA A3.逻辑操作指令1. 简单操作指令(2条)1)累加器清0指令CLR A2)累加器A取反指令CPL A2. 移位指令(4条)1)累加器A循环左移指令RL A2)累加器A循环右移指令RR A3)累加器A连同进位位循环左移指令RLC A4)累加器A连同进位位循环右移指令 RRC A3. 累加器半字节交换指令SWAP A4. 逻辑“与”指令(6条)ANL A,RNANL A,DIRECTANL A,@RIANL A,#DATAANL DIRECT,AANL DIRECT,#DATA5. 逻辑“或”指令(6条)ORL A,RNORL A,DIRECTORL A,@RIORL A,#DATAORL DIRECT,AORL DIRECT,#DATA6. 逻辑“异或”指令(6条)XRL A,RNXRL A,DIRECTXRL A,@RIXRL A,#DATAXRL DIRECT,AXRL DIRECT,#DATA4.控制程序转移类指令1.无条件转移指令(4条)1)短转移指令AJMP ADDR112)长转移指令LJMP ADDR163)相对转移(短转移)指令SJMP REL4)间接转移指令JMP @A+DPTR2.空指令操作NOP3,.条件转移类指令1)判零转移指令JZ RELJNZ REL2)比较转移指令CJNE (目的字节),(源字节),REL 3)循环转移指令DJNZ RN,RELDJNZ DIRECT,REL4. 调用和返回指令1)短调用指令ACALL ADDR112)长调用指令LCALL ADDR163)返回指令RETRETI5.位操作(布尔处理)类指令1.位数据传送指令MOV C,BITMOV BIT,C2.位修正指令1)位清0指令CLR CCLR BIT2)位置1指令SETB CSETB BIT3)位取反指令CPL CCPL BIT3.位逻辑运算指令1)位逻辑“与”指令ANL C,BITANL C,/BIT ; 斜杠表示对该位取反后再参与运算,但不改变原来的数值2)位逻辑“或”指令ORL C,BITORL C,/BIT4.位条件转移类指令1)判布尔累加器C转移指令JC RELJNC REL2)判位变量转移指令JB BIT,RELJNB BIT,REL3)判位变量并清0转移指令JBC BIT,REL。

第3章单片机指令系统

第3章单片机指令系统

寄存器寻址 寻址方式 寄存器间接寻址
基址加变址寄存器间接寻址 相对寻址 位寻址
1.立即寻址

操作数直接由指令给出,通常紧跟指令操作码之 后的字节是操作数,该操作数被称为立即数。

立即寻址所对应的寻址空间为:ROM 立即数:8/16位二进制数
如:MOV MOV A,#7AH DPTR, #1234H
注意:
① 适当选择SFR。寻址SFR时,可以用直接地址,也可以 用寄存器名,但后者更容易理解和阅读 如: MOV A,0D0H ; (A)←(D0H) MOV A,PSW ; (A)←(PSW)
② 适当选择累加器的表达式
累加器A表达方式 A → 寄存器寻址 ACC 直接寻址 E0H ;04H 单字节
如:
INC A INC ACC INC 0E0H
;05E0H 双字节
③ 注意地址的区别(位地址与字节地址)
如: MOV A,30H MOV C,30H ; (A)←(30H) ;(C)←(30H) 字节操作 位操作
3. 寄存器寻址

操作数在寄存器中
可用寄存器有: (1)四组工作寄存器R0~R7共32个工作寄存器 (2)SFR中有A、AB、DPTR及CY 如: MOV R3,#12H MOV A,R3
注意:① 立即数前加“#”号 ② 立即寻址方式的指令是双字节的(第1个字节为 操作码,第2个字节是操作数) ③ 操作数是放在ROM内的常数
2. 直接寻址

指令中直接给出操作数所在的单元地址或位地址
直接寻址可访问的存储空间: (1)内部RAM低128个单元 在指令中直接以单元地址形式给出,地址范围00H~7FH (2)特殊功能寄存器SFR 直接寻址是SFR惟一的寻址方式,SFR可以用单元地址给出, 也可用寄存器符号形式给出(但A、AB、DPTR除外) (3)211个位地址空间 内部RAM中可位寻址的20H~2FH单元对应的128个位地址空间 11个SFR中83个可用的位地址空间
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
内容概要
AT89S51单片机使用MCS-51指令系统。 n 介绍指令系统寻址方式 n 对111条基本指令按功能分类详细讲解。 指令---是CPU按照人们的意图来完成某种操作的命令,它以
英文名称或缩写形式作为助记符。 汇编语言指令---用助记符、符号地址、标号等表示的书写
程序的语言。 掌握汇编语言指令是程序设计的基础。
4
12MHz晶振,每个机器周期为1s。 AT89S51一大特点是在硬件结构中有一个位处理机,一个处理
位变量的指令子集。 3.2 指令格式 指令格式:指令的表示方法。 指令通常由两部分组成:操作码和操作数。 操作码——指令进行什么操作。 操作数——指令操作的对象。可能是一具体数据,也可能是
指出到哪里取得数据的地址或符号。 指令长度不同,格式也就不同。
3. 寄存器间接寻址方式
寄存器中存的是操作数地址,即先从寄存器中找到操作数的地 址,再按该地址找到操作数。
为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址方 式中,应在寄存器名称前面加前缀标志“@”。
例如:MOV A,@Ri
;i=0或1
9
其中, Ri的内容为40H,即把内部RAM 40H地址单元中的内容
“direct”就是操作数的单元地址。 例如: MOV A,40H 表示把内部RAM 40H单元(direct)的内容传送到A。指令中
源操作数(右边的操作数)采用的是直接寻址方式。 指令中两个操作数都可由直接寻址方式给出。 例如: MOV direct1,direct2
8
具体指令:MOV 42H,62H 把片内RAM中62H单元的内容送到片内RAM中的42H单元中。 直接寻址是访问片内所有特殊功能寄存器的唯一寻址方式。
以两者内容相加形成的16位地址作为目的地址进行寻址。 例如指令: MOVC A,@A+DPTR 其中,(A)=05H,(DPTR)=0400H,指令执行结果是把程 序存储器0405H单元的内容传送给A。 本寻址方式的指令有3条:
MOVC A,@A+DPTR MOVC A,@A+PC JMP A,@A+DPTR 前两条指令适用于读程序存储器中固定的数据。例如,将固
目的地址=转移指令所在的地址+转移指令字节数+rel
其中,偏移量rel是带符号8位二进制补码数,–128~+127。 程序转移范围是以转移指令的下条指令首地址为基准地址,相
对偏移在–128~+127之间。 例如, LJMP rel 程序要转移到该指令的PC值加3再加上rel的目的地址处。编写
程序时,只需在转移指令中直接写要转向的地址标号。 例如: LJMP 工作寄存器。但只对当前工 作寄存器区的8个工作寄存器寻址,指令中的寄存器名称只 能是R0~R7。
(2)部分特殊功能寄存器,如累加器A、寄存器B以及数据指 针寄存器DPTR等。
7
2.直接寻址方式 指令中直接给出操作数的单元地址,该单元地址中的内容就
是操作数,直接的操作数单元地址用“direct”表示。 例如: MOV A,direct
传送给A。 4.立即数寻址方式 直接在指令中给出操作数——也称立即数。为了与直接寻址指
令中的直接地址加以区别,需在操作数前加前缀标志“#” 。 例如: MOV A,#40H 第一个字节是操作码,第二字节是立即数,就是放在程序存储 器内的常数。
10
5.基址寄存器加变址寄存器间址寻址方式 以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,
5
(1)单字节指令:操作码和操作数同在一个字节中。 (2)双字节指令:一个字节为操作码,另一个字节是操作数。 (3)三字节指令:操作码占一个字节,操作数占二个字节。 3.3 指令系统的寻址方式 寻址方式——在指令中说明操作数所在地址的方法。 一般说,寻址方式越多,功能就越强,灵活性则越大,指令系
统就越复杂。 寻址方式所要解决的主要问题就是如何在整个存储器和寄存器
第3章 AT89S51单片机的 指令系统
1
第3章 目录 3.1 指令系统概述 3.2 指令格式 3.3 指令系统的寻址方式 3.4 AT89S51指令系统分类介绍
3.4.1 数据传送类指令 3.4.2 算术运算类指令 3.4.3 逻辑操作类指令 3.4.4 控制转移类指令 3.4.5 位操作类指令 3.5 AT89S51指令汇总 3.6 某些指令的说明
的寻址空间内快速地找到指定的地址单元。 下面介绍指令系统7种寻址方式。
6
1.寄存器寻址方式
指令中的操作数为某一寄存器的内容。
例如:MOV A,Rn
;(Rn)→A,n =0~7
把Rn中的源操作数送入到累加器A中。由于指令指定了从寄存 器Rn中取得源操作数,所以称为寄存器寻址方式。
本寻址方式的寻址范围:
11
定的、按一定顺序排列的表格存放在程序存储器中,在程序 运行中由A的动态参量来确定读取对应的表格参数。
第3条为散转指令,A中内容为程序运行后的动态结果,可根 据A中不同内容,实现跳向不同程序入口的跳转。
6.相对寻址方式 解决程序转移。该寻址是以该转移指令的地址(PC值)加上
它的字节数,再加上相对偏移量(rel),形成新的转移 目的地址,从而程序转移到该目的地址。转移的目的地址 用下式计算:
3.1 指令系统概述 简明、易掌握、效率较高的指令系统,复杂指令集。 按所占字节分,分三种: (1)单字节指令49条; (2)双字节指令45条; (3)三字节指令17条。 按执行时间来分,分三种: (1)1个机器周期(12个时钟振荡周期)的指令64条; (2)2个机器周期指令45条; (3)4个机器周期——乘、除指令。
“LOOP” 为目的地址标号。汇编时,由汇编程序自动计算和 填入偏移量。但手工汇编时,偏移量的值由手工计算。
13
7.位寻址方式 对内部RAM和特殊功能寄存器具有位寻址功能的某位内容进行
置1和清0操作。 位地址一般以直接位地址给出,位地址符号为“bit”。 例如:MOV C,bit 其具体指令: MOV C,40H 把位地址为40H的值送到进位位C。 由于AT89S51具有位处理功能,可直接对数据位方便地实现置
相关文档
最新文档