2021年51单片机汇编指令总结_第1页
2021年51单片机汇编指令总结_第2页
2021年51单片机汇编指令总结_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、51单片机汇编指令总结数据传输指令一.片内ram数据传输指令以累加器a为目的操作数的指令mova,rnmova,directmova,rimova,#data以寄存器rn为目的操作数的指令movrn,amovrn,directmovrn,data以直接地址为目的操作数的指令movdirect,amovdirect,rnmovdirect1,derect2movdirect,rimovdirect,#data间接地址为目的操作数的指令movri,amovri,directmovri,#data十六位数据传送指令movdptr,#data16二.累加器a与片外ram数据传送指令movxa,rimo

2、vxa,dptrmovxri,amovxdptr,a三.查表寻址movca,a+dptr(先pc(pc)+1,后a(a)+(dptr)+movca,a+pc(先pc(pc)+1,后a(a)+(pc)四.交换指令字节交换指令xcha,rnxcha,directxcha,ri半字节交换指令xchda,ri累加器半字节交换指令swapa五.栈操作指令push(入栈指令)pushdirectpop(出栈指令)popdirect算术运算指令一.加法减法指令加法指令adda,rnadda,directadda,riadda,#data带进位加法指令addca,rna(a)+(rn)+cyaddca,dir

3、ecta(a)+(direct)+cyaddca,ria(a)+(ri)+cyaddca,#dataa(a)+(data)+cy带借位减法指令subba,rna(a)-cy-(rn)subba,directa(a)-cy-(direct)subba,ria(a)-cy-(ri)subba,#dataa(a)-cy-#data二.乘法除法指令乘法指令mulabba(a)(b)高字节放在b中,低字节放在a中除法指令divaba(a)(b)的商,(b)(a)(b)的余数三.加1减1指令加1指令incaa(a)+1incrnrn(rn)+1incdirectdirect(direct)+1incri(

4、ri)(ri)+1incdptrdptr(dptr)+1减1指令decadecrndecdirectdecri四.十进制调制指令daa调整累加器a的内容为bcd码逻辑操作指令一.逻辑与、或、异或指令逻辑与指令anla,rnanla,directanla,rianla,#data逻辑或这令orla,rnorla,directorla,riorla,#dataorldirect,aorldirect,#data逻辑异或指令xrla,rnxrla,directxrla,rixrla,#dataxrldirect,axrldirect,#data二.清零、取反指令累加器a清零指令crla累加器a取反指

5、令cpla三.循环位移指令累加器a循环左移指令rla累加器a循环右移指令rra累加器a连同进位位循环左移指令rlca累加器a连同进位位循环右移指令rrca控制转移指令一.无条件转移指令绝对转移指令ajmpaddr11(先pc+2,然后将addr11的低十位传给pc,pc的高六位不变)长转移指令ljmpaddr16(用addr16的值替换pc的值)相对转移(短转移)指令sjmprel(带符号的偏移字节数)(pc+2,再加rel赋值给pc)间接转移指令jmpa+dptr(a)+(dptr)(pc)二.条件转移指令累加器判零转移指令jzrel先pc+2;后判断,a为0时转移,pc+rel赋值给pc;

6、否则顺序执行jnzrel先pc+2,后判断,a不为0时转移,pc+rel赋值给pc;否则顺序执行比较转移指令cjne目的操作数,源操作数,relcjnea,direct,rel先pc+3传回pc,再比较目的操作数和原操作数cjnea,#data,rel目源时,程序转移,pc+rel传回pc且cy=0cjnern,#data,rel目=源时,程序顺序执行cjneri,#data,rel目orlc,bitorlc,bit三.位清零、置一、取反指令位清零指令clrcclrbit位置一指令setbcstebbi位取反指令cplccplbit这类指令的功能执行的结果不影响标志位,当直接寻址位地址为端口p

7、0p3中的某一位时,具有“读-改-写”的功能。四.位条件转移指令位累加器c判断转移指令jcrel先pc+2后判断,(c)=1时,则pc+rel赋值给pc,反之顺序执行jncrel先pc+2后判断,(c)=0时,则pc+rel赋值给pc,反之顺序执行判位变量转移指令jbbit,rel先pc+3,判断,若(bit)=1,pc+rel赋值给pc,反之顺序往下执行jnbbit,rel先pc+3,判断,若(bit)=0,pc+rel赋值给pc,反之顺序往下执行判位变量转移指令jbcbit,rel先pc+3,判断,若(bit)=0,pc+rel赋值给pc,且bit0,反之顺序往下执行扩展阅读51单片机汇编

8、指令总结单片机指令功能一览表助记符代码说明mova,rne8ef寄存器amova,directe5dircet直接字节送amova,riere7间接ram送amova,#data74data立即数送amovrn,af8ffa送寄存器movrn,dirceta8afdircet直接字节送寄存器movrn,#data787fdata立即数送寄存器movdircet,af5dirceta送直接字节movdircet,rn888fdircet寄存器送直接字节movdircet1,dircet285dircet1dircet2直接字节送直接字节movdircet,ro8687间接ram送直接字节movd

9、ircet,#data75dircetdata立即数送直接字节movri,af6f7a送间接rammovri,#data7677data直接字节送间接rammovri,#data7677data立即数送间接rammovdptr,#data1690data15816位常数送数据指针data70movca,a+dptr93由(a)+(dptr)寻址的程序存贮器字节选amovca,a+pc83由(a)+(pc);寻址的程序存贮器字节送amovxa,rie2e3送外部数据(8位地址)送amovxa,dptre0送外部数据(16位地址)送amovxri,af2f3a送外部数据(8位地址)movxdptr

10、,af0a送外部数据(16位地址)pushdircetc0dircet直接字节进栈,sp加1popdircetd0dircet直接字节退栈,sp减1xcha,rnc8cf交换a和寄存器xcha,dircetc5dircet交换a和直接字节xcha,ric6c7交换a和间接ramxcha,rid6d7交换a和间接ram的低位swapac算术操作(a的二个半字节交换)adda,rn282f寄存器加到aadda,dircet25dircet直接字节加到aadda,ri2627间接ram加到aadda,#data24data立即数加到aadda,rn383f寄存器和进位位加到aadda,dircet3

11、5dircet直接字节和进位位加到aadda,ri3637间接字节和进位位加到aadda,data34data立即数和进位位加到aadda,rn989fa减去寄存器和进位位adda,dircet95dirceta减去直接字节和进位位adda,ri3637间接ram和进位位加到aadda,data34data立即数和进位位加到asubba,rn989fa减去寄存器和进位位subba,dircet95dirceta减去直接字节和进位位subba,ri9697a减去间接ram和进位位subba,#data94dataa减去立即数和进位位inca04a加1incrn080f寄存器加1incdircet

12、05dircet直接字节加1incri0607间接ram加1deca14a减1decrn181f寄存器减1decdircet15dircet直接字节减1decri1617间接ram减1incdptra3数据指针加1mulaba4a乘以bdivab84a除以bdaad4a的十进制加法调整逻辑操作anla,rn585f寄存器“与”到aanla,dircet55dircet直接字节“与”到aanla,ri5657间接ram“与”到aanla,#data54data立即数“与”到aanldirceta52dirceta“与”到直接字节anldircet,#data53dircetdata立即数“与”到

13、直接字节orla,rn484f寄存器“或”到aorla,dircet45dircet直接字节“或”到aorla,ri4647间接ram“或”到aorla,#data44data立即数“或”到aorldircet,a42dirceta“或”到直接字节orldircet,#data43dircetdata立即数“或”到直接字节xrla,rn686f寄存器“异或”到axrla,dircet65dircet直接字节“异或”到axrla,ri6667间接ram“异或”到axrla,#data64data立即数“异或”到axrldirceta62dirceta“异或”到直接字节xrldircet,#dat

14、a63dircetdata立即数“异或”到直接字节clrae4清零cplaf4a取反rla23a左环移rlca33a通过进位左环移rra03a右环移rrca13a通过进位右环移控制程序转移acalladdr11*1addr(a7a0)绝对子程序调用lcalladdr1612addr(158)长子程序调用addr(70)ret22子程序调用返回retiaddr1132中断调用返回ajmpaddr111addr(a7a6)绝对转移ljmpaddr1602addr(158)长转移addr(70)sjmprel80rel短转移,相对转移jmpa+dptr73相对于dptr间接转移jzrel60rela

15、为零转移jnzrel70rela为零转移cjnea,dircet,relb5dircetrel直接字节与a比较,不等则转移cjnea,#data,relb4datarel立即数与a比较,不等则转移cjnea,rn,#data,relb8bfdatarel立即数与寄存器比较,不等则转移cjneri,#data,relb6b7datarel立即数与间接ram比较,不等则转移djnzrn,reld8dfrel寄存器减1,不为零则转移djnzdircet,relb5dircetrel直接字节减1,不为零则转移nop00空操作*=a10a9a8l=a10a9a80布尔变量操作clrcc3清零进位clrb

16、itc2清零直接位setbcd3置位进位setbbitd2置位直接位cplcb3进位取反cplbitb2直接位取反anlc,bit82dit直接数“与”到进位anlc,/bitb0直接位的反“与”到进位orlc,bit72bit直接位“或”到进位orlc,/bita0bit直接位的反“或”到进位movc,bita2bit直接位送进位movbit,c92bit进位送直接位jcrel40rel进位位为1转移jncrel50rel进位位为0转移jbbit,rel20bitrel直接位为1相对转移jnbbit,rel30bitrel直接位为0相对转移jbcbit,rel10bitrel直接位为1相对转

17、移,然后清零该位1.循环移位指令(4条)rla;累加器a中的内容左移一位rra;累加器a中的内容右移一位rlca;累加器a中的内容连同进位位cy左移一位rrca;累加器a中的内容连同进位位cy右移一位2.累加器半字节交换指令(1条)swapa;累加器中的内容高低半字节互换3.求反指令(1条)cpla;累加器中的内容按位取反4.清零指令(1条)clra;0(a),累加器中的内容清05.逻辑与操作指令(6条)anla,data;累加器a中的内容和直接地址单元中的内容执行与逻辑操作。结果存在寄存器a中。anldata,#data;直接地址单元中的内容和立即数执行与逻辑操作。结果存在直接地址单元中。a

18、nla,#data;累加器a的内容和立即数执行与逻辑操作。结果存在累加器a中。anla,rn;累加器a的内容和寄存器rn中的内容执行与逻辑操作。结果存在累加器a中。anldata,a;直接地址单元中的内容和累加器a的内容执行与逻辑操作。结果存在直接地址单元中。anla,ri;累加器a的内容和工作寄存器ri指向的地址单元中的内容执行与逻辑操作。结果存在累加器a中。6.逻辑或操作指令(6条)这组指令的作用是将两个单元中的内容执行逻辑或操作。如果直接地址是i/o地址,则为“读修改写”操作。orla,data;累加器a中的内容和直接地址单元中的内容执行逻辑或操作。结果存在寄存器a中。orldata,#

19、data;直接地址单元中的内容和立即数执行逻辑或操作。结果存在直接地址单元中。orla,#data;累加器a的内容和立即数执行逻辑或操作。结果存在累加器a中。orla,rn;累加器a的内容和寄存器rn中的内容执行逻辑或操作。结果存在累加器a中。orldata,a;直接地址单元中的内容和累加器a的内容执行逻辑或操作。结果存在直接地址单元中。orla,ri;累加器a的内容和工作寄存器ri指向的地址单元中的内容执行逻辑或操作。结果存在累加器a中。7.逻辑异或操作指令(6条)xrla,data;累加器a中的内容和直接地址单元中的内容执行逻辑异或操作。结果存在寄存器a中。xrldata,#data;直接

20、地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地址单元中。xrla,#data;累加器a的内容和立即数执行逻辑异或操作。结果存在累加器a中。xrla,rn;累加器a的内容和寄存器rn中的内容执行逻辑异或操作。结果存在累加器a中。xrldata,a;直接地址单元中的内容和累加器a的内容执行逻辑异或操作。结果存在直接地址单元中。xrla,ri;累加器a的内容和工作寄存器ri指向的地址单元中的内容执行逻辑异或操作。结果存在累加器a中控制转移类指令分析1.无条件转移指令(4条)ljmpaddr16;addr16(pc),给程序计数器赋予新值(16位地址)ajmpaddr11;(pc)+2(pc

21、),addr11(pc10-0)程序计数器赋予新值(11位地址),(pc15-11)不改变sjmprel;(pc)+2+rel(pc)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值jmpa+dptr;(a)+(dptr)(pc),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值2.条件转移指令(8条)jzrel;a=0,(pc)+2+rel(pc),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行jnzrel;a0,(pc)+2+rel(pc),累加器中的内容不为0,则转移到偏移量所指向的地址,否则程序往下执行cjnea,data,rel;a(data),(pc)+3+rel(pc),累加器中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址,否则程序往下执行cjnea,#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论