指令是指示计算机执行某种操作的命令,计算机能识别执行的只能是二进制代码,以二进制代码来描述指令功能的语言,称为机器语言。
由于机器语言不便于人们识别,记忆,理解和使用,因此便对每条机器语言指令用助记符号来形象表示,这就便形成了汇编语言。
一条指令是机器语言的一个语句,包括操作码字段和操作数字段。一台计算机所具有的全部指令的集合,称为这台计算机的指令系统。
不同的微处理器,其指令系统一般是不同的。
80c51单片机指令系统共有111条指令,具体特点如下:
1)执行时间短,单机器周期指令(64条),双机器周期指令(45条),而四机器周期指令只有2条;
2)指令编码字节少,单字节指令(49条),双字节指令(45条)和最长的三字节指令(17条);
3)位操作指令丰富(17条)。
为便于阅读指令,对mcs-51指令助记符的一些符号约定意义做以说明:
指令的基本格式及常用符号
指令的汇编语言形式是用助记符来表示一条指令,其基本形式为操作码+操作数。
操作码表示该指令将要做什么样的操作,操作数是该指令操作的对象,一般是操作所需要的数或所需要的数的存放地址。
指令的字节数
80c51单片机指令有单字节指令,双字节指令和三字节3种。
1)单字节指令单字节指令有49条,8位二进制代码中既包含操作码的信息,也包含操作数的信息;或8位二进制代码中只包含操作码的信息,而操作数的信息被隐含了。
例如:
机器码为1110 1xxx,其中1110 1为操作码,xxx为操作数n,若rn为r3,那么xxx=011,则该机器码为ebh。
例如:
机器码为04h,被隐含的操作数为累加器a。
2)双字节指令有45条,机器码的第一个字节表示操作码,第二个字节表示操作数。
例如:
3)三字节指令有17条,第一字节表示操作码,另两个字节是操作数。
例如:
指令的执行时间
mcs-51系列单片机指令执行时间有单周期指令,双周期指令和四周期指令。
汇编语言的语句结构
一般来讲,汇编语言的语句结构由5部分组成,即标号,操作助记符,目的操作数,源操作数和注释.
如下:
[]表示可选项;标号是用户设定的地址符号,它代表该指令机器码存放在存储器中第一个字节的地址。
标号必须以字母开头,气候跟1-8个字母或数字,并以“:”结尾。
80c51的寻址方式
寻址方式就是寻找操作数的方式,由于80c51有片内ram,片内rom,片外ram,片外rom 4个不同的存储区域,数据存储的方式十分灵活。
在用汇编语言编程时,数据的存放传送,运算都要通过指令来完成。
所以编程者必须自始至终都要十分清楚操作数的位置,以及如何将它们传送到适当的寄存器去参与运算,才能有效地完成汇编程序的编写。
80c51单片机有7种寻址方式,即寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,变址寻址,相对寻址,位寻址。
源操作数和目的操作数都有各自的寻址方式,下面以源操作数为例来讲述寻址方式。
1.立即寻址
操作数就在指令代码中,在操作码之后,是一个8位的二进制数或者16位的二进制数,称为立即数,这种寻址方式称为立即寻址。
例如:
在80c51系统中,采用#作为立即数的前缀。
例如:
2.直接寻址
直接寻址是指令中直接给出操作数所在单元的地址。
采用直接寻址的存储空间有:1)内部ram的低128字节(00h~7fh)2)位地址空间3)特殊功能寄存器,特殊功能寄存器只能用直接寻址方式操作
例如刚才说的例子就是直接寻址的方式。
在程序的转移,调用指令中,由于指令直接给出了目的地址,执行这些指令后,程序指针pc的内容将直接由指令给出的地址来更新,所以这些指令的寻址方式也可以归属为直接寻址。
3.寄存器寻址
由指令指出某一寄存器的内容为操作数,这种寻址方式称为寄存器寻址。
可以采用的寄存器有r0~r7,累加器a,寄存器b,数据指针dptr和布尔处理器的位累加器c。
例如:
指令中源操作数r0是寄存器寻址。该指令的功能是将工作寄存器r0中的内容传送到a中,如r0中的内容为44h,则执行该指令后,a的内容也为44h。
在mcs-51中寄存器寻址rn按所选定的工作寄存器r0~r7进行操作,指令机器码的低3位的8种组合000,001,....,110,111分别对应r0~r7。
例如:
这8条指令对应的机器码分别为e8h~efh。
4.寄存器间接寻址
指令中给出寄存器的名称,以寄存器的内容为地址再取一次数,该数才是真正的操作数,这种寻址方式称为寄存器间接寻址。
在80c51系统中,可以用作间接寻址的寄存器有r0,r1,以及数据指针寄存器dptr。
寄存器间接寻址对应的空间为:片内ram:采用@r0,@r1,或sp片外ram:采用@r0,@r1,或dptr
5.变址寻址
以dptr或pc为基址寄存器,累加器a为变址寄存器。把二者内容相加,结果作为操作数的地址,这种寻址方式称为变址寻址。
这类指令只限于访问rom,常用语查表操作和指令跳转。
例如:
6.相对寻址
相对寻址方式是以pc的内容为基地址,加上指令中给定的偏移量,所得结果作为转移地址送pc寄存器。
偏移量是8位带符号数的补码,真值在-128~+127之间。以下一条指令的pc值为起点,转移访问范围在-128~+127。
它用于访问程序存储器,常出现在相对转移指令中。
例如:
是一条累加器a为0就转移的双字节指令,则执行该指令时的当前pc为2052h,即当前pc值是相对转移指令取指结束时的值。
偏移量rel是有符号的单字节数。以补码表示,其值范围在-128~+127。
负数表示从当前地址向前转移,正数表示从当前地址向后转移。所以,相对转移指令满足条件后,转移的地址为:
7.位寻址
从本质上来说,位寻址也是直接寻址的一种形式。它的寻址对象是可寻址位空间中的一个位,而不是一个字节。
由于在使用上存在一些特殊性,故单独列出。位寻址方式的寻址范围是可寻址位,包含内部ram20h~2fh单元中的位和部分sfr位。
位操作指令中的位地址有4种表示方法:
1)直接地址,如00h
2)点操作符,如20h.0,psw.5
3)位名称,如f0
4)经伪指令定义过的字符名称,如user bit psw.5
区块链技术可以快速颠覆金融科技行业
化肥厂实验室建设招标方案的详细介绍及仪器说明
太阳能杀虫灯的介绍,它的优势是什么
博捷芯打破半导体切割划片设备技术垄断,国产产业链实现高端突破
ad7705应用电路图大全(六款ad7705典型应用电路)
一文详解80C51单片机的指令系统
半导体企业新顺微电子进入上市辅导阶段
魅族Pro7什么时候上市最新消息:黄章回归打造魅族Pro7!杀入高端品牌!
基于高通QCC3083蓝牙5.4的LE Audio 广播音箱方案
信号链中运用采样保持放大器(THA)帮助超出ADC采样带宽
STEP 7中FC和FB模块的三种保护方法
iPhone6S和iPhone7 哪个性价比更高?
手机卡顿怎么办?Android存储性能优化架构概述
低压运算放大器通过自举以实现高压信号和电源工作的应用
Batteriser:延长碱性电池8倍电池寿命
横焊的操作口诀_横焊的操作方法
浅谈驱动电平对于液晶光阀输出图像的影响
下雨天会影响手机信号的原因
贴片元器件有哪些特点
iPhone7s版本被跳过 苹果AR眼镜出世来补偿