51汇编指令大全

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51汇编指令大全

Rn: 表示当前寄存器区的8个工作寄存器R0~R7

Ri: 表示当前寄存器区的R0或R1,可作地址指针即间接寻址寄存器(i=0或1)

@: 为间接寄存器或基址寄存器的前缀.

Direct: 表示8位内部数据存储单元的地址.它可以是内部RAM的单元地址

0~127.

特殊功能寄存器SFR的地址(128~255)或名称,

A: 累加器ACC.

B: 特殊功能寄存器B,用于MUL和DIV指令中.

C: 进位位Cy.

#data: 表示包含在指令中的单字节(8位)立即数.如果用16位进制表示,后缀字母为”H”,数据范围00~0FFH,不得一字母开头;如果用16进制表示无须任何后缀,但必须在0~255之间.

#data16: 表示包含在指令中的双字节(16位)立即数.

Adda16: 表示16位的目的地址.用于LCALL和LJMP指令中,目的地址范围是从0000H~FFFFH的整个64KB存储地址空间.

Adda11: 表示11位的目的地址.用于ACALL和AJMP的指令中,目的地址必须和下一条指令第一个字节同处一页.

Rel: 表示8位带符号的相对偏移量.用语SJMP和所有的条件转移指令中.偏移量相对于下一条指令的第一个字节计算,在-128~+127范围内取值.

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

/: 加在位操作的前面,表示对该位进行非运算.

bit: 表示内部可寻址位或特殊功能寄存器中的直接寻址位.

(x): 寄存器或地址单元中的内容.

((x)): 用x间接寻址的单元中的内容.

<-: 表示将箭头右边的内容传送至箭头的左边.

$: 当前指令的地址.

单片机指令系统

(一) 内部数据传送指令

(1) 以累加器A为目的的传送指令:

MOV A, #data ;(A)<-data

MOV A, direct ;(A)<-(direct)

MOV A, Rn ;(A)<-(Rn)

MOV A, @Ri ;(A)<- ((Ri))

(2) 以通用寄存器Rn为目的的传送指令:

MOV Rn, A ;(Rn)<-(A)

MOV Rn, direct ;(Rn)<(direct)

MOV Rn, #data: ;(Rn)<-data

(3) 以直接地址为目的的传送指令:

MOV direct, A ;(direct)<-(A)

MOV direct, Rn ;(direct)<-(Rn) MOV direct, direct2 ;(direct)<-(direct2) MOV direct, @Ri ;(direct)<-((Rn)) MOV direct, #data ;(direct)<-data (4) 以寄存器间接地址为目的的传送指令:

MOV @Ri, A ;((Ri))<-(A)

MOV @Ri, direct ;((Ri))<-(direct)

MOV @Ri, #data ;((Ri))<-data

(二) 数据指针赋值指令(16位数据传送指令)

MOV DPTR, #data16;

(三) 片外数据传送指令

MOVX A, @Ri ;(A)<-((Ri))片外

MOVX A, @DPTR ;(A)<-((DPTR))片外

MOVX @Ri, A ;((Ri))片外<-(A)

MOVX @DPTR, A ;((DPTR))片外<-(A)

(四) ROM数据访问指令(查表指令)

MOVC A, @A+DPTR ;(A)<-((A)+(DPTR))rom

MOVC A, @A+PC ;(PC)<-(PC)+1,(A)<-((A)+(PC))rom (五) 堆栈操作指令

PUSH direct ;(SP)<-(SP)+1,(SP)<-(direct)

堆栈指针先加1,将数据压入栈顶

POP direct ;(direct)<-(SP),(SP)<-(SP)-1

将数据从栈顶弹出存入direct,SP再减1

(六) 数据交换指令

(1)整字节(8位)交换指令:

XCH A, Rn ;A和Rn中的数互换

XCH A, direct ;A和direct单元中的数互换

XCH A, @Ri ;A和Ri间址单元中的数互换

(2)半字节交换指令:

XCHD A, @Ri ;A的低4位Ri间接单元的低4位互换,

高4位不动

(3)累加器高低半字节交换指令:

SWAP A, ;A的高4位(D7~D4)和低4位(D3~D0)互换

(七) 加法指令

(1)不带Cy加法指令:

ADD A, Rn ;(A)<-(A)+(Rn)

ADD A, direct ;(A)<-(A)+(direct)

ADD A, @Ri ;(A)<-(A)+((Ri))

ADD A, #data ;(A)<-(A)+data

(2)带进位加法指令:

ADDC A, Rn ;(A)<-(A) +Cy+(Rn)

ADDC A, direct ;(A)<-(A) +Cy+(direct)

ADDC A, @Ri ;(A)<-(A) +Cy+((Ri))

ADDC A, #data ;(A)<-(A) +Cy+data

(3)加1指令:

INC A, ;(A)<-(A)+1

INC Rn ;(Rn)<-(Rn)+1

INC @Ri ;((Ri))<-((Ri))+1

INC direct ;(direct)<-(direct)+1

INC DPTR ;(FPTR)<-(DPTR)+1

(八) 减法指令

(1)带进位减法指令:

相关文档
最新文档