汇编指令介绍

一、汇编指令分类

汇编指令总共有7种寻址方式,111条指令!

  • 字节数
    • 单字节指令:49条
    • 双字节指令:46条
    • 三字节指令:16条
  • 运算速度
    • 单周期指令:65条
    • 双周期指令:44条
    • 四周期指令:2条
  • 功能
    • 数据传送类:29条
    • 算术运算类:24条
    • 逻辑运算类:24条
    • 控制转移类:17条
    • 位操作类:17条

二、汇编的指令格式

【标号:】 助记符 【操作数】 【;注释】

  • 标号: 表示该指令的位置,相当于标记该指令在ROM中存储的位置;
  • 助记符: 这是一条指令中必不可少的部分;
  • 操作数: 可以有多个,或者没有,需要根据指令来确定;
  • 注释: 用来解释所写的语句的含义,或者一些对程序的描述,可以根据需要来给出。

三、汇编指令种常用符号说明

  • Rn: 工作寄存器中的寄存器 R0…R7 中之一
  • Ri: 工作寄存器中的寄存器 R0 或 R1
  • #data: 8位立即数
  • #data16: 16位立即数
  • direct: 片内RAM 或 SFR 的地址(8位)
  • @: 间接寻址寄存器
  • Bit: 片内RAM 或 SFR 中可以位寻址的位地址
  • addr11: 11位目的地址
  • addr16: 16位目的地址
  • Rel: 补码形式的8位地址偏移量
  • $ : 当前指令首字节所在地址
  • X: 片内RAM的直接地址或寄存器
  • (X): 相应地址单元中的内容
  • ←: 箭头右边的内容送入箭头左边的单元内
  • →: 箭头左边的内容送入箭头右边的单元内

四、数据传送类指令(29条)

指令助记符

MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP

以累加器为目的操作数的指令(4条)

MOV A, Rn    		;Rn→A
MOV A, direct		;(direct)→A
MOV A, @Ri	   		;(Ri)→A
MOV A, #data			;data→A

以寄存器Rn为目的操作数的指令 (3条)

MOV Rn, A			;A →Rn	
MOV Rn, direct		 ;(direct)→Rn
MOV Rn, #data		;data→Rn

以直接地址为目的操作数的指令(5条)

MOV direct, A		;A→(direct)
MOV direct, Rn		;Rn→(direct) 	
MOV direct1,direct2	
MOV direct, @Ri		;(Ri) →(direct) 
MOV direct, #data 	;data→(direct)

以间接地址为目的操作数的指令(3条)

MOV @Ri, A          ;A →(Ri)
MOV @Ri, direct		;(direct) →(Ri)
MOV @Ri, #data		;data →(Ri)

十六位数的传递指令(1条)

MOV DPTR, #data16

8051是一种8位机,这是唯一的一条16位立即数传递指令。
功能: 将一个16位的立即数送入 DPTR 中去。其中高8位送入 DPH,低8位送入 DPL。

累加器A与片外RAM之间的数据传递类指令(4条)

MOVX A, @Ri
MOVX @Ri, A
MOVX A, @DPTR
MOVX @DPTR, A

​ 在51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。
​ 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。

读程序存储器指令(2条)

MOVC A, @A+DPTR
MOVC A, @A+PC

本组指令是将ROM中的数送入A中。本组指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格。说明: 查找到的结果被放在A中,因此,本条指令执行前后,A中的值是不相同的。

堆栈操作(2条)

PUSH  direct    ;SP ← SP+1,(SP) ← (direct)
POP   direct    ;(direct) ← (SP), SP←SP-1

第一条为压入指令,就是将direct中的内容送入堆栈中;
第二条为弹出指令,就是将堆栈中的内容送回到direct中。

交换指令(5条)

XCH   A, Rn	    	;A←→Rn
XCH   A, direct   	;A←→(direct)
XCH   A, @Ri		;A←→(Ri)
XCHD  A, @Ri	   	;A.3~A.0←→(Ri).3~(Ri).0
SWAP  A		    	;A.3~A.0←→A.7~A.4

五、算术运算类指令(24条)

助记符

ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV

加法指令

1.不带进位位的加法指令(4条)

ADD A,#data 		;A+data→A
ADD A,direct 		;A+(direct )→A
ADD A,Rn 		    ;A+Rn→A
ADD A,@Ri 			;A+(Ri)→A

2.带进位位的加法指令(4条)

带进位位的加法指令常用于多字节的加法指令中

ADDC A,Rn			;A+Rn+CY→A
ADDC A,direct		;A+(direct )+CY→A
ADDC A,@Ri			;A+(Ri)+CY→A
ADDC A,#data		;A+data+CY→A

3. 加1指令(5条)

INC  A			;A+1→A,影响P标志
INC  Rn			;Rn+1→Rn
INC  direct		;(direct)+1→(direct)
INC  @Ri		;((Ri))+1→((Ri))
INC  DPTR		;DPTR+1→DPTR

4. 十进制调整指令(1条)

在进行BCD码加法运算时,跟在ADD和ADDC指令之后,用来对BCD码加法运算结果进行自动修正。

DA  A

例:A = 0001 0101 BCD(代表十进制数15)

ADD  A,#8	;执行完之后,A = 1DH
DA  A		;调整后,A = 23H

减法指令

1.带借位的减法指令(4条)

SUBB A,Rn	     	;A-Rn-CY→A
SUBB A,direct 		;A-(direct )-CY→A
SUBB A,@Ri	     	;A-(Ri)-CY→A
SUBB A,#data		;A-data-CY→A

你可能感兴趣的:(杂物间)