51单片机汇编指令集(英语翻译)
51单片机(宏汇编)指令集5
常量及其表示
数据形式 格 式 取值范围 备注
2进制 ********B
0,1
0进制 ******
0, 1,2...9
****H 0,1...E,F
0CDE3H
符应是0--9
ASCII '**' ASCII 'AD' 使用
示例
10110011B 32768 16进制 最前面一个字
LAB+3: MOV A,30H LAB USB: MOV A,30H SUBB: MOV A,30H LAB: MOV A,MEN+3 R7: MOV A,30H MOV R7,A+3
SJMP $
常量及其表示
常量,就是在汇编时已经确定的值。 在汇编 语言中,常量主要用作指令性语句中的直接操 作数 ,也可用于存储器操作的组成部分(如位移 量,或者为伪指令中的变量输初值。 )
ASM51汇编语言格式
【label:】指令助记符 【操作数1】【 ,操作数2】【,操作数3】【注 释】
1. Label: 标号,冒号结尾,表示程序入口。 字母开头,通常少于8个字符。
2. 指令助记符:也可以是伪指令,后面如果有 操作数的话必须有“空格”或“TAB-键” 将其与操作数分开
ASM51汇编语言格式
意义:主程序从地址0000开始,实际又跳转到 0030H开始的主程序。INT0发生中断时,程序从 0003H开始执行,并跳转到INT0SAV程序执行。 T0发生溢出中断时,从000BH开始执行。
51单片机汇编指令集(附记忆方法)
51 单片机汇编指令集
一、数据传送类指令( 7 种助记符)
MOV(英文为Move :对内部数据寄存器RAM 和特殊功能寄存器SFR 的数据进行 传送; MOV Q Move Code )读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部 RAM 勺数据传送; XCH (Exchange) 字节交换;
XCHD (Exchange low-order Digit) 低半字节交换;
PUSH (Push onto Stack) 入栈;
POP (Pop from Stack) 出栈; 二、算术运算类指令( 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) 除法; 三、逻辑运算类指令( 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) 循环右移;
51单片机英文缩写全称
51单片机英文缩写全称MCS-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 加1DEC Decrement 减1MUL 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 中断返回JMP Jump Indirect SJMP Short Jump 短转移AJMP Absolute Jump 绝对转移LJMP Long Jump 长转移CJNE Compare and Jump if Not Equal 比较不相等则转移DJNZ Decrement and 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) B位为1则转移JNB Jump if the Bit is Not set B位为0则转移JBC Jump if the Bit is set and Clear the bit 位为1则转移,并清除该位NOP No Operation 空操作(5)位操作指令(1种助记符)SETB Set Bit 置位伪指令助记符 英文注释 功能ORG Origin DB Define Byte DW Define Word EQU Equal DATA Data XDATA External Data BIT Bit END End 51外部引脚缩写 英文解释 中文解释RST (9) Reset 复位信号引脚RxD (10--P3.0) Receive Data 串口接收端TxD (11--P3.1) Transmit Data 串口发送端INT0(————) (12--P3.2)Interrupt0 外部中断0信号输入引脚INT1(————) (13--P3.3)Interrupt1 外部中断1信号输入引脚T0 (14--P3.4) Timer
51单片机汇编语言指令集
若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6 若(A) 7-4>9或 (C)=1,则(A) 7-4←(A)7-4+6 逻辑运算指令 25.ANL A,Rn 26.ANL A,direct 27.ANL A,@Ri 28.ANL A,#data 29.ANL direct,A 1 1 将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器 2 1 将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器 1 1 将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器 2 1 将累加器的值与常数做AND的逻辑判断,结果存回累加器 2 1 将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址
110.DJNZ direct,rel 3 2 将直接地址的内容减1,不等于0则跳至rel所指的相关地址 111.NOP 1 1 无动作
指令介绍
指令 算数运算指令 1.ADD A,Rn 2.ADD A,direct 3.ADD A,@Ri 4.ADD A,#data 5.ADDC A,Rn 6.ADDC A,direct 7.ADDC A,@Ri 8.ADDC A,#data 9.SUBB A,Rn 10.SUBB A,direct 11.SUBB A,@Ri 12.SUBB A,0data 13.INC A 14.INC Rn
51单片机指令集
一、数据传送类指令
MOV A,Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,@Ri 内部RAM单元送累加器 1 1 MOV @Ri ,A 累加器送内部RAM单元 1 1 MOV A ,#data 立即数送累加器 2 1 MOV A ,direct 直接寻址单元送累加器 2 1 MOV direct ,A 累加器送直接寻址单元 2 1 MOV Rn,#data 立即数送寄存器 2 1 MOV direct ,#data 立即数送直接寻址单元 3 2 MOV @Ri ,#data 立即数送内部RAM单元 2 1 MOV direct ,Rn 寄存器送直接寻址单元 2 2 MOV Rn ,direct 直接寻址单元送寄存器 2 2 MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR ,#data16 16位立即数送数据指针 3 2 MOVX A ,@Ri 外部RAM单元送累加器(8位地址) 1 2 MOVX @Ri ,A 累加器送外部RAM单元(8位地址) 1 2 MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2 MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2
(完整版)51单片机汇编指令(全)
指令中常用符号说明
Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7)
Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1)
Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址
#data表示8位常数(立即数)
#data16表示16位常数
Add16表示16位地址
Addr11表示11位地址
Rel8位代符号的地址偏移量
Bit表示位地址
@间接寻址寄存器或基址寄存器的前缀
( )表示括号中单元的内容
(( ))表示间接寻址的内容
指令系统
数据传送指令(8个助记符)
助记符中英文注释
MOV Move 移动
MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器A
MOV A , Direct;(direct)→A,直接地址的内容送A
MOV A ,@ Ri;(Ri)→A,RI间址的内容送A
MOV A , #data;data→A,立即数送A
MOV Rn , A;A→Rn,累加器A的内容送寄存器Rn
MOV Rn ,direct;(direct)→Rn,直接地址中的内容送Rn
MOV Rn , #data;data→Rn,立即数送Rn
MOV direct , A;A→(direct),累加器A中的内容送直接地址中
MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址
MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址
MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址
MOV direct , #data;8位立即数送到直接地址中
MCS-51单片机的指令集(分类)
MCS-51单片机的指令集
MCS-51系列单片机的指令系统,按功能分类可分为:数据传送、算术操作、逻辑操作、控制转移和布尔变量操作等五种。具体指令如下列表格所示:
1、数据传送类指令
2、算术操作类指令
3、逻辑操作类指令
4、控制转移类指令
5、布尔变量操作类指令
51单片机code的用法
51单片机code的用法
摘要:
一、51单片机简介
1.51单片机的背景与历史
2.51单片机的主要特点和应用领域
二、51单片机code的概述
1.51单片机code的概念
2.51单片机code的作用和重要性
三、51单片机code的编写与使用
1.常用编程语言及工具
2.编写51单片机code的基本步骤
3.51单片机code的调试与优化
四、51单片机code的应用实例
1.实例一:点亮LED灯
2.实例二:按键控制LED灯的闪烁
3.实例三:串口通信
正文:
一、51单片机简介
单片机(Microcontroller Unit,简称MCU)是一种集成度较高的微处理器,具有体积小、成本低、功能强大等特点。51单片机作为一款经典的单片机产品,起源于1981年由Intel公司推出的8051芯片。后来,众多厂商如
Atmel、STC等纷纷加入51单片机的研究与生产,使得51单片机家族不断壮大。51单片机广泛应用于家电控制、工业自动化、通信、医疗设备等领域。
二、51单片机code的概述
51单片机code,即51单片机的程序代码,是指用某种编程语言编写的用于控制51单片机内部各个功能模块的指令集。51单片机code的质量和效率直接影响到单片机产品的性能和稳定性。为了充分发挥51单片机的性能,需要编写高效、可靠、易于维护的code。
三、51单片机code的编写与使用
常用的编程语言有C语言、汇编语言等,其中C语言因其较高的可读性和编程效率而被广泛应用于51单片机的编程。编写51单片机code的基本步骤如下:
1.分析需求,设计程序框架:根据项目需求,设计程序的整体结构和各个模块的功能。
MCS-51指令集
MCS-51单片机的指令集。
MCS-51系列单片机的指令系统,按功能分类可分为:数据传送、算术操作、逻辑操作、控制转移和布尔变量操作等五种。
1.数据传送类指令:
助记符功能说明字节数振荡周期MOV A,Rn寄存器内容送入累加器112 MOV A,direct直接地址单元中的数据送入累加器212 MOV A,@Ri间接RAM中的数据送入累加器112 MOV A,#data88位立即数送入累加器212 MOV Rn,A累加器内容送入寄存器112 MOV Rn,direct直接地址单元中的数据送入寄存器224 MOV Rn,#data88位立即数送入寄存器212 MOV direct,A累加器内容送入直接地址单元212 MOV direct,Rn寄存器内容送入直接地址单元224 MOV direct,direct直接地址单元中的数据送入直接地址单元324 MOV direct,@Ri间接RAM中的数据送入直接地址单元224 MOV direct,#data88位立即数送入直接地址单元324 MOV @Ri,A累加器内容送入间接RAM单元112 MOV @Ri,direct直接地址单元中的数据送入间接RAM单元224 MOV @Ri,#data88位立即数送入间接RAM单元212 MOV DPTR,#data1616位立即数地址送入地址寄存器324
MOV A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入
累加器
124
MOV A,@A+PC 以PC为基地址变址寻址单元中的数据送入累加
51单片机jnb指令
51单片机jnb指令
51单片机是一种常用的微型控制器,其指令集中有许多有用的指令,其中之一就是jnb指令。本文将详细介绍jnb指令的功能和使用方法。
jnb指令是51单片机中的一条跳转指令,其功能是在某个条件不满足时跳转到指定的地址执行程序。jnb指令的全称是“Jump if Not Bit”,即如果某个位(bit)不为1,则跳转到指定地址。
jnb指令的语法如下:
jnb bit, addr
其中,bit是需要判断的位,可以是一个寄存器中的某个位,也可以是某个IO口的某个引脚;addr是需要跳转到的地址,通常是一个标号。
在使用jnb指令之前,我们需要先了解一些相关的概念。在51单片机中,每个寄存器都是8位的,也就是由8个位组成。我们可以通过位操作指令来对这些位进行读取和设置。而IO口则是单片机与外部设备进行通信的接口,每个IO口又包含了8个引脚,可以通过读取和设置引脚的状态来实现与外部设备的交互。
使用jnb指令时,我们首先需要确定要判断的位是哪一个。如果是寄存器中的位,可以使用与运算来将该位与1进行比较。如果是IO 口的引脚,可以使用相关的读取引脚状态的指令来进行判断。判断
结果为0时,代表该位或引脚为0;判断结果为1时,代表该位或引脚为1。
接下来,我们需要确定跳转的地址。通常情况下,我们会在程序中定义一些标号,然后在jnb指令中使用这些标号来指定跳转的地址。在跳转之后,程序会从指定地址开始执行,继续往下执行。
下面是一个简单的例子来演示jnb指令的使用。假设我们有一个LED灯连接在P1口的第0位引脚上,我们希望当这个引脚为0时,跳转到一个标号为L1的地址执行程序。代码如下:
51单片机汇编指令集(附记忆方法)
51单片机汇编指令集
一、数据传送类指令(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) 出栈;
二、算术运算类指令(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) 除法;
三、逻辑运算类指令(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) 循环右移;
51单片机汇编指令表
指令说明 字节 周期 (数据传递类指令) MOV A,Rn 寄存器传送到累加器 1 1 MOV A,direct 直接地址传送到累加器 2 1 MOV A,@Ri 累加器传送到外部RAM(8 地 1 1 MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器传送到寄存器 1 1 MOV Rn,direct 直接地址传送到寄存器 2 2 MOV Rn,#data 累加器传送到直接地址 2 1 MOV direct,Rn 寄存器传送到直接地址 2 1 MOV direct,direct 直接地址传送到直接地址 3 2 MOV direct,A 累加器传送到直接地址 2 1 MOV direct,@Ri 间接RAM 传送到直接地址 2 2 MOV direct,#data 立即数传送到直接地址 3 2 MOV @Ri,A 直接地址传送到直接地址 1 2 MOV @Ri,direct 直接地址传送到间接RAM 2 1 MOV @Ri,#data 立即数传送到间接RAM 2 2 MOV DPTR, 16 位常数加载到数据指针 3 1 MOVC A, 代码字节传送到累加器 1 2 MOVC A,@A+PC 代码字节传送到累加器 1 2 MOVX A,@Ri 外部RAM(8 地址)传送到累加 1 2 MOVX A,@DPTR 外部RAM(16 地址)传送到累加 1 2 MOVX @Ri,A 累加器传送到外部RAM(8 地 1 2 MOVX @DPTR,A 累加器传送到外部RAM(16 地 1 2 PUSH direct 直接地址压入堆栈 2 2 POP direct 直接地址弹出堆栈 2 2 XCH A,Rn 寄存器和累加器交换 1 1 XCH A, direct 直接地址和累加器交换 2 1 XCH A, @Ri 间接RAM 和累加器交换 1 1 XCHD A, @Ri 间接RAM 和累加器交换低4 位 1 1 (算术运算类指令) INC A 累加器加1 1 1 INC Rn 寄存器加1 1 1 INC direct 直接地址加1 2 1 INC @Ri 间接RAM 加1 1 1 INC DPTR 数据指针加1 1 2 DEC A 累加器减1 1 1 DEC Rn 寄存器减1 1 1 DEC direct 直接地址减1 2 2 DEC @Ri 间接RAM 减1 1 1 MUL AB 累加器和B 寄存器相乘 1 4 DIV AB 累加器除以B 寄存器 1 4 DA A 累加器十进制调整 1 1 ADD A,Rn 寄存器与累加器求和 1 1 ADD A,direct 直接地址与累加器求和 2 1 ADD A,@Ri 间接RAM 与累加器求和 1 1 ADD A,#data 立即数与累加器求和 2 1 ADDC A,Rn 寄存器与累加器求和(带进位) 1 1 ADDC A,direct 直接地址与累加器求和(带进 2 1 ADDC A,@Ri 间接RAM 与累加器求和(带进 1 1 ADDC A,#data 立即数与累加器求和(带进位) 2 1 SUBB A,Rn 累加器减去寄存器(带借位) 1 1 SUBB A,direct 累加器减去直接地址(带借位) 2 1 SUBB A,@Ri 累加器减去间接RAM(带借位) 1 1 SUBB A,#data 累加器减去立即数(带借位) 2 1 (逻辑运算类指令) ANL A,Rn 寄存器“与”到累加器 1 1
51单片机汇编语言指令集
110.DJNZ direct,rel 3 2 将直接地址的内容减1,不等于0则跳至rel所指的相关地址
66.MOVC A,@A+DPTR
1 2 (A) ←((A)+(DPTR))
累加器的值再加数据指针寄存器的值为其所指定地址,将该地址的内容读入累加器 67.MOVC A,@A+PC 68.MOVX A,@Ri 69.MOVX A,@DPTR 70.MOVX @Ri,A 71.MOVX @DPTR,A 72.PUSH direct 73.POP direct 74.XCH A,Rn 75.XCH A,direct 76.XCH A,@Ri 77.XCHD A,@Ri 布尔代数运算 78.CLR C 79.CLR bit 80.SETB C 81.SETB bit 82.CPL C 83.CPL bit 84.ANL C,bit 85.ANL C,/bit 86.ORL C,bit 87.ORL C,/bit 88.MOV C,bit 89.MOV bit,C 90.JC rel 91.JNC rel 92.JB bit,rel 93.JNB bit,rel 94.JBC bit,rel 程序跳跃 1 1 清除进位C为0 2 1 清除直接地址的某位为0 1 1 设定进位C为1 2 1 设定直接地址的某位为1 1 1 将进位C的值反相 2 1 将直接地址的某位值反相 2 2 将进位C与直接地址的某位做AND的逻辑判断,结果存回进位C 2 2 将进位C与直接地址的某位的反相值做AND的逻辑判断,结果存回进位C 2 2 将进位C与直接地址的某位做OR的逻辑判断,结果存回进位C 2 2 将进位C与直接地址的某位的反相值做OR的逻辑判断,结果存回进位C 2 1 将直接地址的某位值存入进位C 2 2 将进位C的值存入直接地址的某位 2 2 若进位C=1则跳至rel的相关地址 2 2 若进位C=0则跳至rel的相关地址 3 2 若直接地址的某位为1,则跳至rel的相关地址 3 2 若直接地址的某位为0,则跳至rel的相关地址 3 2 若直接地址的某位为1,则跳至rel的相关地址,并将该位值清除为0 1 2 (PC)←(PC)+1;(A)←((A)+(PC))累加器的值加程序计数器的值作为其所指 定地址,将该地址的内容读入累加器
51单片机(汇编)指令集4
可使用存储单元的优先级
A R0~R7 Direct @R0,@R1 BIT #DATA
习题
请说明下列语句的寻址方式: MOV 20H,#20H MOV A,20H MOV A,SP MOV A,#20H MOV A,@R0 MOVC A,@A+DPTR
指令的最后一个字符“L”意义为“逻辑”
51单片机指令-逻辑运算指令
异或 XRL A,Rn XRL A,direct XRL A,@Ri XRL A,#data XRL direct,A XRL direct,#data
异或:两者的对应8位, 各位相同时,结果为0, 不同为1。 前面讨论的“与”、 “或”、“异或”,都 是字节中对应位进行运 算。
设HEX中存放着一个16进制 (2进制)数,如果要将它送 到数码管进行显示,首先要 将其转换成3字节的BCD数, 每字节的值<09。假定转换结 果存放到BUFF的连续3个单 元中,依次为:百位;十位 和个位。 数据转换程序如下: CHDBCD: MOV R0,#BUFF MOV A,HEX MOV B,#100 DIV AB MOV @R0,A ;存百位 INC R0 MOV A,B ;余数再除 MOV B,#10 DIV AB MOV @R0,A ;存十位 INC R0 MOV @R0,B ;存个位 RET 显然,BCD数(键盘输入的数) 要转换成2进制或者16进制数, 用乘法就可以了! 只是这里举例的数都小于255。 对“大于255”的数,需要用16 位乘除法子程序处理。
51单片机缩写的英文全称及中文名称
单片机缩写的英文全称及中文名称
PC = programmer counter //程序计数器counter 计算器, 计数器, 计算者, 柜台, 筹码['kauntə]
ACC = accumulate [ə'kju:mjuleit //累加器: 积累: 积聚
PSW = programmer status word //程序状态字status'steitəs, 'stæ-]n. 地位;状态;情形;重要身分
SP = stack point //堆栈指针stack[stæk n. 堆;堆叠vt. 使堆叠;把…堆积起来vi. 堆积,堆叠
DPTR = data point register //数据指针寄存器'redʒistə寄存器
IP = interrupt priority //中断优先级[,intə'rʌpt 中断[prai'ɔrəti] 优先;优先权;[数] 优先次序;优先考虑的事
IE = interrupt enable // 中断使能i'neibl]使能够,使成为可能;授予权利或方法
TMOD = timer mode // 定时器方式(定时器/计数器控制寄存器) ['taimə定时器,计时器mode [məud模式,方式
ALE = alter (变更,可能是)['ɔ:ltə]
PSEN = programmer saving enable //程序存储器使能(选择外部程序存储器的意思) EA = enable all(允许所有中断)完整应该是enable all interrupt