您的位置 首页 IC

111条单片机汇编指令注解汇总

Rn:表示当前寄存器区的8个工作寄存器R0~R7Ri:表示当前寄存器区的R0或R1,可作地址指针即间址寄存器(i=0或1)@:为间接寄存器或基址寄存器的前

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为意图的传送指令:

MOVA,#data;(A)<-data

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

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

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

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

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

MOVRn, direct; (Rn)<(direct)-

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

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

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

MOVdirect,Rn; (direct)<-(Rn)

MOVdirect,direct2; (direct)<-(direct2)

MOVdirect,@Ri; (direct)<-((Rn))

MOVdirect,#data; (direct)<-data

(4) 以寄存器直接地址为意图的传送指令:

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

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

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

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

MOVDPTR,#data16;

(三) 片外数据传送指令

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

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

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

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

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

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

MOVCA,@A+PC;(PC)<-(PC)+1,(A)<-((A)+(PC))rom

(五) 仓库操作指令

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

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

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

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

(六) 数据交流指令

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

XCHA,Rn;A和Rn中的数交流

XCHA,direct;A和direct单元中的数交流

XCHA,@Ri;A和Ri间址单元中的数交流

(2)半字节交流指令:

XCHDA,@Ri;A的低4位Ri直接单元的低4位交流,高4位不动

(3)累加器凹凸半字节交流指令:

SWAPA,;A的高4位(D7~D4)和低4位(D3~D0)交流

(七) 加法指令

(1)不带Cy加法指令:

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

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

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

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

(2)带进位加法指令:

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

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

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

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

(3)加1指令:

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

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

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

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

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

(八) 减法指令

(1)带进位减法指令:

SUBBA,Rn;(A)<-(A) -Cy-(Rn)

SUBBA,direct; (A)<-(A) -Cy-(direct)

SUBBA,@Ri; (A)<-(A) -Cy-((Ri))

SUBBA,#data; (A)<-(A) -Cy-data

(2)减1指令:

DECA;(A)<-(A)-1

DECdirect;(direct)<-(durect)-1

DECRn;(Rn)<-(Rn)-1

DEC@Ri;((Ri))<-((Ri))-1

(九) 乘除指令

(1)乘法指令

MULAB;(B)(A)<-(A)*(B)

指令功用是把累加器A和特别功用寄存器B中两个8位无符号整数相乘,并把积的高8位字节存入B寄存器,低8位字节存入累加器A.

(2)除法指令

DIVAB;A/B,商存入A,余数存入B

指令的功用是把累加器A中的8位无符号整数除以寄存器B中的8位无符号整数商的整数部分存入累加器A中,余数保留在B中.

(十) 十进制调整指令

DAA

(十一) 逻辑运算指令

(1)逻辑与运算指令:

ANLA,Rn;(A)<-(A)∧(Rn)

ANLA,direct; (A)<-(A)∧(direct)

ANLA,@Ri; (A)<-(A)∧((Ri))

ANLA,#data; (A)<-(A)∧data

ANLdirect,A;(direct)<-(A)∧(direct)

ANLdirect,#data;(direct<-(direct)∧data

(2)逻辑或运算指令:

ORLA,Rn;(A)<-(A)∨(Rn)

ORLA,direct; (A)<-(A)∨(direct)

ORLA,@Ri; (A)<-(A)∨((Ri))

ORLA,#data; (A)<-(A)∨data

ORLdirect,A;(direct)<-(A)∨(direct)

ORLdirect,#data; (direct)<-(direct)∨data

(3)逻辑异或运算指令:

XRLA,Rn;(A)<-(A)⊙(Rn)

XRLA,direct; (A)<-(A)⊙(direct)

XRLA,@Ri; (A)<-(A)⊙((Ri))

XRLA,#data; (A)<-(A)⊙data

XRLdirect,A;(direct)<-(A)⊙(direct)

XRLdirect,#data; (direct)<-(direct)⊙data

(4)累加器清0和去反指令

CLRA;(A)<-0(累加器清0指令)

CLRA;(A)<-(A) (累加器取反指令)

(5)累加器移位指令:

不带进位Cy循环左移:RLA;Dn+1<-Dn,D0<-D7

D7

D6

D5

D4

D3

D2

D1

D0

不带进位Cy循环右移:RRA:Dn+1->Dn,D0<-D7

D7

D6

D5

D4

D3

D2

D1

D0

带进位Cy循环左移:RLCA;Cy<-D7,Dn+1<-Dn,D0<-Cy

D7

D6

D5

D4

D3

D2

D1

D0

带进位Cy循环右移:RRCA;Cy->D7,Dn+1->Dn,D0->Cy

(十二) 操控搬运指令

[1] 无条件搬运指令:

(1) 长搬运指令LJMPaddr16;(PC)<-addr16

(2) 肯定搬运指令AJMPaddr11;(PC)<-(PC)+2,(PC)10~0<-addr11

(3) 短搬运指令SJMPrel;(PC)<-(PC)+2+rel

(4) 变址寻址搬运指令JMP@A+DPTR;(PC)<-(A)+(DPTR)

[2] 条件搬运指令:

(1) 累加器判0搬运指令:

JZrel;假如(A)=0,跳转到方针句子,不然次序履行

JNZrel;假如(A)≠0,跳转到方针句子,不然次序履行

(2) 比较搬运指令:

CJNZA,#data,rel;假如(A)≠data,则跳转到方针句子,不然程序次序履行

CJNZAdirect,rel; 假如(A)≠(direct),则跳转到方针句子,不然程序次序履行

CJNZRn#data,rel; 假如(A)≠data,则跳转到方针句子,不然程序次序履行

CJNZ@Ri#data,rel; 假如(A)≠data,则跳转到方针句子,不然程序次序履行

(3) 循环操控搬运指令:

DJNZRn,rel;(Rn)先减1,如减1后(Rn)≠0,则跳转到方针句子;不然次序履行

DJNZfirect,rel; (direct)先减1,如减1后(direct)≠0,则跳转到方针句子;不然次序履行

(十三) 子程序调用和回来指令

(1) 肯定调用指令:

ACALLaddr11

(2) 长调用指令:

LCALLaddr16

(3) 回来指令:

RET子程序回来

RETI中止服务程序回来

(十四) 空操作指令

NOP空操作指令是一条特别指令,单片机在履行该指令时不进行任何操作,仅仅耗费1个机器周期的时刻,所以该指令长用于延时程序.软件圈套程序等

(十五) 位操作类指令

(1) 位传送指令:

MOVC,bit;(Cy)<-(bit),bit位的状况不变

MOVbit,C; (bit) <- (Cy),Cy位的状况不变

(2) 方位位和复位指令:

SETBC;(Cy)<-1

SETBbit;(bit)<-1

CLRC;(Cy)<-0

CLRbit;(bit)<-0

(3) 位运算指令:

ANLC,bit;(Cy)<-(Cy)∧(bit),Cy位和bit位相与,成果赋给Cy

ANLC,/bit;(Cy)<-(Cy)∧(bit),Cy位和bit位相与,成果赋给Cy

ORLC,bit;(Cy)<-(Cy)∨(bit),Cy位和bit位相或,成果赋给Cy

ORLC,/bit;(Cy)<-(Cy) ∨(bit),Cy位和bit位相或,成果赋给Cy

CPLC; (Cy)<-(Cy),Cy位取反

CPLbit;(bit)<-(bit),bit位取反

(4) 位测验搬运指令:

(1) 以Cy位状况为条件的搬运指令

JCrel;假如Cy位=1,跳转到方针句子,不然次序履行

JNCrel;假如Cy位=0,跳转到方针句子,不然次序履行

(2) 以指定位状况为条件的搬运指令:

JBbit,rel;假如bit=1,跳转到方针句子,不然次序履行

JNBbit,rel;假如bit=0,跳转到方针句子,不然次序履行

JBCbit,rel;假如bit=1,跳转到方针句子,一起将bit位清0;不然次序履行

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/261642.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部