MCS-51单片机的指令系统基础知识1----定义、格式分类、常用符号和寻址方式

指令的定义
指令是指挥计算机执行操作的命令,一条指令对应着一种操作。
MCS-51指令系统使用44种助记符,它们代表33种功能,可以实现51种操作。指令助记符和操作数的各种可能的寻址方式的结合一共可构造出111条汇编指令。

指令的格式与分类
1. 按指令长度分类
指令可分为单字节指令(49条)、双字节指令(46条)和3字节指令(16条)三大类。
其中,单字节指令只有一个字节(8位),其操作码和操作数同在一个字节中;双字节指令的一个字节为操作码,另一个字节为操作数;3字节指令的操作码占1个字节,操作数占两个字节,其既可能是数据也可能是地址。
2. 按指令执行时间分类
指令可分为1个机器周期指令(64条)、2个机器周期指令(45条)和4个机器周期指令(2条)三大类。只有乘、除两条指令的执行实践为4个机器周期指令。
3. 按指令功能(即操作性质)分类
指令还可分为数据传输指令(29条)、算术操作指令(24条)、逻辑操作指令(24条)、控制转移指令(17条)和位操作指令(也称布尔处理指令,17条)五大类。

单片机指令系统的常用符号

	(1)Rn(n=0~7)——选定当前工作寄存器组的通用寄存器R0-R7;
	(2)Ri(i=1或0)——通用寄存器中用于间接寻址片内RAM单元的两个寄存器R0、R1;
	(3)@ ——间接寻址寄存器指针的前缀标志;
	(4)direct ——片内RAM或SFR的8位直接地址;
	(5)#data ——8位直接参与操作的立即数,其中立即数为8位二进制数;
	(6)#data16 ——表示16位直接参与操作的立即数(仅用于指令MOV DPTR,#data16),其中立即数为16位二进制数;
	(7)# ——立即数前缀;
	(8) addr16 ——16位目的地址,供LCALL和LJMP指令使用;
	(9)addr11 ——11位目的地址,供ACALL和AJMP指令使用;
	(10)rel ——用补码形式表示的8位二进制偏移量,取值范围为-128~+127,常用于相对转移指令;
	(11)bit ——片内RAM的位寻址区,或者是可以位寻址的SFR的位地址;
	(12)/ ——位取反前缀,/bit表示位地址bit 的内容取反后再参与运算;
	(13)(x)——由x所指定的某寄存器或某单元中的内容;
	(14)((x))——由x间接寻址存储器单元中的内容,即以x地址单元中的内容作为新地址的其单元中的内容;
	(15)$——当前指令存放的地址;
	(16)← ——指令的操作结果是将箭头右边的内容传送到左边;
	(17)→ ——指令的操作结果是将箭头左边的内容传送到右边;
	(18)↔ ——指令的两个操作数内容互相交换。

MCS-51单片机的寻址方式(7种)
一条指令由两个主要部分组成,即操作码和操作数
操作数决定CPU的操作性质,而操作数则规定以何种方式提供CPU进行操作所需的数据,即寻址方式
MCS-51单片机的指令系统提供了7种寻址方式,分别是立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址(或称基址寄存器加变址寄存器间接寻址)、相对寻址和位寻址。下面对这7种寻址方式分别进行解释:

1. 立即寻址
定义: 在指令中直接给出操作数,即操作数包含在指令中的寻址方式。
例如:MOV A,#61H;(A)←61H,将8位数据61H送入累加器A中。
特点:指令中直接含有所需的操作数,因此操作数实在程序存储器ROM中。该操作数是8位或16位,常常处在指令的第2或第2,3字节的位置上。
2. 直接寻址
	定义: 由指令直接给出操作数所在的存储器地址的寻址方式。
	例如: MOV A,60H;(A)←60H,将内部RAM中地址为60H单元里面的数据送入累加器A中。
	特点: 指令中含有操作数的地址。此地址表示为direct,该地址指出了参与操作的数据所在的字节单元地址,CPU可根据直接地址找到所需要的操作数。
	寻址范围: (1)片内RAM的低128个单元(00H~7FH)
	    	 (2)特殊功能寄存器SFR(80H~FFH)。此寻址方式是访问SFR的唯一寻址方式。如MOV A,P1;
3. 寄存器寻址
	定义:操作数在指定的寄存器中的寻址方式
	例如:INC R5;(R5)←(R5)+1,把寄存器R5中的`数据`加一后在送回到R5中。
	特点:由指令指出的某个寄存器的内容作为操作数。存放操作数的寄存器在指令代码中不占据单独的一个字节,而是嵌入到操作码字节中。
	寻址范围:(1)4组通用工作寄存器共32个工作寄存器Rn(R0-R7)
					(2)部分特殊功能寄存器SFR(A、B以及DPTR等)。
4. 寄存器间接寻址(简称间接寻址)
	定义:指令给出的寄存器中存放的是操作数的单元地址,即操作数在RAM中,而其单元地址就是由指令所指定的寄存器的值。
	例如:MOV A,@R0;(A)←((R0)),将R0中的内容所表示的内部RAM地址单元中的内容送给A。即R0中的是数据所在的地址,而操作数是该地址内的数。
	特点:指令给出的寄存器中存放的是操作数地址。寄存器间接寻址是一种二次寻找操作数地址的寻址方式。
	寻址范围:(1)内部RAM低128个单元(00H~7FH),只能使用R0或R1作间接寻址器。
				(2)外部RAM的64K字节的间接寻址(0000H~FFFFH),只能使用DPTR做间接寻址器。
				(3)对于外部低256单元RAM的访问,除可以使用DPTR外,还能使用R0或R1作间接寻址器。
				(4)堆栈区(只能设在内部RAM中)的堆栈操作指令PUSH(压栈)或POP(出栈)采用堆栈指针SP做间接寻址器。
5. 变址寻址(基址寄存器加变址寄存器间接寻址)
	定义:以累加器A作为变址寄存器,以程序寄存器PC或数据指针DPTR作为基址寄存器,这两者内容之和形成16位ROM地址的寻址方式。
	例如:指令MOVC A,@A+DPTR;(A)←((A)+(DPTR)),
		即若A的原有内容为0FH,DPTR的内容为2400H,该指令执行的结果是把程序存储器240FH单元的内容传送给A。
	特点:指令操作码中隐含作为基址寄存器用的DPTR或PC和作为变址用的累加器A。
		在CPU执行变址寻址指令时,先把基址地址(DPTR或PC的内容)和地址偏移量(A的内容)相加,以形成操作时所在的16位ROM地址,再由操作数地址找到操作数,并完成相应的操作。
	寻址范围:只能对程序存储器ROM进行寻址,主要用于查表性质的访问。
	说明:(1)该寻址方式是专门正对程序存储器ROM中表格数据的寻址方式,寻址范围可达64KB。
				(2)该寻址方式中的累加器A里存放的操作数地址相对基地址的偏移量范围为00H~FFH(无符号)
				(3)该寻址方式的指令只有两条查遍指令和1条散转指令:
			1)MOVC A,@A+PC;(A)←((A)+(PC)+1)
			2)MOVC A,@A+DPTR;(A)←((A)+(DPTR))
			3)JMP @A+DPTR;(PC)←((A)+(DPTR))
6. 相对寻址
定义:以程序计数器PC的当前值为基准(取出本条指令后的PC值),加上指令中给出的相对偏移量(rel)-128~127个字节形成新的转移目标地址。
例如:JC 80H;
	若C=0则PC值加2,若进位C=1,则(PC)←(PC)+2+80H,即以现行的PC为基地址加上80H得到转向地址。
特点:此寻址方式是为实现程序的相对转移而设计的,其指令码中含有相对地址的偏移量,能生成浮动代码。
若发生了相对转移,则转移的目的地址=指令地址+指令字节数+偏移量。
寻址范围及说明:(1)只能对程序存储器ROM中的指令进行寻址。
							(2)相对地址偏移量(rel)是一个带符号的8位二进制补码数据,其取值范围为-128~127.
7. 位寻址
定义:位寻址方式指令中给出的操作数是一个可单独寻址的位地址。
例如:MOV C,40H;(Cy)←(40H),即把位地址40H中的值送到进位位Cy。
特点:位寻址是直接寻址方式中的一种,它是对位寻址区域中的某一位的地址进行操作。
寻址范围:(1)内部RAM中的位寻址区,即位寻址区的低128B(00~FF)
					(2)SFR中的可寻址位,即SFR字节地址能被8整除的位寻址区高128B(80-FF)
在指令中位寻址的位地址bit可表示为4中形式,分别为:
1)直接使用位地址形式:MOV 05H , D7H ; (05H)←(D7H).其中,D7H为Cy的位地址,05H为片内RAM中20H地址单元的第5位。
2)字节地址加位序号的形式:MOV 20H.5 , D0H.7 ; (20H.5)←(D0H.7).其中,D0H.7为Cy的位地址,20H.5为片内RAM中20H地址单元的第5位。
3)位符号地址(位名称)的形式:ORL C , P ; (Cy)←((Cy)∧(P)).其中,Cy是PSW的第7位,P是PSW的第0位。
4)字节符号地址(字节名称)加位序号的形式:CPL PSW.7 ; (Cy)←(Cy取反)。

总结

序号寻址方式利用的变量寻址空间
1寄存器寻址R0~R7、A、B、C、DPTR内部的R0~R7、A、B、C、DPTR等
2直接寻址direct内部128字节RAM、SFR
3(寄存器)间接寻址@R0、@R1、SP、@DPTR片内RAM、片外RAM
4立即寻址#data、#data16ROM中的立即数
5基址加变址间接寻址@A+DPTR、@A+PCROM中指令相对跳转
6相对寻址PC+relROM中指令相对跳转
7位寻址bit内部RAM中的可寻址位、SFR中的可寻址位
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值