产品选型

51单片机 指令集 51单片机主要汇编指令集

小编 2024-11-24 产品选型 23 0

51单片机主要汇编指令集

1)数据传送类指令(7种助记符)

MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;

MOVC(Move Code)读取程序存储器数据表格的数据传送;

MOVX (Move External RAM) 对外部RAM的数据传送;

XCH (Exchange) 字节交换;

XCHD (Exchange low-order Digit) 低半字节交换;

PUSH (Push onto Stack) 入栈;

POP (Pop from Stack) 出栈;

(2)算术运算类指令(8种助记符)

ADD(Addition) 加法;

ADDC(Add with Carry) 带进位加法;

SUBB(Subtract with Borrow) 带借位减法;

DA(Decimal Adjust) 十进制调整;

INC(Increment) 加1;

DEC(Decrement) 减1;

MUL(Multiplication、Multiply) 乘法;

DIV(Division、Divide) 除法;

(3)逻辑运算类指令(10种助记符)

ANL(AND Logic) 逻辑与;

ORL(OR Logic) 逻辑或;

XRL(Exclusive-OR Logic) 逻辑异或;

CLR(Clear) 清零;

CPL(Complement) 取反;

RL(Rotate left) 循环左移;

RLC(Rotate Left throught the Carry flag) 带进位循环左移;

RR(Rotate Right) 循环右移;

RRC (Rotate Right throught the Carry flag) 带进位循环右移;

SWAP (Swap) 低4位与高4位交换;

(4)控制转移类指令(17种助记符)

ACALL(Absolute subroutine Call)子程序绝对调用;

LCALL(Long subroutine Call)子程序长调用;

RET(Return from subroutine)子程序返回;

RETI(Return from Interruption)中断返回;

SJMP(Short Jump)短转移;

AJMP(Absolute Jump)绝对转移;

LJMP(Long Jump)长转移;

CJNE (Compare Jump if Not Equal)比较不相等则转移;

DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;

JZ (Jump if Zero)结果为0则转移;

JNZ (Jump if Not Zero) 结果不为0则转移;

JC (Jump if the Carry flag is set)有进位则转移;

JNC (Jump if Not Carry)无进位则转移;

JB (Jump if the Bit is set)位为1则转移;

JNB (Jump if the Bit is Not set) 位为0则转移;

JBC(Jump if the Bit is set and Clear the bit) 位为1则转移,并清除该位;

NOP (No Operation) 空操作;

(5)位操作指令(1种助记符)

SETB(Set Bit) 位 置1 。

单片机「4」51单片机指令集(1)

51单片机的指令系统,在官方手册上有详细介绍,因为我也是第一次学习,所以如果在文章中出现错误,希望大家及时指出,俗话说得好,给别人纠错的过程就是自己进步的过程。

1.寻址方式

寻址方式是每一种计算机的指令集中不可缺少的部分,寻址方式规定了数据的来源和目的地,对于不同的程序指令,来源和目的地的规定也会不同,在STC单片机中,寻址方式可分为下面几种:

立即寻址直接寻址间接寻址寄存器寻址相对寻址变址寻址位寻址

立即寻址:也称为立即数寻址,在指令操作数中直接给出参加运算的操作数。如---MOV A, #70H 这条指令的功能是将立即数70H传送到累加器A中

直接寻址:指令操作数域给出的参加运算操作数的地址, 直接寻址方式只能用来表示特殊功能寄存器、内部数据寄存器和位地址空间,其中特殊功能寄存器和位地址空间只能使用直接寻址方式访问。如---ANL 70H, #48H 表示70H单片中的数与立即数48H相“与”,结果放在70H单元中,其中70H是直接地址,表示内部数据存储器RAM中的一个单元。

间接寻址:采用R0或R1前添加“@”符号表示,例如,假设R1中的数据是40H,内部数据存储器40H单元所包含的数据是55H,那么如:MOV A @R1 把数据55H传给累加器。

寄存器寻址:是对选定的工作寄存器R7--R0、累加器A、通用寄存器B、地址寄存器和进位C中的数进行操作。因此,寄存器寻址包含一种隐含的寻址方式,寄存器工作区的选择由程序状态寄存器PSW中的RS1、RS0来决定,指令操作数制定的寄存器均指当前工作区中的寄存器。如---INC R0 ; (R0+1-->R0)

相对寻址:是将程序计数器PC中的当前值与指令第二字节给出的数相加,其结果作为转移指令的转移地址。转移地址也称为转移目的地址,PC中的当前值称为基地址,指令第二字节给出的数称为偏移量,由于目的地址是相对与PC中的基地址而言,所以这种寻址方式称为相对寻址。偏移量是带符号的数,所能表示的范围是+127--128,这种寻址方式主要用于转移指令。如JC 80H ; C=1 跳转 表示若进位位C为0,则程序计数器PC内容不变,即不转移,若进位位C为1,则以PC中的当前值为基地址,加上偏移量80H后所得到的结果作为该转移指令的目的地址。相对寻址:是将程序计数器PC中的当前值与指令第二字节给出的数相加,其结果作为转移指令的转移地址。转移地址也称为转移目的地址,PC中的当前值称为基地址,指令第二字节给出的数称为偏移量,由于目的地址是相对与PC中的基地址而言,所以这种寻址方式称为相对寻址。偏移量是带符号的数,所能表示的范围是+127--128,这种寻址方式主要用于转移指令。

变址寻址:指令操作数制定一个存放变址基址的变址寄存器。变址寻址时,偏移量与变址基值相加,其结果作为操作数的地址。变址寄存器有程序计数器PC和地址寄存器DPTR。如---MOVC A, @A+DPTR 表示累加器A为偏移量寄存器,其内容与地址寄存器DPTR的内容想家,其结果作为操作数的地址,取出带单元的数送入累加器A中。

位寻址: 指对一些内部数据存储器RAM和特殊功能寄存器进行位操作时的寻址。在进行位操作时,借助于进位位C作为位操作累加器,指令操作数直接给出该位的地址,然后根据操作码的性质对该位进行位操作。位地址与字节直接寻址中的字节地址形式完全一样,主要由操作码加以区分。如---MOV C, 20H; 片内位单元位操作型指令

以上就是51单片机涉及的7中寄存器寻址方式。指令集比较枯燥,所以耐下性子,方得始终。

相关问答

ARM 单片机 的结构和 51 系列有什么不一样..._结构工程师_帮考网

ARM单片机和51系列单片机在结构上有很大的不同。1.架构不同:ARM单片机采用RISC(精简指令集计算机)架构,而51系列单片机采用CISC(复杂指令集计算机)...

51单片机 怎么在电脑编程?

要在电脑上编程51单片机,可以按照以下步骤进行:1.准备编程工具:首先,需要一个可以编写和烧录单片机程序的集成开发环境(IDE)。常见的IDE有KeiluVision、SD...

51单片机 多少位谁能告诉我_其他问答_系统粉

MCS-51单片机的指令集1、数据传送类指令助记符功能说明字节数振荡周期MOVA,Rn寄存器内容送入累加器112MOVA,direct直接地址单元中的数据送...

51单片机 汇编和8086汇编哪个难?

51单片汇编难51单片机能用汇编语言写程序,只是现在很少有人用,最重要的原因是汇编语言需要深入掌握单片机的指令集。汇编语言的优势很明显,程序的执行效率比...

51单片机 包含87C196吗?

不,51单片机不包含87C196。51单片机是指基于Intel8051架构的微控制器,而87C196是Intel的16位微控制器。两者具有不同的架构和指令集,因此不属于同一系列产品...

单片机 介绍表格?

单片机详细介绍STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory)的低电压,高...

单片机 一条指令如何知道占多少地址?

回答如下:单片机的指令地址由指令集的位数决定。一般情况下,单片机指令的地址是固定的,占用连续的内存空间。例如,对于8位单片机,指令地址通常为8位,即地...

单片机 next是什么指令?

在单片机中,"next"不是一个指令。单片机的指令集由特定的芯片制造商定义,每个芯片都有自己的指令集。常见的单片机指令包括数据传输、算术运算、逻辑运算、跳...

51单片机 怎么显示汉字,可不可以给我发个现成的程序-ZOL问答

需要用单片机连接外设来显示汉子,LED还是LCD!你的问题没说明白,单片机是显示不...首先要了解LCD的数据线连接方式和指令集;然后写个循环遍历每个字节并发送到屏...

JAVA、C、C++、Python同样是高级语言,为什么只有C和C++可以编写 单片机 程序?

作为一个诞生本是为系统开发的语言,它本身就是与单片机编程匹配的,只不过由于种种原因,C语言进一步发展,成为了一种广泛使用可上可下的编程语言,看起来与Jav...

猜你喜欢