89C52指令系统

指令系统概述

指令

指令:CPU按照人们的意图来完成某种操作的命令。

汇编语言指令:用助记符、符号地址、标号等表示的书写程序的语言。

8051指令系统在分类上属于复杂指令集,简明、易掌握、效率较高。以8051为内核的单片机都需要使用8051的指令系统,如Atmel的89S51/89S52等。

指令格式

指令格式:指令的表示方法。

指令由两部分组成,操作码和操作数。按照不同的指令长度,指令的格式会不相同

单字节指令:操作码和操作数同在一个字节中。
双字节指令:一个字节为操作码,另一个字节是操作数。
三字节指令:操作码占一个字节,操作数占二个字节。

指令系统的寻址方式

寻址方式 在指令中说明操作数所在地址的方法。

8051共有7种寻址方式。

1. 寄存器寻址方式
指令中的操作数为某一寄存器的内容。

MOV A,Rn    ;(Rn) -> A, n 0~7

将Rn中的源操作数送入累加器A中。
操作数送入到累加器A中。由于指令指定了从寄存器Rn中取得源操作数。
2. 直接寻址方式
指令中的给出操作数的目标地址,直接从目标地址中读取操作数

MOV A,direct  ;direct就是操作数的单元地址
MOV A, 40H ;从40H读数据传给A
MOV 42H,46H 将片内RAM中的46H传给42H

直接寻址是访问片内所有特殊功能寄存器的唯一寻址方式!!!

3. 寄存器间接寻址方式
不同于寄存器寻址的地方是,寄存器寻址是在寄存器中直接存放操作数,而寄存器间接寻址是在寄存器中存放操作数地址。为了区别,寄存器间接寻址应在寄存器名称钱加上前缀标志**“@”**

MOV A @Ri  ;i = 0或1
MOV A @40H

4. 立即数寻址方式
直接在指令中给出操作数(也称作立即数)。为了与直接寻址区别开,需要加前缀标志**“#”**

MOV A,#40H

5. 基址寄存器加变址寄存器间接寻址方式
DPTRPC作为**基址寄存器,以累加器A作为变址寄存器**。以两者内容相加形成的16位地址作为目的地址进行寻址

MOVC A @A+DPTR
若(A) = 05H,(DPTR) = 0400H,指令执行结果是把存储器0405H单元的内容传送给A

本寻址方式方式的指令仅有3条:

			MOVC	A,@A+DPTR
			MOVC	A,@A+PC
			JMP	A,@A+DPTR
前两条主要用于读程序存储器中的数据,遍历列表等
最后一条可以实现跳向不同程序入口

6. 相对寻址方式
主要用于解决程序转移。该寻址是以该转移指令的地址PC值加上它的字节数,再加上相对偏移量rel形成新的转移目的地址,从而使得程序转移到该目的地址。
计算方式:
目的地址=转移指令所在的地址+转移指令字节数+rel
rel应当用补码表示,可正可负

SJMP rel
本程序要转移到该指令的PC值加3再加上rel的目的地址处。

SJMP LOOP
LOOP为目的地址标号,由汇编程序自动计算和填入偏移量

7. 位寻址方式
对内部RAM和特殊功能寄存器具有位寻址功能的末尾内容置1或清0

MOV C,bit ;例如 MOV C,40H

把为地址40H的值送到进位位C

总结一下

序号寻址方式寻址空间 及主要功能标记符号是否可以访问sfr
1寄存器寻址R0~R7,A,B,DPTR等
2直接寻址内部128字节RAM,sfr
3寄存器间接寻址片内、片外数据存储器@
4立即数寻址程序存储器中的立即数#
5基址寄存器加变址寄存器间接寻址程序存储器中的固定数据与程序散转@
6相对寻址程序相对跳转
7位寻址内部RAM与sfr中的可寻址位仅可访问特殊的位

8051常见指令

首先,介绍一下指令会用到的符号。

Rn 当前寄存器区的8个工作寄存器R0~R7
Ri 当前寄存器区中作为间接寻址寄存器2个寄存器R0、R1
direct 直接地址,即8位内部数据存储器单元或sfr的地址
#data 指令中的8位立即数
#data16 指令中的16位立即数’
rel 8位有符号数的偏移量
DPIR 数据指针
bit 可直接寻址的一位
C 或 Cy 进位标志位或微处理机的累加器
addr11 11位目的地址
addr16 16位目的地址
@ 间接寻址寄存器的前缀
(x) 表示x地址单元或寄存器中的内容

数据传送指令

  1. 普通传送指令 MOV <目的操作数>,<源操作数> 将源操作数复制到源操作数去,本指令不影响标志位(除奇偶标志位)。
    特别注意:
    ~ MOV指令经常用于往累加器A里面传送数据,以实现相应的计算功能等。
    ~ MOV指令还经常用于将16位立即数送入DPTR。AT89S52有两个DPTR,通过设置AUXR1中的DPS位来选择,当DPS = 1,指令中的DPTR即为DPTR1,反之亦然。DPTR因其为16为数据指针而更加灵活。
    ~
  2. 堆栈操作指令
    堆栈:FIFO,堆栈指针SP用于指示堆栈的栈顶位置。
    	出栈指令: POP direct    ;sp-1```
    
  3. 累加器A与外部数据存储器RAM/IO传送指令
    MOVX A, @DPTR/@Ri
  4. 查表指令
    此两指令均为查询程序存储器。而程序存储器只读不写,因此传送为单向,仅可从程序存储器中读出数据到A中。
	MOVC A, @A+PC  不必变更sfr和PC的状态,根据A的内容直接取出常数,但是表格只能存放在该指令所在地址+256个单元之内

	MOVC A, @A+DPTR 可以任意寻址

执行以上指令时,单片机的PSEN*引脚信号有效。

算术运算指令

所有的算术运算指令均为针对8进制无符号数的,其余类型的运算必须自行设计程序

  1. 加法
    1. ADD
      必须有一个加数来自于A,结果存放在A中
      进位标志Cy,辅助进位标志Ac,溢出标志位OV,奇偶校验位P
      注意:只有有符号数加法运算OV才有意义,OV在位6和位7有且仅有一个有进位时才会置1.
    2. ADDC
      在加的过程中,Cy也会被加入
    3. INC
      自增指令 +1;
      不会影响标志位
  2. 减法
    1. SUB
      Cy,Ac,OV同理,必须有一个数字来自于A,结果存放在A中
    2. SUBB
      减法时,需要考虑上Cy
    3. DEC
      自减指令 -1 不影响标志位(P标志位除外)
  3. 乘法指令
    MUL AB
    表示A X B 乘积的低字节在A中,高字节在B中
  4. 除法指令
    DIV AB
    表示A/B 商存放在A中,余数存放在B中

逻辑操作指令

  1. CLR 清0指令 不影响标志位
  2. CPL 按位取反指令 不影响标志位
  3. RL 左环移
  4. RR 右环移
  5. RLC 带进位左环移
  6. RRC 带进位右环移
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
7. ANL 逻辑与
8. ORL 逻辑或
9. XRL 逻辑异或

控制跳转指令

  1. 长转移指令 LJMP addr16
  2. 相对转移指令 SJMP rel (也就是常用的在程序中LOOP:的写法)
  3. 绝对转移指令:AJMP addr11
  4. 间接跳转指令 JMP @A+DPTR
    以DPTR内容为基址,A的内容为变址.实现多分支转移.
  5. 条件转移指令 JZ JNZ
  6. 比较不相等转移指令 CJNE
    如果第一个数小于第二个数,则进位标志位Cy置1,否则清0
  7. 减1不为0转移指令 DJNZ
  8. 调用子程序指令 LCALL ACALL
  9. 子程序返回指令 RET
  10. 中断返回指令 RETI
  11. 空操作指令 NOP

位操作指令

  1. 数据位传送指令 MOV C,bit
  2. 位变量修改指令 CLR清0;CPL求反;SETB置1
  3. 位变量逻辑与 ANL
  4. 位变量逻辑或 ORL
  5. 条件转移类指令 JC JNC(进位标志位Cy);JB JNB(直接寻址位); JBC(直接寻址位为1时转移,并把寻址位清0)

对指令的说明

  1. 在读IO口之前,必须要先对引脚写1;“MOV C P1.0”
  2. 在读锁存器时,需要用读—修改—写指令,他会先读P1.0锁存器的Q端状态,接着取反,然后送到P1.0上.
  3. 如果不知道指令中的地址是字节地址还是位地址,只需要看目的操作数就行,两者是相同的
  4. A与Acc

汇编语言程序概述

“汇编”:汇编语言源程序需转换(翻译)成为二进制代码表示的机器语言程序,才能识别和执行。

优点:用汇编语言编写程序效率高,占用存储空间小,运行速度快,能编写出最优化的程序,
缺点:可读性差,离不开具体的硬件,是面向“硬件”的语言通用性差

"高级语言":

优点:通用性强,直观、易懂、易学,可读性好。
缺点: 对时间和空间占用高

下文将讨论汇编语言编写程序的方式

在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: AT89C52最小系统是指构成AT89C52单片机基本运行的最简单电路系统。AT89C52是一种高性能低功耗的8位单片机,它内部集成了CPU、RAM、ROM、IO口等功能,是一种非常常用的单片机。 AT89C52最小系统由以下几个部分组成: 1. AT89C52芯片:这是整个系统的核心部分,它集成了CPU和其他功能模块。 2. 时钟源:AT89C52需要一个稳定的时钟信号来同步其内部操作。最小系统中可以使用晶振或者外部时钟源来提供时钟信号。 3. 复位电路:复位电路用于在上电时将AT89C52芯片复位,并确保它从正确的开机状态启动。 4. 电源电压供应:AT89C52需要一个稳定的电源电压来正常工作。最小系统中可以使用电源电池或者外部电源适配器来为芯片供电。 5. 外部集成电路:根据具体的应用需求,可以添加一些外部的集成电路,如LED、按键、显示器等。 在最小系统中,时钟信号通过晶振或者外部时钟源输入到AT89C52的时钟引脚。复位电路通过一个复位电路芯片或者简单的电路元件连接到AT89C52的复位引脚。电源电压通过电源接口供应到AT89C52芯片的电源引脚上。 通过这些组件的连接,AT89C52最小系统可以完成各种功能的设计和操作。它可以利用CPU的处理能力来实现各种控制、计算、输入输出等功能。同时,由于AT89C52具有低功耗和内部存储器的特性,使得它成为很多嵌入式系统和电子设备的理想选择。 ### 回答2: AT89C52最小系统是指由AT89C52单片机、晶振、电源、复位电路和外部扩展器件构成的一个基本电路系统。具体构成如下: 1. AT89C52单片机:AT89C52是一款具有51系列指令集的8位单片机,它具有512字节的RAM,8KB的Flash程序存储器,以及可编程的输入/输出管脚。 2. 晶振:为了使AT89C52能够正常工作,需要使用外部晶振来提供时钟信号。晶振的频率选择根据设计需求来确定。 3. 电源:AT89C52的工作电压是5V,因此需要提供稳定的5V直流电源。可以使用直流电源模块或者电池等电源供应。 4. 复位电路:为了确保AT89C52在开机或复位时能够正常初始化,需要添加复位电路。一般是通过复位电路让复位引脚保持低电平,当电源供应稳定后才将其拉高。 5. 外部扩展器件:根据具体需求,可以在AT89C52最小系统中添加外部扩展器件,例如LED灯、蜂鸣器、LCD显示屏等,以便实现各种功能。 通过以上五个组成部分的构建,AT89C52最小系统可以实现基本的单片机功能,例如控制输入输出、编写简单的程序、进行数据处理等。当然,为了更好地满足实际需求,还可以在此基础上进行更多的功能扩展和优化。 ### 回答3: AT89C52是一种单片机,也被称为最小系统。最小系统是指单片机可以正常工作的最基本的硬件配置。 AT89C52最小系统包括以下几个主要组成部分: 1. AT89C52单片机:AT89C52是一款8位的单片机,具有51系列单片机的基本特性和功能。它内置了Flash存储器、RAM存储器、I/O口、定时器、串口等功能模块,可以进行数据处理和控制任务。 2. 外部晶振:AT89C52需要外部时钟源来提供主时钟信号,常用的外部晶振包括11.0592MHz和12MHz等,通过晶振提供稳定的时钟信号给单片机,使其能够正常运行。 3. 电源:最小系统需要提供合适的电源供电。一般情况下,AT89C52的工作电压为5V,可以通过连接5V电源来给单片机供电。 4. 电容及电阻:为了使晶振能够起振并提供稳定的时钟信号,最小系统通常还会连接一对电容和电阻。其中,电容用于稳定晶振的振荡频率,电阻则用于限制电流。 5. 外部连接引脚:为了使AT89C52能够与外部设备进行数据交换和控制,最小系统通常会引出AT89C52的I/O口引脚,以便可以连接按钮、LED等外部设备。 通过以上组成部分的搭配,AT89C52最小系统能够正常工作,实现单片机的基本功能。在该系统中,单片机可以接受外部输入信号、进行数据处理和运算,然后通过I/O口输出结果或控制外部设备的状态。最小系统的硬件配置可以根据具体需求进行扩展,在此基础上可以实现更复杂的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值