历史上的今天
返回首页

历史上的今天

今天是:2025年12月12日(星期五)

正在发生

2022年12月12日 | MCS-51单片机指令系统(1)

2022-12-12 来源:zhihu

指令系统概述


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


在实际开发应用中,由于指令系统与汇编语言开发的繁琐和开发效率低则应用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位可位寻址)只能用位寻址方式访问。


推荐阅读

史海拾趣

Deltrol Controls公司的发展小趣事

在电子设备的制造过程中,螺线管是不可或缺的元件之一。然而,传统的螺线管生产方式存在效率低下、质量不稳定等问题。Deltrol Controls通过引进先进的生产设备和技术,实现了螺线管的精细化生产。这一举措不仅提高了生产效率,而且保证了螺线管的质量稳定性。凭借这一优势,Deltrol Controls在电子行业中的竞争力得到了显著提升。

E-T-A Circuit Breakers公司的发展小趣事

在1980年代,E-T-A公司开始研发故障电流保护开关。这种设备能够检测和中断电气系统中的故障电流,有效防止电气设备的过载和短路。经过多年的技术积累和创新,E-T-A公司成功推出了具有高性能和可靠性的故障电流保护开关,并广泛应用于工业控制系统、建筑电气系统和住宅电气系统等领域。

柯爱亚(ceaiya)公司的发展小趣事

为了保持技术领先地位,柯爱亚不断加大研发投入,引进先进的研发设备和人才。公司在功率电感、变压器等领域取得了多项技术成果,并申请了多项专利。这些技术成果不仅提升了柯爱亚产品的竞争力,还推动了整个电子行业的发展。

Barnbrook Systems Limited公司的发展小趣事

为了保持技术上的领先地位,Barnbrook积极寻求与高校、研究机构的合作。通过与这些机构的深入合作,Barnbrook不仅获得了最新的科研成果和人才支持,还成功研发出了一系列具有创新性的电子产品。这些产品不仅提升了公司的技术实力,也为公司的长期发展注入了新的活力。

ELINA INDEK公司的发展小趣事

因美纳(Illumina)公司成立于2000年,起初是一家专注于基因测序技术的小型企业。在创始人Jay Flatley的领导下,公司成功研发出了一系列高性能、低成本的基因测序仪器,使得基因测序技术从昂贵的实验室研究工具转变为广泛应用的医疗诊断工具。这一技术突破不仅为因美纳赢得了市场份额,也为整个医疗行业带来了革命性的变化。

BAHCO公司的发展小趣事

在市场竞争日益激烈的背景下,BAHCO选择了与同样拥有悠久历史的美国Snap-on公司进行合作。这次强强联合不仅加强了双方在技术、市场等方面的互补优势,更为BAHCO打开了更广阔的市场空间。通过Snap-on的全球销售网络,BAHCO的产品得以进入更多国家和地区,进一步提升了公司的品牌影响力和市场竞争力。

问答坊 | AI 解惑

汽车设计制造全过程

对于大多数人来说,对车的欣赏基本都是整车,除了性能之外,汽车的外观和内饰是人们谈论最多的话题,因为这是对一辆车最直观的印象,所谓汽车设计,简单的理解是根据一款车型的多方面要求来设计汽车的外观及内饰,使其在充分发挥性能的基础上艺术化 ...…

查看全部问答>

wince下usb转串口问题

小弟最近在做wince上面的usb转串口驱动,用的是public下面的usbser,编译到系统里面后能识别usb转串口的线了,并模拟为串口1,但是操作的时候用一款usb转串口线只能收,发不出来,用另外一款收发都有数但是数不对现象就像是串口速率不一样,但是这 ...…

查看全部问答>

请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口?

请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口? 请教!ACER C300的EASYPORT 笔记本扩展接口一个 是否可以改装成USB接口? 还有如何提取内置在笔记本中的EASYPORT的驱动? 谢谢!13956302025  heroxgy@163.com&n ...…

查看全部问答>

【求助】64位的cpu和64位机的问题

64位的cpu是地址线的位数是64位,还是数据线的位数是 64位? 64位机呢?问题如上? 是64位机还是64位的cpu可以将内存扩展到2的64次方? 谢谢回答。…

查看全部问答>

初学arm问问题-中断返回后,返回处理器状态 的 问题

判断处理器状态的问题:         书上这样写的,不怎么理解。         ------------------         原文:当异常发生时,处理器自动切换到ARM状态,所以在异常 ...…

查看全部问答>

关于欠压保护?

SVSCTL|=VLDON; if (SVSCTL&BIT1)//为1时,欠压 { P2OUT&=~BIT0;//报警 LCDM9=0x20;//显示“欠压” } 这样能实现吗?刚开启就判断是不是判断不出来啊,有必要加个延时吗?如果延时沿多长时间呢? 谢谢啊!…

查看全部问答>

孙红雷“潜伏”北京现代4S店

ME是叮叮铛铛的雷丝,自认大哥的消息一直收录齐全~那个 呃 ……大家不要误会,我并不是来掏底的,我对大哥那是一个尊重加爱护加珍惜加倾慕!~咦~害羞~一切都是隐私所以不能像广大网民透露!但是大哥最近潜伏在4S店的事,ME却完全没有预料!实在 ...…

查看全部问答>

LM Flash Programmer 串口 出错

本想使用LM Flash Programmer 通过串口对LM3S6432下载程序,结果始终波特率不匹配。向大家咨询下,如何使用。在此先谢谢了。…

查看全部问答>

STM32L/stm8l系列详解

超低功耗STM32L/STM8L简介…

查看全部问答>