51单片机学习日志-指令系统

发布者:BlossomWhisper最新更新时间:2024-08-22 来源: cnblogs关键字:51单片机  学习日志  指令系统 手机看文章 扫描二维码
随时随地手机看文章

3.1 指令系统概述

3.1.1 指令与指令系统

每个机器的指令系统都是固有的,无法改变

3.1.2 程序与程序设计

按预定要求编排的指令叫做程序

3.1.3 汇编语言

用助记符,操作数,标号编写的程序叫做汇编

二进制机器码翻译成汇编语言---反汇编

标准格式

1、标号

存放该指令的地址

必须字母开头,:号结尾

2、操作码

由指令系统的助记符组成(如MOV)

操作码和操作数间用,隔开

3、操作数

可以为:数字、操作数地址、立即数、标号、寄存器名

可分目的操作数和源操作数

4、注释

以;开头

3.1.4 伪指令(常用)

1、起点指令 ORG

ORG 地址(XXXXH)

给程序起始地址或数据块的起始地址赋值命令,可多次使用,以规定不同程序起始位置;

2、结束命令 END

END

汇编程序结束(必有)

3、定义字节命令 DB

标号: DB 字节常数或字符

从指定单元开始,定义若干个8位存储单元

1、若DB命令在其他源程序之后,则源程序的最后一条指令之后就时DB定义的数据表格

2、由ORG定义的数据块首址

4、定义字节命令 DW

标号:DW  字或字表

从指定单元开始,定义若干个字(双字节)

5、 定义空间命令 DS

标号:DS 数据或字符表达式

从指定单元开始,由数据或表达式确定保留若干个字节内存空间备用

6、 等值命令EQU

字符名称 EQU 数据或汇编符号

把一个数据或特定的汇编符号赋予标号段规定的字符名称(类似define)必须先定义后使用

7、数据地址赋值命令 DATA

字符名称 DATA 数据或表达式

此命令把数据地址或代码地址赋予标号段规定的字符名称,可以先使用后定义

8、 位地址符号命令 BIT

字符名称 BIT 位地址

把位地址赋予标号段的字符名称

3.1.5 MCS-51 指令系统的特点

1、布尔处理机

处理器

布尔运算器ALU

布尔累加器CY

布尔RAM

布尔IO口

布尔指令集

2、寻址方式

立即寻址

直接寻址

寄存器寻址

寄存器间接寻址

基址寄存器加变址寄存器的间接寻址

相对寻址

位寻址

3、指令分类

数据传送(29条)

算术运算(24条)

逻辑运算(24条)

控制转移(17条)

布尔处理(17条)

*描述指令的符号意义:

Rn

R0-R7 8个工作寄存器

Ri

R0-1 可做间址寄存器的2个寄存器

direct

8位内部数据存储单元的地址(自己定义)

#data

包含在指令中的8位立即数

#data16

包含在指令中的16位立即数

addr16

16位目的地址

addr11

11位目的地址

rel

8位带符号的偏移量

DPTR

数据指针地址,可做16位间址寄存器

bit

内部RAM或专用寄存器的直接寻址位

A

累加器

B

专用寄存器

C

进位或借位标志

@

间址寄存器或基址寄存器的前缀

/

位操作的前缀,表示取反

(X)

X中的内容

((X))

由X寻址的单元中的内容

<-

箭头左边的内容被右边的内容代替

3.2 MCS-51寻址方式

(寻址方式反应了计算机的性能)


3.2.1 立即寻址

1、寻址空间

程序存储器

2、指令形式

操作码 + 立即数

(立即数要在前面加#)

3.2.2 直接寻址

1、寻址空间

内部RAM的低128位字节

特殊功能寄存器SFR(直接寻址是唯一访问SFR的方式)

2、指令的三种形式

3.2.3 寄存器寻址

1、寻址空间

R0-R7

A、B、CY、DPTR

2、三种指令形式 ;eg:MOV A ,R3


3.2.4 寄存器间接寻址

1、寻址空间

内部RAM

外部数据存储器

2、指令三种形式 (指令前缀加@)

3.2.5 基址寄存器+变址寄存器间接寻址

1、寻址空间

程序存储器(@A+DPTR,@A+PC)

2、指令形式

3.2.6 相对寻址

1、寻址空间

程序存储器,利用指令修正PC指针的方式实现转移,即以程序计数器PC的内容为基地址,加上程序中的偏移量rel,做地址寻址

2、三种指令形式

3.2.7 位寻址

1、寻址空间

片内RAM 20H-2FH

SFR中12个能被8整除的字节地址

2、待填写

3.3 MCS-51 指令系统介绍

3.3.1 数据传送指令(29条)

片内传送 MOV(16条)

MOV  A , #16H

片外传送 MOVX(4条)

指令寻址方式为寄存器间接寻址,间接寻址寄存器为:Ri,DPTR(Ri为8位,DPTR为16位)

查表传送 MOVC(2条)

两个分别为以PC为基址加变址寻址以及以DPTR为基址加变址寻址

XCH、XCHD、SWAP交换指令(5条)

堆栈操作 PUSH、POP(2条)

进栈:PUSH

出栈:POP

3.3.2 算术运算指令(24条)

1、加法

ADD(4)

ADD A,#DATA

ADDC(4)

带进位加法(被加数里面加上PSW里面的进位符号CY)

INC(5)

增量,相当于X++;只有INC A 影响PSW

DA(1)

十进制调整指令

2、减法

SUBB(4)

SUBB A ,Rn    -> A <- (A) - (Rn) - CY

DEC(4)

相当于i--

3、乘除

MUL

计算结果放在累加器AB中,两个单字节相乘得出双字节

DIV

计算结果放在累加器AB中,A放(A)/(B)的商,B放余数

3.3.3 逻辑运算指令(24条)

1、逻辑运算指令ANL(6条)

长用于给字节中某几位置0

2、逻辑或指令ORL(6条)

长用于给字节中某几位置1

3、逻辑异或XRL(6条)

用于让字节中某几位取反

4、累加器清除与求反指令(2条)

CLR

累加器清零

CPL

累加器内容按位取反

5、移位指令(4)

RL

内容左循环一圈

RLC

内容+上PSW中CY位循环一圈

RR

内容右循环一圈

RRC

内容+上PSW中CY位循环一圈

3.3.4 控制转移指令(17条)

1、无条件转移指令

长转移

LJMP

LJMP + add16 对64k的rom想跳哪里跳哪里

绝对转移

AJMP

AJMP + addr11

短转移

SJMP

SJMP + rel rel为相对偏移量,原理:PC <- (PC)+2+rel

间接长转移

JMP

把累加器A的8位无符号数与DPTR的16位数相加,其和送入PC,控制程序转移到目的地址,指令不改变A和DPTR的值

2、条件转移指令

JZ rel

累加器不为0则跳转

JNZ rel

累加器不为0则跳转

CJNE A,direct,rel

A与直接地址比较,不相等就跳

CJNE Rn,#data,rel

A与立即数比较,不相等就跳转

CJNE @Ri,#data,rel

间接RAM与立即数比较,不相等就跳转

CJNE Rn,direct,rel

寄存器与直接地址比较,不相等就跳转

DJNZ Rn,rel

寄存器减一不为0则跳转

DJNZ direct,rel

直接地址内容减一不为0则跳转

3、子程序调用及返回指令

LCALL addr16

长调用子程序,52内部随便跳

ACALL addr11

绝对调用子程序

RET

子程序返回

RETI

中断返回

4、空操作

    NOP

3.3.5 布尔处理类指令(17条)

1、布尔传送指令

(直接把单独位送到PSW C位里面)

MOV  C      BIT

MOV  BIT   C

2、布尔状态控制

CLR    C

清除进位

CLR    BIT

清除BIT位

SETB  C

置位进位

SETB  BIT

置位BIT位

CPL    C

C位取反

CPL    BIT

BIT位取反

3、布尔逻辑运算

ANL  C  , BIT

C 与 BIT

ANL  C  , /BIT

C 与 /BIT(/BIT表示对BIT的取反值)

ORL  C,  BIT

C 或 BIT

ORL  C,  /BIT

      C 或 /BIT

4、布尔条件转移

JC rel

进位为1则转移

JNC rel

进位不为1则转移

JB bit rel

直接位为1则转移

JNB bit rel

直接位不为1则转移

JBC    bit rel

直接位为1则转移并清除该位


关键字:51单片机  学习日志  指令系统 引用地址:51单片机学习日志-指令系统

上一篇:51单片机串口应用实例(汇编)
下一篇:51单片机串口通信原理讲解

推荐阅读最新更新时间:2026-03-19 10:46

【单片机】【学习日志51单片机学习日志[Day1、2022.1.09]
第一部分 一、单片机介绍: 1、基础知识 单片机,英文Micro Controller Unit,简称MCU; 内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能 单片机的任务:信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制 单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。 在性能上,与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用; 同时,学习使用单片机是了解计算机原理与结构的最佳选择 2、单片机的应用领域 单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、
[单片机]
【单片机】【<font color='red'>学习</font><font color='red'>日志</font>】<font color='red'>51单片机</font><font color='red'>学习</font><font color='red'>日志</font>[Day1、2022.1.09]
MCS-51单片机指令系统(1)
指令系统概述 指令是计算机用于控制各种功能部件完成的某一特定动作的指示和命令。一台计算机能识别和执行的指令集合即为其指令系统。指令系统是一套控制计算机执行操作的编码,通常称为机器语言。机器语言是计算机唯一能识别和执行的指令。指令系统由硬件决定,且不具有通用性。汇编语言可以准确地计算出控制操作时间并灵活地实施控制,及高效开发必须掌握指令系统和汇编语言。 在实际开发应用中,由于指令系统与汇编语言开发的繁琐和开发效率低则应用C语言开发或者直接应用固件集成库开发提高开发效率和时间。但是对于单片机及其他硬件开发过程,开发过程的调试和资源应用都应对于汇编和指令系统的熟悉才能真正的高效开发完成调试达到目的。 常用单位和术语 位(
[单片机]
MCS-51单片机指令系统(3)
指令按寻址方式分有 7种寻址方式,直接寻址(direct)、立即寻址(#20H) 、寄存器寻址(Rn)、寄存器间接寻址(@Ri)、相对寻址(rel)、寄存器变址寻址(@A+PC)、位寻址 ( ACC.1) 指令按功能上分有5种 ,传送类指令 、算术运算类指令、逻辑运算及移位类指令、控制转移类指令、位操作类指令。其指令三大属性:功能属性、空间属性(指令站用的字节数)、时间属性(指令执行的机器周期数)。 一、数据传送指令(28): 使用最频繁的一类指令,通用格式: MOV 目的操作数 , 源操作数 属“复制”性质,而不是“搬家”。数据传送类指令不影响标志位:Cy、Ac和OV,影响奇偶标志位P。 1.内部RAM数据传送指令
[单片机]
MCS-51单片机指令系统(4)
某些指令说明 -“读引脚”和“读锁存器”指令的区别 关于并行I/O口的“读引脚”和“读锁存器”指令的区别 例如,当P1口的P1.0引脚外接一个发光二极管LED的阳极,LED的阴极接地。 若想查看一下单片机刚才向P1.x脚输出的信息是“0”还是“1”,如果直接读引脚,结果显然错误。 -“读引脚”和“读锁存器”指令的区别 正确做法是读D锁存器的Q端状态,那里储存的才是前一时刻送给P1.0的真实值。就是说,凡遇“读取P1口前一状态以便修改后再送出”的情形,都应当“读锁存器”的Q端信息,而不是读取引脚的信息。 当P1口外接输入设备时,要想P1口引脚上反映真实的输入信号,必须要 设法先让该引脚内部的场效应管截止才行,否则当场
[单片机]
MCS-<font color='red'>51单片机</font><font color='red'>指令系统</font>(4)
STM32学习日志——定时器中断实验
今天学习的是通用定时器及其中断,首先是内部时钟的选择,定时器的时钟Tclk是由APB1时钟乘以1或2决定的,至于是1还是2,要看APB1的分频系数(AHB/APB1),如果为1,则乘以1,否则乘以2。接着就可以根据我们想设定的时间Tout,去配置ARR跟PSC,这两个数是存在16位的寄存器,所以他们的范围为(0-65535),在这个范围内任意取值,满足公式即可。如果我么要配置500ms,可将ARR配置为2499,PSC配置为14399。也就是定时器计数的一个周期为500ms。(ARR为自动重装载值,PSC为Tclk的预分频系数) 根据步骤去写程序就很简单了。 实现功能:通过定时器的中断控制一个绿灯翻转,时间为500ms
[单片机]
STM32<font color='red'>学习</font><font color='red'>日志</font>——定时器中断实验
STM32学习日志——PWM输出实验
今天学习的是通用定时器的比较输出功能,也就是PWM;从它的工作过程图中很容易看出,就是计数器与比较值CCRx作比较,可以产生对应的IO口逻辑。而具体的对应关系需要对相应的寄存器进行配置。1)首先是选择工作模式,即对CCMR1的OC1M 配置,模式1是计数器小于比较值为有效电平,模式2是计数器大于比较值为有效电平。2)其次配置输出极性,0为高电平有效,1为低电平有效。3)使能比较输出。 在频率确定的情况下(上一节课有提到,通过预分频系数来设定),PWM的周期是由ARR自动重装载确定,占空比是由CCRx确定,通过对这两个参数的修改,就可以得到我们想要的脉冲波。 根据下面的步骤就可以输出PWM,因为使用的是PB5端口,所以需要开启T
[单片机]
STM32学习日志——RTC实时时钟
以前刚买手机时,有一个困惑,为什么时钟拔掉电池后时间就暂停了,而手机拔掉电池后,时间照样在走,为了证明是否是联网的原因,将网络关掉后还是一样。后来学了单片机才明白系统有一个实时时钟,由一个小纽扣电池供电。手机应该也是类似的原因。 首先RTC的时钟源由RCC_BDCR的RTCSEL位控制,一般选择LSE振荡器,接着通过RTCPRL位将其分频,假设LSE为32.768kHZ,则PRL写入32767可得到周期为1秒的信号。而RTC_DIV是一个递减的计数器,用PRL的数据装载,每次归零后重新装载,通过读取DIV的当前值,可以获得更精确的时间,比如DIV的当前值为3276,说明还有(3276/32767=0.1s)完成一个周期,说明这个周
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved