MCS-51单片机指令系统(1)

发布者:淡雅时光最新更新时间:2022-12-12 来源: zhihu关键字:MCS-51  单片机  指令系统 手机看文章 扫描二维码
随时随地手机看文章

指令系统概述


指令是计算机用于控制各种功能部件完成的某一特定动作的指示和命令。一台计算机能识别和执行的指令集合即为其指令系统。指令系统是一套控制计算机执行操作的编码,通常称为机器语言。机器语言是计算机唯一能识别和执行的指令。指令系统由硬件决定,且不具有通用性。汇编语言可以准确地计算出控制操作时间并灵活地实施控制,及高效开发必须掌握指令系统和汇编语言。


在实际开发应用中,由于指令系统与汇编语言开发的繁琐和开发效率低则应用C语言开发或者直接应用固件集成库开发提高开发效率和时间。但是对于单片机及其他硬件开发过程,开发过程的调试和资源应用都应对于汇编和指令系统的熟悉才能真正的高效开发完成调试达到目的。


常用单位和术语


位(bit):位是计算机所表示的最小的最基本的数据单位。由于计算机使用的是二进制数,因此位就是一个二进制数。


字节(byte):一个连续8位的二进制数码称为一个字节,即1byte=8bit。


字(word):通常16位二进制数码组成,即1word=2byte=16bit。


字长:字长是计算机一次处理二进制的位数。(MCS-51是8位单片机,字长就是8位)


汇编语言指令格式


指令的表示方式称为指令格式,它规定了指令的长度和内部信息的安排。完整的指令格式如下:


[标号:] 操作码 [操作数],[操作数],[操作数] [;注释]


注:[]项是可选项;


标号:本条指令的起始地址的符号,也称为指令的符号地址,代表该条指令在程序编译时的具体地址,标号可以被其他语句调用。


操作码:又称为指令助记符,对应的英文构成,是指令语句的关键。


操作数:可以是具体数据,也可以是具体数据存放的地址。


例: ORG 0100H


START:MOV A,#78H


···················


ORG 0500H


LP: MOV R0,#80H


指令系统中的常用符号:


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


Ri 当前寄存器区中可作间接寻址寄存器的2个寄存器R0、R1(i=0,1)。


Direct 直接地址,即8位的内部RAM或特殊功能寄存器的地址。


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


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


rel 相对转移指令中的偏移量,为8位的带符号补码数。


DPTR 数据指针,可用作16位的数据地址寄存器


bit 内部RAM或特殊功能寄存器中的直接寻址位。


C(或Cy) 进位标志位或位处理机中的累加器。


addr11 11位目的地址


addr16 16位目的地址


@ 间接寻址寄存器前缀,如@Ri,@A+DPTR


(X) X中的内容。


((X)) 由X寻址的单元中的内容。


→ 箭头右边的内容被箭头左边的内容所取代。




指令系统的寻址方式


在计算机中,说明操作数所在的地址的方法,或指令按地址获得操作数的方式,称为指令的寻址方式。指令的执行首先要按照地址寻找操作数,指令再对操作数进行操作。操作结果还要按照地址存入相应的存储单元和寄存器中。程序实际就是不断寻找操作数然后执行操作的过程,将操作结果根据地址存入相应的存储器和寄存器中的过程。寻址方式越多,计算机灵活性越强,指令系统就越复杂。


MCS-51操作数可以存放片内ROM/RAM和片外ROM/RAM中,也可以存储在特殊功能寄存器中。总共提供了7种寻址方式。


寄存器寻址方式

操作数在寄存器中MOV A,Rn ;(Rn)→A,n=0~7表示把存储器Rn的内容传送给累加器A。


寻址范围:


(1)4组通用工作寄存区共32个工作寄存器。


(2)部分特殊功能寄存器,例如A,B以及数据指针寄存器DPTR等。


2.直接寻址方式


操作数直接以单元地址形式给出:MOV A , 40H


寻址范围


(1)内部RAM的128个单


(2)特殊功能寄存器。除了单元地址形式外,还可用寄存器符号的形式给出。例如:MOV A,80H与MOV A,P0是等价的。


3.寄存器间接寻址方式


寄存器中存放的是操作数的地址,在寄存器前加前缀标志“@”。访问内部RAM或外部RAM的低256个字节时,只采用RP或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作间址寄存器


4.立即寻址方式


操作数在指令中直接给出,需在操作数前面加前缀“#”。例如:


MOV A , #40H


5.基址寄存器加变址寄存器间址寻址方式


本寻址方式是用于访问程序存储器的数据表格,以DPTR(数据指针)或PC作基址寄存器,以累加器A作为变址寄存器,以两者相加作为16位地址作为操作数地址,以达到访问数据表格的目的。例如:指令MOVC A,@A+DPTR其中A的原有内容位05H,DPTR的内容为0400H,该指令执行的结果就是把程序存储器0405H单元的内容传送给A。说明:


(1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围可以达到64KB.


(2)本寻址方式的指令只有3条:


MOVC A,@A+DPTR;


MOVC A,@A+PC;


JMP @A+DPTR;


6.位寻址方式


MCS-51有位处理功能,可以对数据位进行操作。例如:MOV C,40H 是把位40H的值送到进位位C。


寻址范围包括:


(1)内部RAM中的位寻址区,单元地址为20H~2FH。位有两种表示方法:40H和单元地址加上位(28H).0,是指28H单元中的最低位。


(2)特殊功能寄存器中的可位寻址如下4种:


a.直接使用位寻址。例如PSW.5的位寻址为0D5H。


b.位名称的表示方法,例如PSW.5是F0的标志位,可使用F0表示该位。


C.单元地址加位数,例如(0D0H).5。


d.特殊功能寄存器符号加位数,例如PSW.5。


7.相对寻址方式


本寻址方式为了解决程序转移指令而设计的,作为转移指令而采用(相对寻址只对程序存储器ROM进行寻址)。在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址:


目的地址=转移指令所在的地址 + 转移指令的字节数 + rel


偏移量rel是一带符号的8位二进制数补码数 。范围是:–128 - +127 向地址增加方向最大可转移(127+转移指令字节)个单元地址,向地址减少方向最大可转移(128-转移指令字节)个单元地址。

7种寻址方式及寻址空间,见表如下。


指令中的源操作数可以使用上面的任意一种,目的操作数只能使用除立即寻址外的其他6种寻址方式。片内RAM(低128B)区可采用直接寻址,寄存器寻址、寄存器间接寻址方式访问。片内SFR(RAM区的高128B)只能采用直接寻址方式访问。片外RAM区只能采用寄存器间接寻址(R0,R1,DPTR作为间址寄存器)访问方式。程序存储器ROM可以采用直接寻址、相对寻址、基址加变址寄存器间接寻址。位寻址(片内RAM的20H~2FH单元的128位及SFR区83位可位寻址)只能用位寻址方式访问。


关键字:MCS-51  单片机  指令系统 引用地址:MCS-51单片机指令系统(1)

上一篇:MCS-51单片机指令系统(2)
下一篇:MCS-51 单片机的硬件结构

推荐阅读最新更新时间:2024-11-17 16:09

基于BASIC语言的BASCOM-8051开发环境单片机编程系统
BASCOM-8051开发环境是以BASIC语言为基础的单片机编程系统,具有易学易用、功能强大、开发周期短等特点。   一、命令分类示例   1、伪指令   伪指令是一些对开发环境的设置指令,如:$Large是说明应用程序大于2K;$Asm~$End Asm是使用汇编语言;$CrySTal是说明单片机应用系统中的时钟频率等等。   2、一般命令   这一类命令和BASIC语言中的命令用法、功能是一样的。如:For、To、Step、If、Else、End If、While……Wend、Select Case等,初学者十分容易掌握。   3、针对单片机硬件的命令   主要提供了直接对单片机及其外部硬
[单片机]
51单片机中的周期
首先明确几个概念:时钟周期、振荡周期、状态周期、机器周期、指令周期 1、时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在单片机中也就等于晶振的倒数。 51单片机中把一个时钟周期定义为一个节拍(用P表示),2个节拍定义为状态周期(用S表示) 时钟周期是单片机中最小的时间单位。 eg:12M晶振的单片机,时钟周期=振荡周期=1/12 us。 2、机器周期:定义为完成一项基本操作所需要的时间,称为机器周期。 在计算机中,为了方便管理,把一条指令的执行过程分为若干个阶段,每个阶段去执行一项基本操作。 如:取指令,存储器读,存储器写等。 在51单片机中1个机器周期由6个状态周期组成,也就是12个时钟周期=12
[单片机]
51<font color='red'>单片机</font>中的周期
基于单片机的心肺听诊技能训练系统设计方案
随着社会的发展, 医疗体制的改革, 媒体的宣传, 民众的法律意识大大加强, 一系列医疗法规的出台, 进一步明确了病人的各项权益。病人, 这一以往传统医学教学的主体更多的选择拒绝配合教学工作。   而近年来医疗纠纷的增多与医患关系的紧张, 出于自身利益的考虑, 医院的教学性能不断削弱。医学院校在临床医学教育中的常规模式是: 理论教学+ 单项技能训练-- 见习--临床实习。但由于种种原因, 见习不能有效开展, 从而导致“理论教学+ 单项技能训练”这一教学模式的形成。基于以上现实情况, 医学院校内教学的尴尬局面迫切需要改变。将“ 模拟教学”引入校内教学流程, 形成“理论教学+ 单项技能训练——模拟教学——临床实习”新型的临床医学教
[工业控制]
基于<font color='red'>单片机</font>的心肺听诊技能训练系统设计方案
单片机键盘处理程序设计举例
1、键盘与单片机的连接 键盘连接 图3 单片机与键盘接口图 图4 2、通过1/0口连接。将每个按钮的一端接到单片机的I/O口,另一端接地,这是最简单的办法,如图3所示是实验板上按钮的接法,四个按钮分别接到P3.2 、P3.3、P3.4和P3.5。对于这种键各程序能采用持续查询的办法,功能就是:检测是否有键闭合,如有键闭合,则去除键抖动,判断键号并转入对应的键处理。下面给出一个例程。其功能很简单,四个键定义如下: P3.2:开始,按此键则灯开始流动(由上而下) P3.3:停止,按此键则停止流动,所有灯为暗 P3.4:上,按此键则灯由上向下流动 P3.5:下,按此键则灯由下向上流动 Up
[单片机]
<font color='red'>单片机</font>键盘处理程序设计举例
51单片机之定时器/计数器应用实例(方式0、1、2、3)
硬件:STC89C52RC 开发工具:Keil uVision4 对于刚接触单片机的同学来说可能会对定时器/计数器的应用很蒙圈,特别是初值的计算和各种定时方式的选择。下面希望能给你带来一个清晰的思路。 定时器:一般用于软件计时,给定时器设置一个时间,时间到了系统停止当前的工作跳转到事先定义好的定时器中断函数里,函数里可以做一些周期性的事情。 计数器:一般用于检测外来脉冲信号,给计数器设置一个次数,次数到了系统停止当前的工作跳转到事先定义好的计数器中断函数里,函数里做相应的事情。 先说一下相关的寄存器,也可以直接跳过,看后面的实例分析。 配置定时器或者计数器就是对相应的寄存器进行赋值,下面是相关的寄存器描述:
[单片机]
51<font color='red'>单片机</font>之定时器/计数器应用实例(方式0、1、2、3)
C8051F与80C51系列单片机的不同初始化
1 引言 近30年来,世界各主要电子元器件生产厂商纷纷推出自己各具特色的单片机产品。而在百花齐放的单片机家族中,80C5l系列一直扮演着重要的角色。该单片机在教学、科研等领域已经成为入门单片机并成为单片机应用的首选,该产品以其易读性好、扩展能力强而著称,从而成为广大从事单片机开发者最熟悉、最具代表的机型。但人们往往在熟悉80C51单片机之后又选择别的系列单片机开发产品,这是因为80C51具有运算速度慢、功耗大、内部资源少等不足,所以限制了其使用范围。Cygnal公司推出的C805lF系列单片机既弥补了80C51系列的不足,又与MCS—5l指令集兼容。C805lFxxx系列单片机是完全集成的混合信号系统级芯片,具有与8051指令集
[应用]
PIC单片机:温感器ds18B20 C语言代码
/*温感器 采用天祥温度转换模块算法 程序完整版本的下载地址: http://www.51hei.com/f/ds1820pic.rar */ #include pic.h __CONFIG(0X3B31); #define uint unsigned int #define uchar unsigned char #define DQ RC1 #define DQ_DIR TRISC1 #define DQ_HIGH() TRISC1=1 #define DQ_LOW() DQ=0;TRISC1=0 unsigned char shi; //整数十位 unsigned char ge; //整数个位 uns
[单片机]
PIC单片机与AD5410芯片控制系统输出4-20mA电流信号的设计
仪表、传感器输出的电流信号多为4-20mA,为什么是4-20mA呢?因为4-20mA的传感器多为两线制,即信号线和电源线公用两根线,如果起点是0mA就这导致无法区分信号是0mA,还是传感器不工作;另外,起点是4mA也利于系统判断传感器是否掉电或者是短线。 那4-20mA的电流信号该如何产生呢,在数字电路高度发展的今天以单片机为核心的系统比比皆是,但是单片机是数字信号,而电流是模拟信号,这就需要用到DA转换,即数字信号转换为模拟信号。 目前,单片机要控制系统输出4-20mA的电流信号的常用方案为: 今天要推荐一款芯片:AD5410,该芯片是ANGLOG DEVICE生产的,单通道12位串行输入的DAC芯片,与单片机的通信方式
[单片机]
PIC<font color='red'>单片机</font>与AD5410芯片控制系统输出4-20mA电流信号的设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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