当前位置:文档之家› 51单片机汇编指令表

51单片机汇编指令表

以下是一些常见的51单片机(如8051系列)的汇编指令:

1. 数据传送指令:

- MOV:将一个数据或寄存器的值移动到另一个寄存器或存储器位置。- MOVC:将数据从外部代码存储器复制到累加器或寄存器。

2. 算术运算指令:

- ADD:将累加器与另一个寄存器或存储器中的值相加。

- SUB:从累加器中减去另一个寄存器或存储器中的值。

- INC:将累加器或寄存器的值加1。

- DEC:将累加器或寄存器的值减1。

3. 逻辑运算指令:

- ANL:对累加器和另一个寄存器或存储器中的值进行逻辑与操作。

- ORL:对累加器和另一个寄存器或存储器中的值进行逻辑或操作。

- XRL:对累加器和另一个寄存器或存储器中的值进行逻辑异或操作。- CPL:对累加器或寄存器中的值进行按位取反操作。

4. 条件分支指令:

- CJNE:比较两个值,并在不相等时跳转到指定的地址。

- DJNZ:递减累加器或寄存器,并在结果不为零时跳转到指定的地址。

5. 跳转指令:

- JMP:无条件跳转到指定的地址。

- SJMP:短跳转,跳转到相对于当前地址的指定偏移量。

- AJMP:绝对跳转,跳转到指定的地址。

- LCALL:长调用,将当前地址入栈并跳转到指定的子程序地址。

6. 位操作指令:

- SETB:将某个位设置为1。

- CLR:将某个位清零。

- JB:如果某个位为1,则跳转到指定地址。

- JNB:如果某个位为0,则跳转到指定地址。

单片机汇编指令表

单片机汇编指令表 在单片机的世界里,汇编语言扮演着举足轻重的角色。它是一种低级语言,能够直接与硬件进行交互,提供高效的代码执行效率。下面,我们将详细列出一些常见的单片机汇编指令,以及它们的功能。MOV指令:用于将数据从一个寄存器移动到另一个寄存器。例如,MOV R1, R2将把 R2的内容移动到 R1中。 ADD指令:用于将两个寄存器的内容相加,并将结果存储在目标寄存器中。例如,ADD R1, R2将把 R1和 R2的内容相加,并将结果存储在 R1中。 SUB指令:用于将目标寄存器的值减去源寄存器的值,并将结果存储在目标寄存器中。例如,SUB R1, R2将把 R1的值减去 R2的值,并将结果存储在 R1中。 JMP指令:用于无条件跳转到指定的。例如,JMP 0x1000将跳转到为0x1000的位置。 JZ指令:用于判断目标寄存器的值是否为零。如果为零,则跳转到指定。例如,JZ 0x1000将判断目标寄存器的值是否为零,如果是零,则跳转到为 0x1000的位置。

CMP指令:用于比较两个寄存器的值。它将结果存储在标志寄存器中,供后续的跳转指令使用。例如,CMP R1, R2将比较 R1和 R2的值,并将结果存储在标志寄存器中。 BREQ指令:用于判断标志寄存器的值是否等于零。如果等于零,则跳转到指定。例如,BREQ 0x1000将判断标志寄存器的值是否等于零,如果是零,则跳转到为 0x1000的位置。 以上只是单片机汇编语言中的一小部分指令,但它们是最常用和最基本的。理解和掌握这些指令,对于学习单片机编程和嵌入式系统开发是至关重要的。汇编语言的选择也取决于具体的单片机型号和应用需求。在选择和使用汇编指令时,一定要考虑到代码的可读性、效率和移植性等因素。 在单片机系统中,指令集是其核心部分。这些指令集通常由一系列二进制代码组成,用于控制单片机的操作和运行。下面将介绍一些常见的单片机指令集及其功能。 MOV指令用于将源操作数复制到目标操作数中。例如,将一个数值存储到寄存器中,或者将一个寄存器的值复制到另一个寄存器中。ADD指令用于将两个操作数相加,并将结果存储到目标操作数中。例

51单片机汇编语言带进位加法指令

51单片机汇编语言带进位加法指令 带进位加法指令(4 条)这4 条指令除与[1]功能相同外,在进行加法运算时还需考虑进位问题。ADDC A,data ;(A)+(data)+(C)(A)累加器A 中的内容与直接地址单元的内容连同进位位相加,结果存在A 中ADDC A,#data ;(A)+#data +(C)(A)累加器A 中的内容与立即数连同进位位相加,结果存在A 中ADDC A,Rn ;(A)+Rn+(C)(A)累加器A 中的内容与工作寄存器Rn 中的内容、连同进位位相加,结果存在A 中ADDC A,@Ri ;(A)+((Ri))+(C)(A)累加器A 中的内容与工作寄存器Ri 指向地址单元中的内容、连同进位位相加,结果存在A 中用途:将A 中的值和其后面的值相加,并且加上进位位C 中的值。说明:由于51 单片机是一种8 位机,所以只能做8 位的数学运算,但8 位的运算范围只有0-255,这在实际工作中是不够的,因此就要进行扩展,一般是将2 个8 位的数学运算合起来,成为一个16 位的运算,这样,可以表达的数的范围就可以到达0-65535。如何合并呢?其实很简单,让我们看一个十进制数的例子吧:66+78 这两个数相加,我们根本不在意这个过程,但事实上我们是这样做的:先做6+8(低位),然后再做 6+7,这是高位。做了两次加法,只是我们做的时候并没有刻意分成两次加法 来做罢了,或者说我们并没有意识到我们做了两次加法。之所以要分成两次来做,是因为这两个数超过了一位数所能表达的范围(0-9)。在做低位时产生了进位,我们做的时候是在适当的位置点一下,然后在做高位加法时将这一点加进去。那么计算机中做16 位加法时同样如此,先做低8 位的,如果两数相加 后产生了进位,也要点一下做个标记,这个标记就职进位位C,在程序状态字PSW 中。在进行高位加法是将这个C 加进去。例如:1067H+10A0H,先做 67H+A0H=107H,而107H 显然超过了0FFH,因此,最终保存在A 中的数是

51单片机汇编指令大全

51汇编指令大全 Rn: 表示当前寄存器区的8个工作寄存器R0~R7 Ri: 表示当前寄存器区的R0或R1,可作地址指针即间址寄存器(i=0或1) @: 为间接寄存器或基址寄存器的前缀. Direct: 表示8位内部数据存储单元的地址.它可以是内部RAM的单元地址0~127.特殊功能 寄存器SFR的地址(128~255)或名称, A: 累加器ACC. B: .特殊功能寄存器B,用于MUL和DIV指令中. C: 进位位Cy. #data: 表示包含在指令中的单字节(8位)立即数.如果用16位进制表示,后缀字母为”H”,数据范围00~0FFH,不得一字母开头;如果用16进制表示无须任何后缀,但必须在0~255之间. #data16: 表示包含在指令中的双字节(16位)立即数. Adda16: 表示16位的目的地址.用于LCALL和LJMP指令中,目的地址范围是从0000H~FFFFH的整个64KB存储地址空间. Adda11: 表示11位的目的地址.用于ACALL和AJMP的指令中,目的地址必须和下一条指令第一个字节同处一页. Rel: 表示8位带符号的相对偏移量.用语SJMP和所有的条件转移指令中.偏移量相对于下一条指令的第一个字节计算,在-128~+127范围内取值. DPTR: 为数据指针,可用作16位的地址寄存器. /: 加在位操作的前面,表示对该位进行非运算. bit: 表示内部可寻址位或特殊功能寄存器中的直接寻址位. “(x): 寄存器或地址单元中的内容. ((x)): 有x见解寻址的单元中的内容. <-: 表示将箭头右边的内容传送至箭头的左边. $: 当前指令的地址. 单片机指令系统 (一) 内部数据传送指令 (1) 以累加器A为目的的传送指令: MOV A, #data ;(A)<-data MOV A, direct ;(A)<-(direct) MOV A, Rn ;(A)<-(Rn) MOV A, @Ri ;(A)<- ((Ri)) (2) 以通用寄存器Rn为目的的传送指令: MOV Rn, A ;(Rn)<-(A) MOV Rn, direct ; (Rn)<(direct)- MOV Rn, #data: ; (Rn)<-(data) (3) 以直接地址为目的的传送指令: MOV direct, A ;(direct)<-(A) MOV direct, Rn ; (direct)<-(Rn) MOV direct, direct2 ; (direct)<-(direct2) MOV direct, @Ri ; (direct)<-((Rn)) MOV direct, #data ; (direct)<-data (4) 以寄存器间接地址为目的的传送指令:

51单片机汇编伪指令

51单片机汇编伪指令 0、ALTNAME 功能:这一伪指令用来自定义名字,以替换源程序中原来的保留字,替换的保留字均可等效地用于子程序中。 格式:ALTNAME保留字自定义名 注意:自定义名与保留字之间首字符必须相同。 1、BIT 功能:指令用于将一个位地址赋给指定的符号名。 指令格式:符号名 BIT 位地址经BIT 指令定义过的位符号名不能更改。 例如:X_ON BIT 60H ;定义一个绝对位地址 X_OFF BIT 24h.2 ;定义一个绝对位地址 BIT---定义位命令 格式:字符名称 BIT位地址 功能用于给字符名称定义位地址。 SPK BIT P3.7经定义后,允许在指令中用SPK代替P3.7。 2、BSEG 功能:绝对选择指令指令BSEG选择绝对位寻址数据段 指令格式如下:BSEG [AT 绝对地址表达式] 3、CODE 功能:用于将程序存储器ROM 地址赋给指定的符号名。 指令格式:符号名 CODE 表达式 例如:RESET CODE 00H 4、CSEG 功能:绝对选择指令CSEG选择绝对代码段; 指令格式如下:CSEG [AT 绝对地址表达式] 5、DATA(BYTE)

功能:指令用于将一个内部RAM 的地址赋给指定的符号名 指令格式:符号名 DATA 表达式 数值表达式的值应在0~255 之间,表达式必须是一个简单再定位表达式。 例如:REGBUF DATA(BYTE)40H PORT0DATA(BYTE)80H DATA与BYTE的区别: DATA与BYTE是相类似的伪指令。当程序运行到DATA伪指令定义的符号名时,该符号名将被显示;而由BYTE定义的符号名不被显示。 6、DB 功能:DB伪指令用于定义一个连续的存储区,给该存储区的存储单元赋值。该伪指令的参数即为存储单元的 值,在表达式中对变元个数没有限制,只要此条伪指令能容纳在源程序的一行内,其格式为:标号:DB 表 达式只要表达式不是字符串,每一表达式值都被赋给一个字节。计算表达式值时按16位处理,但其结果只取 低8位,若多个表达式出现在一个DB伪指令中,它们必须以逗号分开。表达式中有字符串时,以单引号“'” 作分隔符,每个字符占一个字节,字符串不加改变地被存在各字节中,并不将小写字母转换成大写字母。 例如:DB 00H 01H 03H 46H DB 'This is a demo!' 7、DBIT 功能:在内部数据区的BIT 段以位为单位保留存储空间。 指令格式:[标号:] DBIT数值表达式其操作类似于DB。 8、DS 功能:DS为定义存储内容的伪指令,用它定义一个存储区,并用指定的参数填满该存储区。DS伪指令包含两 个变元,第一个变元定义了存储区的长度的字节数,在汇编时,汇编程序将跳过这些单元把其它指令汇编在

汇编语言指令表

汇编语言指令表 This model paper was revised by the Standardization Office on December 10, 2020

伪指令 1、定位伪指令 ORG m 2、定义字节伪指令 DB X1,X2,X3,…,Xn 3、字定义伪指令 DW Y1,Y2,Y3,…,Yn 4、汇编结束伪指令 END 寻址方式 MCS-51单片机有五种寻址方式: 1、寄存器寻址 2、寄存器间接寻址 3、直接寻址 4、立即数寻址 5、基寄存器加变址寄存器间接寻址 6、相对寻址 7、位寻址 数据传送指令 一、以累加器A为目的操作数的指令(4条) MOV A,Rn ;(Rn)→A n=0~7 MOV A,direct ;( direct )→A MOV A,@Ri ;((Ri))→A i=0~1 MOV A,#data ;data →A 二、以Rn为目的操作数的指令(3条) MOV Rn ,A;(A)→ Rn MOV Rn ,direct;( direct )→ Rn MOV Rn ,#data;data → Rn 三、以直接寻址的单元为目的操作数的指令(5条) MOV direct,A;(A)→direct MOV direct,Rn;(Rn)→direct MOV direct,direct ;(源direct)→目的direct MOV direct,@Ri;((Ri))→direct MOV direct,#data;data→direct 四、以寄存器间接寻址的单元为目的操作数的指令(3条) MOV @Ri,A;(A)→(Ri) MOV @Ri,direct;(direct)→(Ri) MOV @Ri,#data;data→ (Ri) 五、十六位数据传送指令(1条) MOV DPTR,#data16;dataH→DPH,dataL →DPL 六、堆栈操作指令 进栈指令 PUSH direct ;(SP)+1 → SP ,(direct)→ SP 退栈指令

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) 循环右移; RRC (Rotate Right throught the Carry flag) SWAP (Swap) 低 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 (Decreme nt 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则转移,并清除该位;

51单片机总汇编语言

51单片机汇编语言 a)单个与多个LED灯,位操作与字节操作—输出 ORG 0000H START: CLR C MOV P0.0,C MOV P1.1,C MOV P2.2,C MOV P3.3,C CLR A

CPL A MOV P0,A MOV P1,A MOV P2,A MOV P3,A END 程序说明: 可以用7段数码管来代替各端口的8个LED灯,硬件的这种显示方式使得数字表达成为实用。数字显示由数码管的硬件结构与工作原理(7个LED灯的几何变形组合)和数字表达的数据格式确定。 如: 共阳极数码管显示数字3,则有P1口送数据#4FH;MOVP1, #0B0H 共阴极数码管显示数字8,则有P1口送数据#80H;MOVP1, #7F H 用数据表表示则有: TABshuziyang: //阳极管(共阴极管取反即可) DB(数字0~F) C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H,88H,83H,C 6H,A1H,86H,8EH

TABshuziyin: //阴极管(共阳极管取反即可) DB(数字0~F) 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,3 9H,5EH,79H,71H b)单个与多个LED灯闪烁—延时子程序—注意定时器 前边已经看到,通过改变位或字节的赋值,可以使得LED灯亮或灭,以此形成闪烁效果。但是硬件的响应时间太短,使得效果不佳。虽然可以通过改变单片机的时钟设置来改变效果。但时钟的改变极其不方便,因此需要利用延时指令(注意定时器功能)获得理想的效果。延时效果是利用单片机空转来实现的。 ACALLDELAY;调延时子程序 ************************************************* ************************

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) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap) 低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则转移;

(完整版)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位立即数送到直接地址中 MOV @Ri , A;(A)→@Ri,累加器的内容送到间址中 MOV @Ri , direct;direct→@Ri,直接地址中的内容送到间址中 MOV @Ri , #data; data→@Ri ,8位立即数送到间址中 MOV DPTR , #data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令) (MOV类指令共16条)

51单片机汇编指令

51单片机汇编指令 51单片机汇编指令详解及应用 51单片机是一种常见的微控制器,广泛应用于工业控制、智能家居、物联网等领域。掌握51单片机的汇编指令及其应用对于从事嵌入式系统开发的工程师来说具有重要意义。本文将详细介绍51单片机的常用汇编指令及其应用实践。 一、基础知识 在了解51单片机的汇编指令之前,我们首先需要了解单片机的结构。51单片机主要包括CPU、存储器、I/O口、定时器/计数器、中断系统等部分。存储器包括RAM和ROM,其中RAM用于存储运行时数据,ROM用于存储程序代码。I/O口是单片机与外部设备进行交互的接口。定时器/计数器用于产生定时信号和控制脉冲。中断系统则用于实现程序的异常处理。 二、指令详解 1、MOV指令:MOV是Move的缩写,用于将数据从一个寄存器或内存单元移动到另一个寄存器或内存单元。例如,MOV R1, #data将把data 的值存入R1寄存器。 2、ADD指令:ADD是Add的缩写,用于将两个数相加,结果存回原操作数。例如,ADD A, R2将把R2寄存器的值与A寄存器的值相加,

结果存回A寄存器。 3、SUB指令:SUB是Subtract的缩写,用于将两个数相减,结果存回原操作数。例如,SUB A, R2将把R2寄存器的值从A寄存器的值中减去,结果存回A寄存器。 4、JMP指令:JMP是Jump的缩写,用于无条件跳转到指定地址执行程序。例如,JMP 0x1000将跳转到地址为0x1000的内存单元执行程序。 5、JZ指令:JZ是Jump if Zero的缩写,用于当操作数为零时跳转到指定地址执行程序。例如,JZ 0x1000将判断A寄存器的值是否为零,如果是零则跳转到地址为0x1000的内存单元执行程序。 6、DJNZ指令:DJNZ是Decrement and Jump if Not Zero的缩写,用于将操作数减1,判断是否为零,不为零则跳转到指定地址执行程序。例如,DJNZ R1, 0x1000将把R1寄存器的值减1,然后判断结果是否为零,如果不为零则跳转到地址为0x1000的内存单元执行程序。 三、应用实践 下面以一个简单的例子来说明如何使用上述指令实现一个闪烁的LED 灯。假设LED灯连接在P1.0口,且单片机的时钟频率为12MHz。 在上述代码中,我们使用了MOV指令将P1口清零,然后通过HERE标签实现LED灯的闪烁。CLRF和SETBF指令分别用于将P1.0口设置为

51单片机汇编程序

51单片机汇编程序 1. 简介 51单片机是一种常用的8位单片机芯片,具有广泛的应用领域。51单片机的编程语言主要有汇编语言、C语言和底层 汇编语言。本文主要介绍51单片机的汇编程序。 2. 汇编程序基础 2.1 寄存器 51单片机的CPU有4个8位寄存器(A、B、DPTR、PSW)和一个16位寄存器(PC)。在汇编程序中,我们可以使用这些寄存器来进行各种操作。 •A寄存器(累加器):用于存储数据和进行算术运 算。 •B寄存器:辅助寄存器,可用于存储数据和进行算 术运算。 •DPTR寄存器:数据指针寄存器,用于存储数据存 取的地址。

•PSW寄存器:程序状态字寄存器,用于存储程序运行状态信息。 •PC寄存器:程序计数器,用于存储当前执行指令的地址。 2.2 指令集 51单片机的指令集包含了多种汇编指令,可以用来进行数据操作、算术运算、逻辑运算、控制流程等。常用的汇编指令有: •MOV:数据传送指令。 •ADD、SUB:加法和减法运算指令。 •ANL、ORL、XRL:逻辑运算指令。 •MOVX:外部RAM的读写指令。 •CJNE、DJNZ:条件分支指令。 •LCALL、RET:函数调用和返回指令。

2.3 编写一个简单的汇编程序 下面是一个简单的汇编程序示例,用于将A寄存器中的数 据加1,并将结果存储到B寄存器中。 ORG 0x0000 ; 程序的起始地址 MOV A, #0x01 ; 将A寄存器赋值为1 ADD A, #0x01 ; 将A寄存器加1 MOV B, A ; 将A寄存器的值传送到B寄存器END ; 程序结束 在上面的示例中,ORG指令用于指定程序的起始地址,MOV 指令用于将A寄存器赋值为1,ADD指令用于将A寄存器加1,MOV指令用于将A寄存器的值传送到B寄存器,END指令用 于标记程序结束。 3. 汇编语言的应用 51单片机的汇编语言广泛应用于各种嵌入式系统中,包括智能家居、工业自动化、仪器仪表等领域。汇编程序具有以下特点:

51单片机汇编指令总结

51单片机汇编指令总结 51单片机汇编指令总结 数据传输指令 一.片内RAM数据传输指令 1.以累加器A为目的操作数的指令:MOVA,RnMOVA,directMOVA,@RiMOVA,#data 2.以寄存器Rn为目的操作数的指令:MOVRn,AMOVRn,directMOVRn,data 3.以直接地址为目的操作数的指令:MOVdirect,AMOVdirect,RnMOVdirect1,derect2MOVdirect,@RiMOVdirect,#data 4.间接地址为目的操作数的指令:MOV@Ri,AMOV@Ri,directMOV@Ri,#data 5.十六位数据传送指令:MOVDPTR,#data16 二.累加器A与片外RAM数据传送指令:MOVXA,@RiMOVXA,@DPTRMOVX@Ri,AMOVX@DPTR,A三.查表寻址:MOVCA,@A+DPTR(先PC←(PC)+1,后A←((A)+(DPTR)))+MOVCA,@A+PC(先PC←(PC)+1,后A←((A)+(PC)))四.交换指令: 1.字节交换指令: XCHA,RnXCHA,directXCHA,@Ri 2.半字节交换指令:XCHDA,@Ri 3.累加器半字节交换指令:SWAPA 五.栈操作指令:1.PUSH(入栈指令)PUSHdirect2.POP(出栈指令)POPdirect 算术运算指令: 一.加法减法指令: 1.加法指令: ADDA,RnADDA,directADDA,@RiADDA,#data2.带进位加法指

令: ADDCA,RnA←(A)+(Rn)+CYADDCA,directA←(A)+(direct)+CYADDCA,@RiA←(A)+((Ri))+CYADDCA,#dataA←(A)+(data)+CY3.带借位减法指令: SUBBA,RnA←(A)-CY-(Rn)SUBBA,directA←(A)-CY-(direct)SUBBA,@RiA←(A)-CY-((Ri))SUBBA,#dataA←(A)-CY-#data二.乘法除法指令: 1.乘法指令: MULABBA←(A)×(B)高字节放在B中,低字节放在A中2.除法指令: DIVABA←(A)÷(B)的商,(B)←(A)÷(B)的余数三.加1减1指令: 1.加1指令: INCAA←(A)+1INCRnRn←(Rn)+1 INCdirectdirect←(direct)+1INC@Ri(Ri)←((Ri))+1INCDPTRDPTR←(DPTR)+12.减1指令:DECADECRnDECdirectDEC@Ri四.十进制调制指令: DAA调整累加器A的内容为BCD码 逻辑操作指令: 一.逻辑与、或、异或指令:1.逻辑与指令:ANLA,RnANLA,directANLA,@RiANLA,#data2.逻辑或这令:ORLA,RnORLA,directORLA,@RiORLA,#dataORLdirect,AORLdirect,#data3.逻辑异或指令:XRLA,RnXRLA,directXRLA,@RiXRLA,#dataXRLdirect,AXRLdirect,#data二.清零、取反指令:1.累加器A清零指令:CRLA2.累加器A取反指令:CPLA 三.循环位移指令:1.累加器A循环左移指令:RLA2.累加器A循环右移指令:RRA3.累加器A连同进位位循环左移指令:RLCA4.累加器A连同进位位循环右移指令:RRCA控制转移指令:

51单片机汇编指令及伪指令小结

51单片机汇编指令及伪指令小结 51单片机汇编指令及伪指令小结 51单片机是一种广泛应用的基于汇编语言的微控制器。它的汇编指令集非常丰富,包括了基本的数据处理、逻辑运算、分支跳转、数据存储和输入输出等指令。汇编指令的灵活运用可以实现各种复杂的功能,因此掌握51单片机的汇编指令是开发嵌入式系统的重要基础。 1. 基本数据处理指令 51单片机汇编指令集包括了一系列基本的数据处理指令,如加法(add)、减法(sub)、乘法(mul)、除法(div)等。这些指令用于实现对数据的基本运算操作。 2. 逻辑运算指令 逻辑运算指令用于实现各种逻辑运算,如与(and)、或(or)、非(not)、异或(xor)等。这些指令通常用于处理数据的开关控制、状态判断等功能。 3. 分支跳转指令 分支跳转指令用于实现程序的流程控制。常用的分支跳转指令包括无条件跳转(jmp)、条件跳转(jz、jnz、jc、jnc等)、循环跳转(loop)等。这些指令可以根据条件和需求设置程序的执行流程,实现各种循环、分支等功能。 4. 数据存储指令 数据存储指令用于实现数据的存储和加载操作。常用的存储指

令包括将数据存储到寄存器或内存中(mov)、将数据从寄存器 或内存中加载(ld)等。这些指令通过对数据的存储和加载,实 现对数据的读写操作。 5. 输入输出指令 输入输出指令用于实现与外设的数据通信。常用的输入输出指令包括从端口输入(instr)、输出到端口(outstr)等。这些指令通 过与外部设备的数据交互,实现嵌入式系统与外设的连接。 除了以上的基本指令外,51单片机还提供了一些伪指令,用 于程序的组织和调试。这些伪指令包括宏指令、条件编译指令、调试指令等。 1. 宏指令 宏指令是一种通过宏展开的方式来扩展汇编代码的指令。它通过提前定义一些宏,并在代码中使用这些宏来生成更复杂的汇编代码。宏指令的好处是可以简化代码的书写,使得程序的逻辑更清晰。 2. 条件编译指令 条件编译指令用于根据编译时的条件来选择性地编译代码。这些指令可以根据宏定义的条件来判断是否编译某段代码,从而实现对不同平台、不同环境的适应。 3. 调试指令 调试指令用于程序的调试和测试。它们可以实现对程序的单步执行(step)、断点设置(break)、寄存器查看和修改等功能。这

C51单片机汇编语言指令集

51汇编语言指令集 符号定义表 符号含义 Rn R0~R7寄存器n=0~7 Direct 直接地址,内部数据区的地址RAM(00H~7FH) SFR(80H~FFH) B,ACC,PSW,IP,P3, IE,P2,SCON,P1,TCON,P0 @Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH) #data 8位常数 #data16 16位常数 Addr16 16位的目标地址 Addr11 11位的目标地址 Rel 相关地址 bit 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位 指令介绍 指令字 节周 期 动作说明 算数运算指令 1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果 存回累加器 2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结 果存回累加器 3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结 果存回累加器 4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加 器 5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相 加,结果存回累加器 6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C 相加,结果存回累加器 7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C 相加,结果存回累加器 8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果 存回累加器 9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位 C,结果存回累加器 10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位 C,结果存回累加器 11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位 C,结果存回累加器 12.SUBB A,0data 2 1 将累加器的值减常数值减借位C,结 果存回累加器 13.INC A 1 1 将累加器的值加1 14.INC Rn 1 1 将寄存器的值加l 15.INC direct 2 1 将直接地址的内容加1 16.INC @Ri 1 1 将间接地址的内容加1 17.INC DPTR 1 1 数据指针寄存器值加1 说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH 溢出至00H时,会使高字节(DPH)加1,不影响任何标志位 18.DEC A 1 1 将累加器的值减1 19.DEC Rn 1 1 将寄存器的值减1 20.DEC direct 2 1 将直接地址的内容减1 21.DEC @Ri 1 1 将间接地址的内容减1 22.MUL AB 1 4 将累加器的值与B寄存器的值相 乘,乘积的低位字节存回累加器, 高位字节存回B寄存器 说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0 23.DIV AB 1 4 将累加器的值除以B寄存器的值,结果 的商存回累加器,余数存回B寄存器 说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C)及溢出位(OV)被清除为0 24.DA A 1 1 将累加器A作十进制调整, 若(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 逻辑运算指令 ANL A,Rn 1 1 将累加器的值与寄存器的值做AND的逻 辑判断,结果存回累加器 ANL A,direct 2 1 将累加器的值与直接地址的内容做AND 的逻辑判断,结果存回累加器 ANL A,@Ri 1 1 将累加器的值与间接地址的内容做AND 的逻辑判断,结果存回累加器 ANL A,#data 2 1 将累加器的值与常数做AND的逻辑判断, 结果存回累加器 ANL direct,A 2 1 将直接地址的内容与累加器的值做AND 的逻辑判断,结果存回该直接地址 ANL direct,#data 3 2 将直接地址的内容与常数值做AND 的逻辑判断,结果存回该直接地址ORL A,Rn 1 1 将累加器的值与寄存器的值做OR的逻 辑判断,结果存回累加器 32.ORL A,direct 2 1 将累加器的值与直接地址的内容做OR 的逻辑判断,结果存回累加器33.ORL A,@Ri 1 1 将累加器的值与间接地址的内容做OR 的逻辑判断,结果存回累加器

51单片机指令总结

51单片机指令总结 51单片机指令总结 A,Rn,@Rn,dir,#data,@DPTR 1.内部RAM与SFR的传送指令MOVdir为目的操作数:A,Rn,@Ri,dir,#dataA为目的操作数:Rn,@Ri,dir,#dataRn为目的操作数:A,dir,#data@Ri为目的操作 数:A,dir,#dataDPTR为目的操作数:#data 2.外部RAM只能与A进行数据传送,只能通过寄存器间接寻址,只有传送类指令,并用MOVX表示MOVXA,@RiMOVXA,@DPTRMOVX@Ri,AMOVX@DPTR,A 3.ROM只能与A进行数据传送,只能通过变址寻址,只有读操作,并用MOVC 表示MOVCA,@A+PCMOVCA,@A+DPTR 4.交换指令XCH 只能以A为目的操作数:Rn,@Ri,dir 低半字节交换指令XCHDA,Rn 高、低半字节交换指令SWAPA 5.加减指令ADD,ADDC,SUBB 只能以A为目的操作数:Rn,@Ri,dir,#data 逻辑运算指令ANL,ORL,XRLA为目的操作数:Rn,@Ri,dir,#datadir为目的操作数:A,#data 加1指令INC 目的操作数:A,Rn,@Ri,dir,DPTR 减1指令DEC 目的操作数:A,Rn,@Ri,dir 零转移JZ非零转移JNZ减一非零转移DJNZ目的操作数为Rn或dirCJNE A为目的操作数:#data、dirRn为目的操作数:#data@Ri为目的操作数:#data

扩展阅读:51单片机汇编指令总结 数据传输指令 一.片内RAM数据传输指令 1.以累加器A为目的操作数的指令:MOVA,RnMOVA,directMOVA,@RiMOVA,#data 2.以寄存器Rn为目的操作数的指令:MOVRn,AMOVRn,directMOVRn,data 3.以直接地址为目的操作数的指令:MOVdirect,AMOVdirect, RnMOVdirect1,derect2MOVdirect,@RiMOVdirect,#data 4.间接地址为目的操作数的指令:MOV@Ri,AMOV@Ri,directMOV@Ri,#data 5.十六位数据传送指令:MOVDPTR,#data16 二.累加器A与片外RAM数据传送指令:MOVXA,@RiMOVXA,@DPTRMOVX@Ri,AMOVX@DPTR,A三.查表寻址:MOVCA,@A+DPTR(先PC←(PC)+1,后A←((A)+(DPTR)))+MOVCA,@A+PC(先PC←(PC)+1,后A←((A)+(PC)))四.交换指令: 1.字节交换指令: XCHA,RnXCHA,directXCHA,@Ri 2.半字节交换指令:XCHDA,@Ri 3.累加器半字节交换指令:SWAPA五.栈操作 指令:1.PUSH(入栈指令)PUSHdirect2.POP(出栈指令)POPdirect 算术运算指令: 一.加法减法指令: 1.加法指令: ADDA,RnADDA,directADDA,@RiADDA,#data2.带进位加法指令: ADDCA,RnA←(A)+(Rn)+CYADDCA,directA←(A)+(direct)+CYADDCA,@RiA←(A)+((Ri))+CYADDCA,#dataA←(A)+(dat a)+CY3.带借位减法指令:

相关主题
文本预览
相关文档 最新文档