tf1

时间:2024-10-26 14:56:17编辑:小早

51单片机的指令是汇编语言吗?

我来回答

所有的处理器内部处理的都是二进制信号,也只能识别二进制信号,所以不管用什么样的语言写的程序,终将经转换成二进制的形式下载到芯片中去才能运行。但是用二进制指令不便于编写程序,也难于分析程序。而且学习起来不方便,所以就更加难于推广。
所以人们就想到了一个方法,用一些特定的符号(见名知意)来代替二进制指令。这就是我们所说的汇编语言。比如上面所说的MOV A,#3EH。其实,每条汇编指令,都对应唯一的一个二进制编码。
但不同体系的CPU。都有不同的汇编语言。虽是解决了不便于编写程序,难于分析程序的问题,但还是制约了推广,所以就出现以高级语言。(如C,C++,JAVA),但用高级语言编写出的程序,还是会经过编译器转换成来汇编程序,再转换成二进制的指令,下载到芯片中去。
这样就方便学习和推广。比如说,如果你懂C语言的话,就可以写很多体系CPU的应用程序。但如何转换为二进制指令的话,就由编译器来完成了。
所以强列建议你去学习C语言,这是一种经典的语言。对于应用开发很有用。


51单片机指令有哪些啊?

MCS-51单片机的指令集1、数据传送类指令助记符功能说明字节数振荡周期 MOVA,Rn寄存器内容送入累加器112MOVA,direct直接地址单元中的数据送入累加器212MOVA,@Ri间接RAM中的数据送入累加器112MOVA,#data88位立即数送入累加器212MOVRn,A累加器内容送入寄存器112MOVRn,direct直接地址单元中的数据送入寄存器224MOVRn,#data88位立即数送入寄存器212MOVdirect,A累加器内容送入直接地址单元212MOVdirect,Rn寄存器内容送入直接地址单元224MOVdirect,direct直接地址单元中的数据送入直接地址单元324MOVdirect,@Ri间接RAM中的数据送入直接地址单元224MOVdirect,#data88位立即数送入直接地址单元324MOV@Ri,A累加器内容送入间接RAM单元112MOV@Ri,direct直接地址单元中的数据送入间接RAM单元224MOV@Ri,#data88位立即数送入间接RAM单元212MOVDPTR,#data1616位立即数地址送入地址寄存器324MOVCA,@A+DPTR以DPTR为基地址变址寻址单元中的数据送入累加器124MOVCA,@A+PC以PC为基地址变址寻址单元中的数据送入累加器124MOVXA,@Ri外部RAM(8位地址)送入累加器124MOVXA,@DPTR外部RAM(16位地址)送入累加器124MOVX@Ri,A累加器送入外部RAM(8位地址)124MOVX@DPTR,A累加器送入外部RAM(16位地址)124PUSHdirect直接地址单元中的数据压入堆栈224POPDIRECT堆栈中的数据弹出到直接地址单元224XCHA,Rn寄存器与累加器交换112XCHA,direct直接地址单元与累加器交换212XCHA,@Ri间接RAM与累加器交换112XCHDA,@Ri间接RAM与累加器进行低半字节交换1122、算术操作类指令助记符功能说明字节数振荡周期ADDA,Rn寄存器内容加到累加器112ADDA,direct直接地址单元加到累加器212ADDA,@Ri间接RAM内容加到累加器112ADDA,#data88位立即数加到累加器212ADDCA,Rn寄存器内容带进位加到累加器112ADDCA,dirct直接地址单元带进位加到累加器212ADDCA,@Ri间接RAM内容带进位加到累加器112ADDCA,#data88位立即数带进位加到累加器212SUBBA,Rn累加器带借位减寄存器内容112SUBBA,dirct累加器带借位减直接地址单元212SUBBA,@Ri累加器带借位减间接RAM内容112SUBBA,#data8累加器带借位减8位立即数212INCA累加器加1112INCRn寄存器加1112INCdirect直接地址单元内容加1212INC@Ri间接RAM内容加1112INCDPTRDPTR加1124DECA累加器减1112DECRn寄存器减1112DECdirect直接地址单元内容减1212DEC@Ri间接RAM内容减1112MULA,BA乘以B148DIVA,BA除以B148DAA累加器进行十进制转换1123、逻辑操作类指令助记符功能说明字节数振荡周期ANLA,Rn累加器与寄存器相“与”112ANLA,direct累加器与直接地址单元相“与”212ANLA,@Ri累加器与间接RAM内容相“与”112ANLA,#data8累加器与8位立即数相“与”212ANLdirect,A直接地址单元与累加器相“与”212ANLdirect,#data8直接地址单元与8位立即数相“与”324ORLA,Rn累加器与寄存器相“或”112ORLA,direct累加器与直接地址单元相“或”212ORLA,@Ri累加器与间接RAM内容相“或”112ORLA,#data8累加器与8位立即数相“或”212ORLdirect,A直接地址单元与累加器相“或”212ORLdirect,#data8直接地址单元与8位立即数相“或”324XRLA,Rn累加器与寄存器相“异或”112XRLA,direct累加器与直接地址单元相“异或”212XRLA,@Ri累加器与间接RAM内容相“异或”112XRLA,#data8累加器与8位立即数相“异或”212XRLdirect,A直接地址单元与累加器相“异或”212XRLdirect,#data8直接地址单元与8位立即数相“异或”324CLRA累加器清0112CPLA累加器求反112RLA累加器循环左移112RLCA累加器带进位循环左移112RRA累加器循环右移112RRCA累加器带进位循环右移112SWAPA累加器半字节交换1124、控制转移类指令 助记符功能说明字节数振荡周期ACALLaddr11绝对短调用子程序224LACLLaddr16长调用子程序324RET子程序返回124RETI中断返回124AJMPaddr11绝对短转移224LJMPaddr16长转移324SJMPrel相对转移224JMP@A+DPTR相对于DPTR的间接转移124JZrel累加器为零转移224JNZrel累加器非零转移224CJNEA,direct,rel累加器与直接地址单元比较,不等则转移324CJNEA,#data8,rel累加器与8位立即数比较,不等则转移324CJNERn,#data8,rel寄存器与8位立即数比较,不等则转移324(相等则执行本指令的下一条)CJNE@Ri,#data8,rel间接RAM单元,不等则转移324(但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能,如果两数不相等,则CPU还会反映出哪个数大,哪个数小,这是用CY(进位标志位)来实现的。如果左边的数(A,Rn,@Ri)大或者等于右边的数(direct,#date8),则CY=0;否则CY=1)DJNZRn,rel寄存器减1,非零转移324DJNZdirect,rel直接地址单元减1,非零转移324NOP空操作112控制转移指令共有17条,可分为“无条件转移指令” “有条件转移指令” “子程序调用指令” 及 “返回指令”。5、布尔变量操作类指令助记符功能说明字节数振荡周期CLRC清进位位112CLRbit清直接地址位212SETBC置进位位112SETBbit置直接地址位212CPLC进位位求反112CPLbit直接地址位求反212ANLC,bit进位位和直接地址位相“与”224ANLC,/bit进位位和直接地址位的反码相“与”224ORLC,bit进位位和直接地址位相“或”224ORLC,/bit进位位和直接地址位的反码相“或”224MOVC,bit直接地址位送入进位位212MOVbit,C进位位送入直接地址位224JCrel进位位为1则转移(CY=O不转移,=1转移)224JNCrel进位位为0则转移(和上面相反)224JBbit,rel直接地址位为1则转移324JNBbit,rel直接地址位为0则转移324JBCbit,rel直接地址位为1则转移,该位清零324伪指令助记符功能说明ORG设置程序起始地址END标志源代码结束EQU定义常数SET定义整型数DATA给字节类型符号定值BYTE给字节类型符号定值WROD给字类型符号定值BIT给位地址取名ALTNAME用自定义名取代保留字DB给一块连续的存储区装载字节型数据DW给一块连续的存储区装载字型数据DS预留一个连续的存储区或装入指定字节。INCLUDE将一个源文件插入程序中TITLE列表文件中加入标题行NOLIST汇编时不产生列表文件NOCODE条件汇编时,条件为假的不产生清单


上一篇:易烊千玺 邓亚萍

下一篇:没有了