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

供稿:hz-xin.com     日期:2025-01-13
int 在51单片机汇编语言中是指令吗?

没学过汇编,不过汇编里有int? 如果有应该是变量类型吧。。。。。

话说你百度不就行了。

单片机指令功能一览表
助记符 代码 说明
MOV A,Rn E8~EF 寄存器A
MOV A,direct E5 dircet 直接字节送A
MOV A,@Ri ER~E7 间接RAM送A
MOV A,#data 74 data 立即数送A
MOV Rn,A F8~FF A送寄存器
MOV Rn,dircet A8~AF dircet 直接字节送寄存器
MOV Rn,#data 78~7F data 立即数送寄存器
MOV dircet,A F5 dircet A送直接字节
MOV dircet,Rn 88~8F dircet 寄存器送直接字节
MOV dircet1,dircet2 85 dircet1 dircet2 直接字节送直接字节
MOV dircet,@Ro 86~87 间接RAM送直接字节
MOV dircet,#data 75 dircet data 立即数送直接字节
MOV @Ri,A F6~F7 A送间接RAM
MOV @Ri,#data 76~77 data 直接字节送间接RAM
MOV @Ri,#data 76~77 data 立即数送间接RAM
MOV DPTR,#data16 90 data 15~8 16位常数送数据指针
data7~0
MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮
器字节选A
MOVC A,@A+PC 83 由((A)+(PC));寻址的程序存贮器字节送A
MOVX A,@Ri E2~E3 送外部数据(8位地址)送A
MOVX A,@DPTR E0 送外部数据(16位地址)送A
MOVX @Ri,A F2~F3 A送外部数据(8位地址)
MOVX @DPTR,A F0 A送外部数据(16位地址)
PUSH dircet C0 dircet 直接字节进栈,SP加1
POP dircet D0 dircet 直接字节退栈,SP减1
XCH A,Rn C8~CF 交换A和寄存器
XCH A,dircet C5 dircet 交换A和直接字节
XCH A,@Ri C6~C7 交换A和间接RAM
XCH A,@Ri D6~D7 交换A和间接RAM的低位
SWAP A C4


算术操作 (A的二个半字节交换)
ADD A,Rn 28~2F 寄存器加到A
ADD A,dircet 25 dircet 直接字节加到A
ADD A,@Ri 26~27 间接RAM加到A
ADD A,#data 24data 立即数加到A
ADD A,Rn 38~3F 寄存器和进位位加到A
ADD A,dircet 35dircet 直接字节和进位位加到A
ADD A,@Ri 36~37 间接字节和进位位加到A
ADD A,data 34 data 立即数和进位位加到A
ADD A,Rn 98~9F A减去寄存器和进位位
ADD A,dircet 95 dircet A减去直接字节和进位位
ADD A,@Ri 36~37 间接RAM和进位位加到A
ADD A,data 34 data 立即数和进位位加到A
SUBB A,Rn 98~9F A减去寄存器和进位位
SUBB A,dircet 95 dircet A减去直接字节和进位位
SUBB A,@Ri 96~97 A减去间接RAM和进位位
SUBB A,#data 94 data A减去立即数和进位位
INC A 04 A加1
INC Rn 08~0F 寄存器加1
INC dircet 05 dircet 直接字节加1
INC @Ri 06~07 间接RAM加1
DEC A 14 A减1
DEC Rn 18~1F 寄存器减1
DEC dircet 15 dircet 直接字节减1
DEC @Ri 16~17 间接RAM减1
INC DPTR A3 数据指针加1
MUL AB A4 A乘以B
DIV AB 84 A除以B
DA A D4 A的十进制加法调整


逻辑操作
ANL A,Rn 58~5F 寄存器“与”到A
ANL A,dircet 55 dircet 直接字节“与”到A
ANL A,@Ri 56~57 间接RAm“与”到A
ANL A,#data 54 data 立即数“与”到A
ANL dircet A 52 dircet A“与”到直接字节
ANL dircet,#data 53 dircet data 立即数“与”到直接字节
ORL A,Rn 48~4F 寄存器“或”到A
ORL A,dircet 45 dircet 直接字节“或”到A
ORL A,@Ri 46~47 间接RAM“或”到A
ORL A,#data 44 data 立即数“或”到A
ORL dircet,A 42 dircet A“或”到直接字节
ORL dircet,#data 43 dircet data 立即数“或”到直接字节
XRL A,Rn 68~6F 寄存器“异或”到A
XRL A,dircet 65 dircet 直接字节“异或”到A
XRL A,@Ri 66~67 间接RAM“异或”到A
XRL A,#data 64 data 立即数“异或”到A
XRL dircet A 62 dircet A“异或”到直接字节
XRL dircet,#data 63 dircet data 立即数“异或”到直接字节
CLR A E4 清零
CPL A F4 A取反
RL A 23 A左环移
RLC A 33 A通过进位左环移
RR A 03 A右环移
RRC A 13 A通过进位右环移


控制程序转移
ACALL addr 11 *1 addr(a7~a0) 绝对子程序调用
LCALL addr 16 12 addr(15~8) 长子程序调用
addr(7~0)
RET 22 子程序调用返回
RETI addr 11 32 中断调用返回
AJMP addr 11 △1 addr(a7~a6) 绝对转移
LJMP addr 16 02addr(15~8) 长转移
addr(7~0)
SJMP rel 80 rel 短转移,相对转移
JMP @A+DPTR 73 相对于DPTR间接转移
JZ rel 60 rel A为零转移
JNZ rel 70 rel A为零转移
CJNE A,dircet,rel B5 dircet rel 直接字节与A比较,不等则转移
CJNE A,#data,rel B4 data rel 立即数与A比较,不等则转移
CJNE A,Rn,#data,rel B8~BF data rel 立即数与寄存器比较,不等则转移
CJNE @Ri,#data,rel B6~B7 data rel 立即数与间接RAM比较,不等则转移
DJNZ Rn,rel D8~DF rel 寄存器减1,不为零则转移
DJNZ dircet,rel B5 dircet rel 直接字节减1,不为零则转移
NOP 00 空操作
*=a10a9a8l
△=a10a9a80


布尔变量操作
CLR C C3 清零进位
CLR bit C2 清零直接位
SETB C D3 置位进位
SETB bit D2 置位直接位
CPL C B3 进位取反
CPL bit B2 直接位取反
ANL C,bit 82 dit 直接数“与”到进位
ANL C,/bit B0 直接位的反“与”到进位
ORL C,bit 72 bit 直接位“或”到进位
ORL C,/bit A0 bit 直接位的反“或”到进位
MOV C,bit A2 bit 直接位送进位
MOV bit,C 92 bit 进位送直接位
JC rel 40 rel 进位位为1转移
JNC rel 50 rel 进位位为0转移
JB bit,rel 20 bit rel 直接位为1相对转移
JNB bit,rel 30 bit rel 直接位为0相对转移
JBC bit,rel 10 bit rel 直接位为1相对转移,然后清零该位


[1]. 循环移位指令(4条)
RL A ;累加器A中的内容左移一位
RR A ;累加器A中的内容右移一位
RLC A ;累加器A中的内容连同进位位CY左移一位
RRC A ;累加器A中的内容连同进位位CY右移一位

[2]. 累加器半字节交换指令(1条)
SWAP A ; 累加器中的内容高低半字节互换

[3]. 求反指令(1条)
CPL A ; 累加器中的内容按位取反

[4]. 清零指令(1条)
CLR A ; 0→(A),累加器中的内容清0

[5]. 逻辑与操作指令(6条)
ANL A,data ;累加器A中的内容和直接地址单元中的内容执行与逻辑操作。结果存在寄存器A中。
ANL data,#data ;直接地址单元中的内容和立即数执行与逻辑操作。结果存在直接地址单元中。
ANL A,#data ;累加器A的内容和立即数执行与逻辑操作。结果存在累加器A中。
ANL A,Rn ;累加器A的内容和寄存器Rn中的内容执行与逻辑操作。结果存在累加器A中。
ANL data,A ;直接地址单元中的内容和累加器A的内容执行与逻辑操作。结果存在直接地址单元中。
ANL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行与逻辑操作。结果存在累加器A中。

[6]. 逻辑或操作指令(6条)
这组指令的作用是将两个单元中的内容执行逻辑或操作。如果直接地址是I/O地址,则为“读—修改—写”操作。

ORL A,data ;累加器A中的内容和直接地址单元中的内容执行逻辑或操作。结果存在寄存器A中。
ORL data,#data ;直接地址单元中的内容和立即数执行逻辑或操作。结果存在直接地址单元中。
ORL A,#data ;累加器A的内容和立即数执行逻辑或操作。结果存在累加器A中。
ORL A,Rn ;累加器A的内容和寄存器Rn中的内容执行逻辑或操作。结果存在累加器A中。
ORL data,A ;直接地址单元中的内容和累加器A的内容执行逻辑或操作。结果存在直接地址单元中。
ORL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑或操作。结果存在累加器A中。

[7]. 逻辑异或操作指令(6条)
XRL A,data ;累加器A中的内容和直接地址单元中的内容执行逻辑异或操作。结果存在寄存器A中。
XRL data,#data ;直接地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地址单元中。
XRL A,#data ;累加器A的内容和立即数执行逻辑异或操作。结果存在累加器A中。
XRL A,Rn ;累加器A的内容和寄存器Rn中的内容执行逻辑异或操作。结果存在累加器A中。

XRL data,A ;直接地址单元中的内容和累加器A的内容执行逻辑异或操作。结果存在直接地址单元中。
XRL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑异或操作。结果存在累加器A中

控制转移类指令分析


[1]. 无条件转移指令(4条)
LJMP addr16 ;addr16→(PC),给程序计数器赋予新值(16位地址)
AJMP addr11 ;(PC)+2→(PC),addr11→(PC10-0)程序计数器赋予新值(11位地址),(PC15-11)不改变
SJMP rel ;(PC)+ 2 + rel→(PC)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值
JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值


[2]. 条件转移指令(8条)
JZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行
JNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的内容不为0,则转移到偏移量所指向的地址,否则程序往下执行

CJNE A, data, rel ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址,否则程序往下执行
CJNE A, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),累加器中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
CJNE Rn, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
CJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行

布尔变量操作指令分析

[1]. 位传送指令(2条)
MOV C,bit ;bit→CY,某位数据送CY
MOV bit,C ;CY→bit,CY数据送某位

[2]. 位置位复位指令(4条)
CLR C ; 0→CY,清CY
CLR bit ; 0→bit,清某一位
SETB C ; 1→CY,置位CY
SETB bit ; 1→bit,置位某一位

[3]. 位运算指令(6条)
ANL C,bit ;(CY)∧(bit)→CY
ANL C,/bit ;(CY)∧( )→CY
ORL C,bit ;(CY)∨(bit)→CY
ORL C,/bit ;(CY)∧()→CY
CPL C ;()→CY
CPL bit ;()→bir

[4]. 位控制转移指令(5)
JC rel ; (CY)=1转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。
JNC rel ; (CY)=0转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。
JB bit, rel ; 位状态为1转移。
JNB bit, rel ; 位状态为0转移。
JBC bit, rel ; 位状态为1转移,并使该位清“0”。

我来回答

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

51单片机的指令是汇编语言。
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
许多汇编程序为程序开发、汇编控制、辅助调试提供了额外的支持机制。有的汇编语言编程工具经常会提供宏,它们也被称为宏汇编器。

是的,这是汇编语言。
这条指令中的MOV A叫操作码,#3EH叫操作数,这里叫做立即数。
汇编语言是比机器语言高级一点的语言,但比C语言这样的高级语言低级,这些操作码都可以被单片机翻译成机器码,以便机器处理,当然单片机可以使用C语言编程,不过汇编语言更接近于硬件,能更好的控制并利用单片机的硬件接口;但是其函数本身不如C语言强大,比如一个简单的比较大小就不能用一条简单的指令来完成。

MOV A,#3EH ;A ←3EH
当然是汇编语言了,分号后面的是对前面指令的功能注释。
学习51单片机需要学好汇编语言,但是开发的话一般使用C语言!

MOV A,#3EH ;A ←3EH 是汇编语言
指令方式有很多、很多布尔等等~~~

单片机编程是指什么,是不是指C或汇编啊?!
学汇编还是先学单片机的书吧,单片机语言就是汇编(我学过汇编不学单片机理解起来真难数据怎么保存传输,存哪怎么传输搞得我头都大,还得学好二进制和16进制)。c语言就直接学

下载到单片机的程序是什么语言编制的? 汇编语言还是C语言?或其它?
无论你用C语言还是汇编语言来编写你的应用程序,经过各种转换后最终下载到单片机里的程序,是在数据总线上的一排0、1的代码。把C语言程序转换为0、1代码的工具叫编译器;把汇编程序转换为0、1代码的工具叫汇编器。

单片机用什么语言编程
单片机可以使用多种编程语言进行编程,但最常见的是汇编语言和C语言。汇编语言是直接与单片机的硬件指令集相对应的语言,它使用助记符来表示机器指令,程序员需要了解单片机的指令集和硬件架构。汇编语言编写的程序具有直接控制硬件的能力,可以实现高效的程序执行和内存管理。然而,汇编语言编写程序相对繁琐,且...

单片机编程用的是什么语言
单片机编程时,可以选择使用汇编语言或C语言。这取决于你所选的编译环境和下载方法。然而,对于初学者而言,推荐使用C语言,因为它更为直观,易于掌握。具体选择哪种语言,还取决于你所使用的单片机型号。不同的单片机型号可能需要不同的编译器和下载工具。如果你是自学,可以通过论坛等途径获取相关资料。如...

单片机能够直接识别的语言是哪一个呢?
汇编语言、C语言。1、汇编语言:这是一种低级语言,直接对应单片机的指令集;使用汇编语言编写的程序可以直接被单片机执行,是单片机能够直接识别的语言之一。2、C语言:是一种高级语言,通过编译器转换成单片机可以执行的机器码,使用C语言编写的程序也可以被单片机直接识别执行。

单片机编程语言一般有哪几种
1.单片机的汇编语言 汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少,程序执行效率高,由于它一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。但是不同的类型的单片机,其汇编...

单片机汇编语言中,指令和伪指令有何区别?
单片机汇编语言,指令是CPU可以识别的代码,与编译器无关,对于任何编译器,指令是不变的。伪指令是只有编译器识别的语句,编译完成后就失去作用了,不同编译器伪指令可以不同。

单片机用什么语言
这样就可以绝对可控,程序的安全性和执行速度受编程者水平限制,不过总的执行速度较C语言快,代码占程序存储器的容量较C语言小。这样,汇编程序更适合程序存储器和数据存储器较小的老式单片机。但是,汇编程序毕竟是机器语言的汇编助记符,所以存在指令难记,指令功能弱的缺点,造成学习困难。

汇编语言和单片机的区别?
汇编是语言,是软件。单片机从诞生到现在,经过了将近70年的发展。众所周知,单片机是可以通过编写程序实现产品的功能,这么多年来,单片机的规格并没有多大变化,而单片机编程一般使用的都是汇编语言和c语言。汇编语言是一种用文字助记符来表示机械指令的符号语言,是最接近机械码的一种语言。

给51单片机编程序,用basic语言好还是c语言好
Visual Basic是一种可视化的面向对象编程语言,以其简单和快捷的特点,受到了广大Windows程序员的喜爱。然而,对于51系列单片机编程而言,主要使用的是C语言和汇编语言。尽管单片机的C语言与标准C语言有一些区别,但这种差异主要体现在I\/O口、中断及寄存器的处理上。单片机C语言增加了一些基本的指令,比如变量...