单片机汇编程序算术逻辑运算

合集下载

第三章 80C51单片机汇编语言程序设计(本科)

第三章 80C51单片机汇编语言程序设计(本科)
返回
ORG START: CLR MOV MOVX MOV INC MOVX SUBB JNC XCH SJMP BIG1: MOVX BIGO: INC MOVX END
8000H C;进位清0 DPTR, #ST1; 设数据指针 A, @DPTR; A←((ST1)),取N1 R2, A; 暂存N1 DPTR; DPTR← ST2(指向N2单元) A, @DPTR; 取N2存于A中 A, R2;N1,N2比较(N2-N1,差在A中) BIG1;N2≥N1,转BIG1,N2<N1,顺序执行 A, R2;N1,N2互换,A ←N1 BIG0 A, @DPTR;A ←N2 DPTR; DPTR← ST3(指向N3单元) @DPTR, A;ST3 ←大数 返回
等、不相等等各种条件判断。
例:两个8位无符号二进制数比较大小。假设在外部RAM中有 ST1、ST2和ST3共3个连续单元(单元地址从小到大),其中ST1
、ST2单元中存放着两个8位无符号二进制数N1,N2,要求找出其
中的大数并存入ST3单元中。
解:(1)分析任务:比较两个数的大小
(2)算法:算术运算、控制转移 (3)程序结构:单分支 (4)数据类型:单字节、二进制、无符号数 (5)数据结构:单元地址升序排列
思考题
3) ORG MOV MOV MOVX ADD MOVX DEC DEC MOVX ADDC 1000H RO, R1, A, A, @R1, R0; R1; A, A, #52H;加数N1的低字节地址送地址指针R0 #55H;加数N2的低字节地址送地址指针R1 @R1; 取N2的低字节 @R0; N1、N2低字节相加 A; 保存N1、N2低字节和 修改加数N1的地址指针内容 修改加数N2的地址指针内容 @R1; 取N2的中间字节 @R0; N1、N2中间字节带低字节和进位相加

单片机汇编实验报告

单片机汇编实验报告

单片机汇编实验报告
《单片机汇编实验报告》
实验目的:通过实验,掌握单片机汇编语言的基本语法和操作方法,了解单片
机的工作原理和程序设计。

实验内容:本次实验主要涉及单片机汇编语言的基本指令和操作,包括数据传送、算术运算、逻辑运算、循环控制、条件控制等内容。

通过实验,学生将学
会如何编写简单的单片机程序,并能够通过仿真和调试实现程序的正确运行。

实验步骤:
1. 熟悉单片机汇编语言的基本指令和操作方法;
2. 编写简单的单片机程序,包括数据传送、算术运算、逻辑运算等;
3. 运行程序并进行仿真和调试,确保程序的正确运行;
4. 分析程序的运行结果,总结实验中遇到的问题和解决方法。

实验结果:通过实验,学生将掌握单片机汇编语言的基本语法和操作方法,能
够编写简单的单片机程序,并能够通过仿真和调试实现程序的正确运行。

同时,学生还将对单片机的工作原理和程序设计有更深入的了解,为以后的学习和实
践奠定基础。

结论:通过本次实验,学生将对单片机汇编语言有更深入的了解,并能够熟练
地编写单片机程序。

同时,实验还将培养学生的动手能力和解决问题的能力,
为将来的学习和工作打下坚实的基础。

希望学生能够在以后的学习和实践中不
断提升自己,为科技创新做出更大的贡献。

单片机指令集的汇编语言编程方法介绍

单片机指令集的汇编语言编程方法介绍

单片机指令集的汇编语言编程方法介绍汇编语言是一种低级语言,它直接与计算机硬件进行交互,被广泛应用于单片机编程中。

本文将介绍单片机指令集的汇编语言编程方法。

一、简介单片机指令集是特定型号单片机支持的操作指令的集合。

每个指令都对应着特定的功能,通过组合和调用这些指令,可以实现复杂的计算和控制任务。

二、基本指令1. 数据传送指令数据传送指令用于将数据从一个位置传送到另一个位置。

常见的指令有MOV(将源操作数传送到目的操作数)、LDR(将存储器位置的数据传送到寄存器)和STR(将寄存器中的数据传送到存储器位置)等。

2. 算术指令算术指令用于进行数学运算,包括加法、减法、乘法和除法等。

常见的指令有ADD(将两个操作数相加并将结果存储到目的操作数中)、SUB(将目的操作数减去源操作数并将结果存储到目的操作数中)等。

3. 逻辑指令逻辑指令用于进行逻辑运算,包括与、或、非和异或等。

常见的指令有AND(将两个操作数进行按位与运算并将结果存储到目的操作数中)、ORR(将两个操作数进行按位或运算并将结果存储到目的操作数中)等。

4. 控制指令控制指令用于控制程序的执行流程,包括无条件跳转、条件跳转和中断等。

常见的指令有B(无条件跳转到指定的地址执行)、BEQ (当条件满足时跳转到指定的地址执行)等。

三、编程方法1. 熟悉指令集编程前需要详细了解所使用的单片机的指令集,包括指令的功能、操作数的类型和寻址方式等。

只有深入了解指令集,才能灵活运用指令编写程序。

2. 设计算法在开始编程之前,需要分析问题,设计出解决问题的算法。

算法应考虑输入、处理和输出等方面,合理利用指令集中的指令实现算法的逻辑。

3. 编写汇编程序根据算法,以汇编语言的格式编写程序。

程序的编写过程需要遵循指令的语法规则和寻址方式,并注意程序的可读性和效率。

4. 调试和优化程序编写完成后,需要进行程序的调试和优化。

通过单步执行程序,观察和检查程序执行过程中的中间结果,确保程序能够正确地执行。

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

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. 条件编译指令条件编译指令用于根据编译时的条件来选择性地编译代码。

51单片机汇编语言教程:13课单片机逻辑与或异或指令详解

51单片机汇编语言教程:13课单片机逻辑与或异或指令详解

51单片机汇编语言教程:第13课-单片机逻辑与或异或指令详解结果11111001而所有的或指令,就是将与指仿中的ANL换成ORL,而异或指令则是将ANL换成XRL。

即或指令:ORL A,Rn;A和Rn中的值按位'或',结果送入A中ORL A,direct;A和与间址寻址单元@Ri中的值按位'或',结果送入A中ORL A,#data;A和立direct中的值按位'或',结果送入A中ORL A,@Ri;A和即数data按位'或',结果送入A中ORL direct,A;direct中值和A中的值按位'或',结果送入direct中ORL direct,#data;direct中的值和立即数data按位'或',结果送入direct中。

异或指令:XRL A,Rn;A和Rn中的值按位'异或',结果送入A中XRL A,direct;A和direct中的值按位'异或',结果送入A中XRL A,@Ri;A和间址寻址单元@Ri中的值按位'异或',结果送入A中XRL A,#data;A和立即数data按位'异或',结果送入A中XRL direct,A;direct中值和A中的值按位'异或',结果送入direct中XRL direct,#data;direct中的值和立即数data按位'异或',结果送入direct中。

练习:MOV A,#24HMOV R0,#37HORL A,R0XRL A,#29HMOV35H,#10HORL35H,#29HMOV R0,#35HANL A,@R0四、控制转移类指令无条件转移类指令短转移类指令AJMP addr11长转移类指令LJMP addr16相对转移指令SJMP rel上面的三条指令,如果要仔细分析的话,区别较大,但开始学习时,可不理会这么多,统统理解成:JMP标号,也就是跳转到一个标号处。

单片机汇编程序算术逻辑运算

单片机汇编程序算术逻辑运算

单元中内容减1。
该组指令的操作不影响PSW。
2021/5/
单片机原理B及a接ck口技术
8、 十进制调整指令(1条)
汇编指令格式 DA A;
机器码格式 1101 0100
操作
若 (A0-3)>9或AC=1,则(A0-3)+6→A0-3 同时,若(A4-7)>9或CY=1,则(A4-7)+6→A4-7
SUBB A,direct;1001 0101 (A) -CY -(direct) →A direct
SUBB A,@Ri; 1001 011i (A) -CY -((Ri)) →A
SUBB A, #data; 1001 0100 (A) -CY -#data →A data
注释 将工作寄存器内容与CY及 累加器A中的数相减, “差”存放于累加器A中 将内部RAM单元内容与 CY及累加器A中的数相减, “差”存放于累加器A中 将间接寻址(Ri为R0或R1)
结果为:(A)=74H 标志位为:Cy=0 AC=0 OV=1 P=0
2021/5/
单片机原理B及a接ck口技术
4、 乘法指令(1条)
汇编指令格式
机器码格式
操作
MUL AB

1010 0100 (A)×(B)→B15-8A7-0
该指令将累加器A和寄存器B中两个无符号数相乘,所得160111B(即67的BCD码),CY内容为1。求执行下列
指令后的结果。
ADDC A,R3;
DA A;
解:先执行ADDC A,R3; (A): 0101 0110 BCD:56
(R3): 0110 0111 BCD:67 (+)(CY): 0000 0001 BCD:01

单片机汇编语言指令查表

单片机汇编语言指令查表

目录表1 寻址方式与相应的寻址空间 (2)1.1数据传送指令MOV (2)1.2程序存储器取数据指令MOVX,MOVC (3)1.3 数据交换指令XCH,XCHD,SWAP (3)1.4 逻辑运算指令ANL,ORL(按位进行) (4)续表1.4 逻辑运算指令XRL CLR CPL RL RLC RR RRC(按位进行) (5)1.5 控制转移指令LJMP AJMP SJMP JMP JZ JNZ CJNE (6)续表1.5 控制转移指令DJNZ LCALL ACALL RET RETI NOP (7)1.6 布尔处理(位操作)指令CLR SETB CPL ANL ORL (8)续表1.6 布尔处理(位操作)指令JC JNC JB JNB JBC (9)1.7堆栈操作指令PUSH POP (10)2.MCS-51系列单片机算术运算指令表ADD ADDC SUBB INC DEC MUL DIV DA (10)表1 寻址方式与相应的寻址空间1.1数据传送指令MOV方式 利用的变量 使用的空间寄存器 R0∽R7,A ,B ,CY ,DPTR直接寻址 direct片内RAM 低128字节特殊功能寄存器SFR寄存器间址 @Ro ,@R1 SP @R0,@R1,@DPTR片内RAM 片外RAM立即数 #data程序存储器 基址加变址 @A+PC @A+DPTR程序存储器 相对寻址 PC+rel程序存储器位寻址bit片内RAM 的20H ∽2FH 部分SFR目的操作数汇编指令机器码功能字节数 机器周期A 累加器 立即数送AMOV A ,#data 74H data data 传至A 2 1 内部RAM 或SFR 内容送AMOV A ,direct E5H direct(direct)传至A2 1 寄存器内容送AMOV A ,Rn (n=0∽7) E8H ∽EFH 11101rrr (Rn)传至A 1 1 内部RAM 内容送A MOV A ,@Ri (i=0,1) 1110011i((Ri))传至A 1 1 Direct内部RAM 或SFR立即数送内部RAM 或SFR MOV direct ,#data 75H direct data data 传至direct 3 2 内部RAM 和SFR 直接直接传送 MOV direct ,direct 85H direct direct (direct)传至direct 3 2 累加器内容送内部RAM 或SFR MOV direct ,AF5H direct(A)传至direct 2 1 寄存器内容送内部RAM 或SFR MOV direct ,Rn (n=0∽7) 10001rrr direct (Rn)传至direct 2 2 内部RAM 内容送内部RAM 或SFRMOV direct ,@Ri (i=0,1) 1000011i direct ((Ri))传至direct 2 2 Rn 寄存器立即数送寄存器 MOV Rn,#data (n=0∽7) 01111rrr data data 传至Rn 2 1 内部RAM 或SFR 内容送寄存器MOV Rn,direct (n=0∽7) 10101rrr direct (direct)传至Rn 2 2 累加器内容送寄存器MOV Rn,A (n=0∽7) 11111rrr (A)传至Rn 1 2 @Ri 内部RAM立即数送内部RAMMOV @Ri,#data (i=0,1) 0111011i data data 传至(Ri) 2 1 内部RAM 或SFR 内容送内部RAMMOV @Ri,direct (i=0,1) 1010011i direct (direct)传至(Ri) 2 2 累加器内容送内部RAM MOV @Ri,A (i=0,1) 1111011i(A)传至(Ri) 1 1 DPTR 16位立即数传送指令MOV DPTR,#data1690H dataH dataLdata16传至DPTR321.2程序存储器取数据指令MOVX ,MOVC1.3 数据交换指令XCH ,XCHD ,SWAP目的操作数汇编指令机器码功能字节数 机器周期A 外部数据存储器内容送A MOVX A ,@Ri (i=0,1) E2H E3H ((Ri))传至A 1 2 A 外部数据存储器内容送A MOVX A ,@DPTR E0H ((DPTR))传至A 1 2 @Ri 累加器内容送外部数据存储器 MOVX @Ri,A (i=0,1) F2H ,F3H A 传至(Ri) 1 2 DPTR 累加器内容送外部数据存储器 MOVX @DPTR,A F0H A 传至(DPTR) 1 2 A 以PC 为基址寄存器加变址寻址 MOVC A,@A+PC 83H ((A)+(PC))传至A 1 2 A以DPTR 为基址寄存器加变址寻址MOVC A,@A+DPTR93H((A)+(DPTR))传至A12目的操作数指令机器码 功能字节数 机器周期 A 内部RAM 或SFR 内容与累加器内容互换 XCH A,directC5H direct (A)←(direct) 2 1 A 寄存器内容与累加器内容互换 XCH A,Rn (n=1-7) 11001rrr (A)←(Rn) 1 1 A 内部RAM 内容与累加器内容互换XCH A,@Ri (i=0,1) 1100011i (A)←((Ri))1 1 A 内部RAM 低4位内容与累加器低4位内容互换XCHD A,@Ri (i=0,1) 1101011i (A)0∽3←((Ri))0∽3 1 1 A累加器高4位与低4位交换SWAP AC4H(A)0∽3←(A)4∽7111.4 逻辑运算指令ANL,ORL(按位进行)目的操作数指令机器码功能字节数机器周期逻辑与ANLA内容∧立即数ANL A ,#data54H A←(A)∧#data 2 1 A内容∧内部RAM或SFR当direct为端口地址P0∽P3时,操作数由端口锁存器读入。

51单片机汇编程序设计之算数运算指令

51单片机汇编程序设计之算数运算指令

1) 逻辑“与”指令
汇编指令格式 机器指令格式
操作
ANL A,Rn
58H~5FH
A ← (A)∧(Rn)
ANL A,direct 55H direct
A ← (A)∧(direct)
B←(A)÷(B)的余数
注意:若除数(B)=00H,则结果无法确定,OV置1。 CY总是 被清0。该操作也影响标志位P。
3 加1、减1指令
1) 加1指令 汇编指令格式 INC A INC Rn INC direct INC @Ri INC DPTR
机器代码 04H 08H~0FH 05H direct 06H~07H A3H
操作 A ← (A)-1 Rn ← (Rn)-l direct←(direct)-1 (Ri) ← ((Ri))-1
注意:1.该操作不影响PSW标志位。 2. 51单片机无DEC DPTR指令。
4 十进制调整指令
汇编指令格式 机器码格式 操 作
DA A
D4H
对A进行BCD调整
注意:这条指令一般跟在ADD或ADDC指令后,对累 加器A中的结果进行BCD调整。 该操作影响标志位P。
2 乘法、除法指令
1) 乘法指令
汇编指令格式 机器指令格式
操作
MUL AB
A4H
BA ← (A)×(B)
注意:若乘积大于0FFH,则OV置1,否则清0(此时B的内容为 0)。CY总是被清0。该操作也影响标志位P。
2) 除法指令
汇编指令格式 机器指令格式
操作
DIV AB
84H
A←(A)÷(B)的商,
【例2】 试编程计算5678H – 1234H的值,结果保存在R6、 R5中。
解:减数和被减数都是16位二进制数,计算时要先进行低8 位的减法,然后再进行高8位的减法,在进行低8位减

单片机汇编指令

单片机汇编指令

单片机汇编指令单片机汇编指令:为解决某些特定的问题代码中必须嵌入汇编语言以代替C语言完成的单片机的编程,汇编语言对于程序调试是不可或缺的。

它包括:数据传送类指令,算术运算类指令,逻辑运算与循环类指令,控制转移类指令,位操作(布尔操作)类指令。

现在单片机的编程大多是C语言完成但有时代码中必须嵌入汇编语言解决某些特定的问题,对于程序调试汇编语言更是不可或缺一.数据传送类指令:(1)一般传送指令:①8位传送:1 MOV A,Rn ;A←(Rn):寄存器内容送入累加器2 MOV A,direct ;A←(direct):直接地址单元中的数据送入累加器3 MOV A,@Ri ;A←((Ri)):间接RAM 中的数据送入累加器4 MOV A,#data ;A←(data):立即数送入累加器5 MOV Rn,A ;Rn←(A):累加器内容送入寄存器6 MOV Rn,direct ;Rn←(direct):直接地址单元中的数据送入寄存器7 MOV Rn,#data ;Rn←(data):立即数送入寄存器8 MOV direct,A ;direct←(A):累加器内容送入直接地址单元9 MOV direct,Rn ;direct←(Rn):寄存器内容送入直接地址单元10 MOV direct,direct;direct←(direct):直接地址单元中的数据送入另一个直接地址单元11 MOV direct,@Ri ;direct←(@Ri):间接RAM 中的数据送入直接地址单元12 MOV direct,#data ;direct←(data):立即数送入直接地址单元13 MOV @Ri,A;Ri←(A):累加器内容送入间接RAM 单元14 MOV @Ri,direct ;Ri←(direct)直接地址单元数据送入间接RAM 单元15 MOV @RI,#data ;Ri←(data):立即数送入间接RAM 单元②16位传送:16 MOV DRTR,#data16 ;(DRTR) ←(data16):16 位立即数送入地址寄存器(2)特殊传送指令:⑤①读取常数表:17 MOVC A,@A+DPTR ;A←((A)+(DPTR)):以DPTR为基地址变址寻址单元中的数据送入累加器18 MOVC A,@A+PC;A←((A)+(PC)):以PC 为基地址变址寻址单元中的数据送入累加器②读写片外RAM及接口单元数据:读片外RAM:19 MOVX A,@Ri ;A←((Ri)):外部RAM(8 位地址)送入累加器20 MOVX A,@DPTR ;A←((DPTR)):外部RAM(16 位地址)送入累加器写片外RAM:21 MOVX @Ri,A ; (Ri)←(A):累计器送外部RAM(8 位地址)22 MOVX @DPTR,A ;(DPTR)←(A):累计器送外部RAM(16 位地址)③堆栈操作指令:23 PUSH direct;SP←(SP),(SP)←(direct)直接地址单元中的数据压入堆栈24 POP direct ;(direct)←((SP)), SP←(SP)-1:弹栈送直接地址单元④数据交换指令:字节交换:25 XCH A,Rn ;(A)←→(Rn):寄存器与累加器交换26 XCH A,direct ;(A)←→(direct):直接地址单元与累加器交换27 XCH A,@Ri; (A)←→(Ri):间接RAM 与累加器交换半字节交换:28 XCHD A,@Ri ;((Ri).3~(Ri).0) ←→(ACC.3~ACC.0):间接RAM 的低半字节与累加器的弟半字节交换29 SWAP A ;(ACC.7~ACC.4)←→(ACC.3~ACC.0):累加器的高低4位互换二.算术运算类指令:(1)不带进位加法:1 ADD A,Rn ;A←(A)+(Rn):寄存器内容加到累加器2 ADD A,direct;A←(A)+(direct):直接地址单元的内容加到累加器3 ADD A,@Ri;A←(A)+((Ri)):间接ROM 的内容加到累加器4 ADD A,#data;A←(A)+ data:立即数加到累加器(2)带进位加法:5 ADDC A,Rn ;A←(A)+(Rn)+(CY):寄存器内容带进位加到累加器6 ADDC A,direct;A←(A)+(direct)+(CY):直接地址单元的内容带进位加到累加器7 ADDC A,@Ri ;A←(A)+((Ri))+(CY):间接ROM 的内容带进位加到累加器8 ADDC A,#data;A←(A)+ data+(CY):立即数带进位加到累加器(3)加1:9 INC A;A←(A)+1:累加器加110 INC Rn;A←(Rn)+1:寄存器加111 INC direct;A←(direct)+1:直接地址单元加112 INC @Ri;(Ri)←((Ri))+1:间接RAM 单元加113 INC DPTR;DPTR←(DPTR)+1:地址寄存器DPTR 加 1(4)十进制调整:DA A;调整A的内容为正确的BCD码(5)带借位减法:14 SUBB A,Rn ;A←(A)-(Rn)-(CY):累加器带借位减寄存器内容15 SUBB A,direct;A←(A)-(direct)-(CY):累加器带借位减直接地址单元的内容16 SUBB A,@Ri ;A←(A)-(Ri)-(CY):累加器带借位减间接RAM 中的内容17 SUBB A,#data ;A←(A)-data-(CY):累加器带借位减立即数(6)减1:18 DEC A ;A←(A)-1:累加器减119 DEC Rn ;A←(Rn)-1:寄存器减120 DEC direct ;A←(direct)-1:直接地址单元减121 DEC @Ri;A←(Ri)-1:间接RAM 单元减 1(7)乘法:22 MUL AB;累加器A与寄存器B相乘(乘积的低8位存在A中,高8位存在B中)(8)乘法:23 DIV AB;累加器A除以寄存器B (商的整数部分存放在A中,余数存在B中)三.逻辑运算与循环类指令:(1)逻辑与:1 ANL A,Rn; A←(A)∧(Rn) :累加器与寄存器相“与”2 ANL A,direct;A←(A)∧(direct):累加器与直接地址单元相“与”3 ANL A,@Ri; A←(A)∧(Ri):累加器与间接RAM 单元相“与”4 ANL A,#data;A←(A)∧data:累加器与立即数相“与”5 ANL direct,A;direct←(direct)∧(A):直接地址单元与累加器相“与”6 ANL direct,#data;direct←(direct)∧data:直接地址单元与立即数相“与”(2)逻辑或:7 ORL A,Rn ;A←(A)∨(Rn):累加器与寄存器相“或”8 ORL A,direct ;A←(A)∨(direct):累加器与直接地址单元相“或”9 ORL A,@Ri;A←(A)∨(Ri):累加器与间接RAM 单元单元相“或”10 ORL A,#data;A←(A)∨data:累加器与立即数相“或”11 ORL direct,A;direct←(direct)∨(A):直接地址单元与累加器相“或”12 ORL direct,#data;direct←(direct)∨data:直接地址单元与立即数相“或”(3)逻辑或与:13 XRL A,Rn; A←(A)⊕(Rn) :累加器与寄存器相“异或”14 XRL A,direct;A←(A)⊕ (direct):累加器与直接地址单元相“异或”15 XRL A,@Ri; A←(A)⊕ (Ri):累加器与间接RAM 单元单元相“异或”16 XRL A,#data;A←(A)⊕data:累加器与立即数相“异或”17 XRL direct,A;direct←(direct)⊕(A):直接地址单元与累加器相“异或”18 XRL direct,#data;direct←(direct)⊕data:直接地址单元与立即数相“异或”(4)累加器清0或取反:19 CLR A;A←0:累加器清“0”(5)累加器循环移位:21 RL A ;1~7A ←(0~6A ),0A ←(7A ):累加器循环左移22 RLC A ;CY ←(7A ),1~7A ←(0~6A ),0A ←(CY ):累加器带进位位循环左移 23 RR A ;1~7A →(0~6A ),0A →(7A ):累加器循环右移24 RRC A ;CY →(7A ),1~7A →(0~6A ),0A →(CY ):累加器带进位位循环右移四.控制转移类指令:(1)无条件转移:1 AJMP addr11 ;PC ←(PC)+2,P 0~10C ←addr11:绝对(短)转移2 LJMP addr16;PC ←addr16:长转移3 SJMP rel ;PC ←(PC)+2,PC ←(PC)+rel :相对转移4 JMP @A+DPTR ;PC ←(PC)+1,PC ←(A)+(DPTR):相对于DPTR 的间接转移(散转移)(2)条件转移:①累加器判0转移:5 JZ rel ;若(A)=0,则PC ←(PC)+rel :累加器为零转移6 JNZ rel ;若(A)≠0,则PC ←(PC)+rel :累加器不为零转移②比较不相等转移:7 CJNE rel 累加器非零转移8 CJNE A,direct,rel ;累加器与直接地址单元比较,不相等则转移9 CJNE A,#data,rel 累加器与立即数比较,不相等则转移10 CJNE Rn,#data,rel 寄存器与立即数比较,不相等则转移11 CJNE @Ri,#data,rel 间接RAM 单元与立即数比较,不相等则转移 ③减1不为0转移:12 DJNZ Rn,rel ;寄存器减1,非零转移13 DJNZ direct, rel ;直接地址单元减1,非零转移(3)调用与返回:①调用:14 ACALL addr11;绝对(短)调用子程序15 LCALL addr16;长调用子程序 ②返回16 RET ;子程序返回17 RETI ;中断服务子程序返回(4)空做操:18 NOP ;空操作五.位操作(布尔操作)类指令:(1)位传送:11 MOV C,bit ;bit←(CY):直接地址位送入进位位12 MOV bit,C ;CY←(bit):进位位送入直接地址位(2)位状态设置:①位清0:1 CLR C ;CY←0:清进位位2 CLR bit;bit←0:清直接地址位②位置位:3 SETB C;CY←1:置进位位4 SETB bit;bit←1:置直接地址位(3)位逻辑运算:①位逻辑与:7 ANL C,bit;进位位和直接地址位相“与”8 ANL C,/bit;进位位和直接地址位的反码相“与”②位逻辑或:9 ORL C,bit;进位位和直接地址位相“或”10 ORL C,/bit;进位位和直接地址位的反码相“或”③位取反:5 CPL C;CY←(CY):进位位求反6 CPL bit;bit←(bit):置直接地址位求反(4)位判跳(条件转移):①判CY转移:13 JC rel;若(CY)=1,PC←(PC)+2+rel,否则顺次执行:进位位为1 则转移14 JNC rel;若(CY)=0,PC←(PC)+2+rel,否则顺次执行:进位位为0 则转移②判bit转移:15 JB bit,rel;(bit)=1,PC←(PC)+3+rel,否则顺次执行:直接地址位为1 则转移16 JBC bit,rel;(bit)=1,PC←(PC)+3+rel,并使bit←0,否则顺次执行:直接地址位为0 则转移17 JNB bit,rel;(bit)=0,PC←(PC)+3+rel,否则顺次执行:直接地址位为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) 出栈;二、算术运算类指令(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则转移;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) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。

51单片机汇编指令总结

51单片机汇编指令总结

51单片机汇编指令总结数据传输指令一.片内RAM数据传输指令1.以累加器A为目的操作数的指令:MOV A , RnMOV A , directMOV A , @RiMOV A , #data2.以寄存器Rn为目的操作数的指令:MOV Rn , AMOV Rn ,directMOV Rn ,data3.以直接地址为目的操作数的指令:MOV direct ,AMOV direct ,RnMOV direct1 ,derect2MOV direct ,@RiMOV direct ,#data4.间接地址为目的操作数的指令:MOV @Ri ,AMOV @Ri ,directMOV @Ri ,#data5.十六位数据传送指令:MOV DPTR , #data16二.累加器A与片外RAM数据传送指令:MOVX A ,@RiMOVX A , @DPTRMOVX @Ri ,AMOVX @DPTR ,A三.查表寻址:MOVC A ,@A+DPTR (先PC←(PC)+1,后A←((A)+(DPTR)))+MOVC A ,@A+PC (先PC←(PC)+1,后A←((A)+(PC)))四.交换指令:1.字节交换指令:XCH A ,RnXCH A ,directXCH A ,@Ri2.半字节交换指令:XCHD A ,@Ri3.累加器半字节交换指令:SWAP A五.栈操作指令:1.PUSH(入栈指令)PUSH direct2.POP(出栈指令)POP direct算术运算指令:一.加法减法指令:1.加法指令:ADD A ,RnADD A ,directADD A ,@RiADD A ,#data2.带进位加法指令:ADDC A ,Rn A←(A)+(Rn)+CYADDC A ,direct A←(A)+(direct)+CYADDC A ,@Ri A←(A)+((Ri))+CYADDC A ,#data A←(A)+(data)+CY3.带借位减法指令:SUBB A ,Rn A←(A)-CY-(Rn)SUBB A ,direct A←(A)-CY-(direct)SUBB A ,@Ri A←(A)-CY-((Ri))SUBB A ,#data A←(A)-CY-#data二.乘法除法指令:1.乘法指令:MUL AB BA←(A) ×(B)高字节放在B中,低字节放在A中2.除法指令:DIV AB A←(A) ÷(B)的商,(B) ←(A) ÷(B)的余数三.加1减1指令:1.加1指令:INC A A←(A)+1INC Rn Rn←(Rn)+1INC direct direct←(direct)+1INC @Ri (Ri) ←((Ri))+1INC DPTR DPTR←(DPTR)+12.减1指令:DEC ADEC RnDEC directDEC @Ri四.十进制调制指令:DA A 调整累加器A的内容为BCD码逻辑操作指令:一.逻辑与、或、异或指令:1.逻辑与指令:ANL A ,RnANL A ,directANL A ,@RiANL A ,#data2.逻辑或这令:ORL A ,RnORL A ,directORL A ,@RiORL A ,#dataORL direct ,AORL direct ,#data3.逻辑异或指令:XRL A ,RnXRL A ,directXRL A ,@RiXRL A ,#dataXRL direct ,AXRL direct ,#data二.清零、取反指令:1.累加器A清零指令:CRL A2.累加器A取反指令:CPL A三.循环位移指令:1.累加器A循环左移指令:RL A2.累加器A循环右移指令:RR A3.累加器A连同进位位循环左移指令:RLC A4. 累加器A连同进位位循环右移指令:RRC A控制转移指令:一.无条件转移指令:1.绝对转移指令:AJMP addr11 (先PC+2,然后将addr11的低十位传给PC,PC的高六位不变)2.长转移指令:LJMP addr16 (用addr16的值替换PC的值)3.相对转移(短转移)指令:SJMP rel(带符号的偏移字节数)(PC+2,再加rel赋值给PC)4.间接转移指令:JMP @A+DPTR (A)+(DPTR) →(PC)二.条件转移指令:1.累加器判零转移指令:JZ rel 先PC+2;后判断,A为0时转移,PC+rel赋值给PC;否则顺序执行JNZ rel 先PC+2,后判断,A不为0时转移,PC+rel赋值给PC;否则顺序执行2.比较转移指令:CJNE 目的操作数,源操作数,relCJNE A,direct,rel 先PC+3传回PC,再比较目的操作数和原操作数CJNE A,#data,rel 目>源时,程序转移,PC+rel传回PC且CY=0CJNE Rn,#data,rel 目=源时,程序顺序执行CJNE @Ri,#data,rel 目<源时,程序转移,PC+rel传回PC且CY=13.减一非0指令:DJNZ Rn,rel 先PC\+2,Rn-1,当Rn为0时程序顺序执行,否则PC+rel传回PCDJNZ direct,rel 先PC+3,direct-1,direct为0时程序顺序执行,否则PC+rel 传回PC二.子程序调用、返回指令:1.绝对调用指令ACALL:ACALL addr11 先PC+2,SP+1将PC的低八位存入SP;SP+1,将PC的高八位存入SP。

单片机汇编语言指令集

单片机汇编语言指令集

单片机汇编语言指令集汇编语言是一种低级程序设计语言,广泛应用于单片机的编程和控制。

单片机汇编语言指令集是程序员在开发单片机应用时必须了解和掌握的一项基础知识。

本文将介绍常用的单片机汇编语言指令集及其功能。

1. 指令集概述单片机汇编语言指令集是单片机内部指令的集合,用于完成各种操作和控制功能。

指令集由操作码和操作数组成,操作码表示指令的类型,操作数表示指令要操作的数据或地址。

2. 数据传送指令数据传送指令用于将数据从一个位置传送到另一个位置,包括寄存器之间的传送、寄存器和内存之间的传送等。

常用的数据传送指令有MOV、LDR、STR等。

3. 算术运算指令算术运算指令用于进行各种算术运算,包括加法、减法、乘法、除法等。

常用的算术运算指令有ADD、SUB、MUL、DIV等。

4. 逻辑运算指令逻辑运算指令用于进行各种逻辑运算,包括与、或、非、异或等。

常用的逻辑运算指令有AND、OR、NOT、XOR等。

5. 条件转移指令条件转移指令用于根据条件进行跳转或循环控制,常用的条件转移指令有BEQ、BNE、BGT、BLE等。

通过条件转移指令,程序可以根据不同的条件选择执行不同的代码路径。

6. 程序控制指令程序控制指令用于实现程序的跳转、函数的调用和返回等功能。

常用的程序控制指令有JMP、CALL、RET等。

通过程序控制指令,程序可以按照预定的流程执行,实现复杂的控制逻辑。

7. 输入输出指令输入输出指令用于与外部设备进行数据交互,包括输入数据和输出数据。

常用的输入输出指令有IN、OUT等。

通过输入输出指令,单片机可以与外围设备进行数据的传输和交互。

8. 中断指令中断指令用于处理外部中断或内部中断事件,包括中断的触发、中断的响应和中断的处理等。

常用的中断指令有INT、IRET等。

通过中断指令,单片机可以及时响应和处理各种中断事件。

9. 扩展指令扩展指令是一些额外的指令,用于扩展单片机的功能和性能。

扩展指令的具体内容和功能因不同的单片机而异,常见的扩展指令有乘法指令、移位指令、位操作指令等。

51单片机汇编程序

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寄存器赋值为1ADD A, #0x01 ; 将A寄存器加1MOV B, A ; 将A寄存器的值传送到B寄存器END ; 程序结束在上面的示例中,ORG指令用于指定程序的起始地址,MOV 指令用于将A寄存器赋值为1,ADD指令用于将A寄存器加1,MOV指令用于将A寄存器的值传送到B寄存器,END指令用于标记程序结束。

3. 汇编语言的应用51单片机的汇编语言广泛应用于各种嵌入式系统中,包括智能家居、工业自动化、仪器仪表等领域。

汇编程序具有以下特点:•程序执行效率高:由于汇编语言直接操作硬件,可以精确控制程序的执行流程,提高程序的执行效率。

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,则跳转到指定地址。

单片机汇编语言(指令集锦)

单片机汇编语言(指令集锦)

单片机汇编语言一、格式[标号]:操作码[操作数];[注释]1.标号指令的符号地址,与操作码用‘:’分隔,其间可加若干空格。

有标号,程序的其他语句才可访问该语句。

可有可无。

规定:由8个以内的字母、数字构成,第一个必为字母,同一程序不可有相同标号,不能有助记符、伪指令、寄存器名、特殊符号等。

正确标号:AB1、NEXT、LOOP1。

错误标号:2A、S+M、EQU、ADD。

2.操作码说明语句功能,必不可少。

与操作数之间用空格相隔。

3.操作数说明操作对象。

可以是具体的数、标号(符号地址)、寄存器、直接地址等。

操作数为十六进制,且字母在最高位,则前面应补0.据指令之异,个数可为1、2、3或无。

各操作间用‘,’相隔。

4.注释程序说明。

以‘;’开头,可多行,每行都以‘;’开头。

二、寻址方式寻找操作数的地址。

1.寄存器寻址以通用寄存器的内容作为操作数,在指令的助记符中直接以寄存器名字来表示操作数位置。

51中若操作数以R0~R7表示操作数时,就属于此方式。

如:‘MOV A,R0’,功能:把寄存器R0的内容传送到累加器A中。

2.直接寻址在指令中直接给出操作数地址。

如:MOV ‘A,3AH’,功能:把内部RAM的3AH单元内容传送到累加器A中。

3.立即寻址指令的操作数是一个数。

该操作数被称为立即数。

立即数前加‘#’,如:’MOV A,#3AH’,功能:把立即数3AH送到累加器A中。

4.寄存器间接寻址寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,相应的寄存器前加@。

如:‘MOV A,@R0’,功能:取出寄存器R0中的值,将此值作为地址,取该地址单元中的内容传送到A。

5.变址寻址以某个寄存器的内容为基本地址,在此基本地址基础上加上地址偏移量作为真正的操作地址,并将此地址单元的内容作为指令的操作数。

51中,一般用数据指针DPTR或程序计数器PC的内容为基本地址,累加器A的内容为地址偏移量,并以DPTR+A或PC+A的值作为实际的操作数地址。

51单片机汇编指令集(附记忆方法)

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则转移;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) 空操作;五、位操作指令(1种助记符)CLR 位清零;SETB(Set Bit) 位置1。

Freescale HCS08单片机原理及应用-汇编程序设计

Freescale HCS08单片机原理及应用-汇编程序设计

体值,而无需用户自己计算。

由于复位矢量位于Flash空间,并且每个复位/中断矢量占用2字节的Flash空间,因此用DC.W伪指令定义。

注意不能用DS伪指令定义Flash常量。

对于有中断服务子程序的源程序,为了在发生中断时能够响应中断进入相应的中断服务子程序,和填写复位向量类似,只需将中断服务子程序的入口地址填入对应的中断复位向量区即可。

3.6.3汇编程序设计3.6.3.1算术/逻辑运算程序设计MCU主要用于控制目的,其数据运算、处理的能力并不强。

但由于HCS08系列MCU具有相应的算术、逻辑指令,因此它可以完成一些简单的算术/逻辑运算功能。

[例3.1] 若字变量Data1和Data2分别存放着两个16位无符号数,编写求这两个数之和的子程序,并将和存放到Sum字节存储空间中。

两个16位无符号数相加,和为17位,至少需要3个字节的存储空间,和按照从高位到低位的顺序依次存放在以Sum为首地址的字节存储单元中。

Add_Pro:CLC ; 清进位标志位LDA Data1+1ADD Data2+1 ; 两数低八位相加STA Sum+2 ; 存低八位之和LDA Data1ADC Data2 ; 高八位带低八位进位加STA Sum+1 ; 存高八位之和ROLAAND #01HSTA Sum ; 存高八位进位位RTS3.6.3.2查表和散转程序HCS08具有变址寻址方式,实现查表操作非常方便。

利用查表可以实现转换、计算等各种功能。

散转是指根据输入数据的不同跳转到不同的程序入口进行处理。

[例3.2] 单字节变量Hex_Byte中存放了一十六进制数,编写子程序将其转换为两位ASCII码,并将结果存至以Result开首的字节存储单元中。

例如4AH的ASCII码为3441H,$F9的ASCII码为4639H。

……ORG 0070H ; 用户变量一定要定位在Ram区域Hex_Byte DS.B 1Result DS.B 2……ORG 0870HASCII_Table DC.B ‘0123456789ABCDEFG’; 常数表格、代码一定要定位在Flash区域……Hex_To_Ascii:LDA Hex_ByteAND #$F0 ; 取出高4位NSA ; (A[3:0]:A[7:4])→ATAX ; A→XLDA ASCII_Table,X ; 查表,得高4位的ASCII码STA Result ; 存高4位的ASCII码LDA Hex_ByteAND #$0F ; 取出低4位TAX ; A→XLDA ASCII_Table,X ; 查表,得低4位的ASCII码STA Result+1 ; 存低4位的ASCII码RTS[例3.3] 设字节变量Num存放在Ram的0070H单元,取值范围为0T~9T,编写查表子程序,查出变量的立方值,并存入Cube字节变量中。

第二章--第四节--汇编语言程序设计方法(二)

第二章--第四节--汇编语言程序设计方法(二)
VCC GND 31 19 C2 3 0p F Y1 6 . 00 0M HZ 18 E A/VP X1 AT 8 9C5 1 P0. 0 P0. 1 P0. 2 P0. 3 P0. 4 P0. 5 P0. 6 P0. 7 P2. 0 P2. 1 P2. 2 P2. 3 P2. 4 P2. 5 P2. 6 P2. 7 RD WR PSE N AL E /P T XD RXD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 17 16 29 30 11 10 VCC R9 4 . 7K GND SW
A+30HA A(22H) 结束
R0
0010 0000
END
BCD码十进制转换成二进制
例:假如在内部RAM40H单元中存储有一个压缩BCD编码 的两位十进制数,设计一段程序把这个数转换成二进制数 并存入41H单元中。 解题思路: (40H) 16 商为二进制的高四位
余数
余为二进制的低四位
将高四位乘以0AH,再加上低四位即可。
数据排序程序 例:将片内RAM中20H-27H中的数据按照从小到大的顺序重新排列。 解题思路:见下图
RAM地址 原始数据
20H 66H
21H 11H
22H 10H
23H 34H
24H 67H
25H 01H
26H 89H
27H A0H
1
2 3 4 5 6 7
01H
01H 01H 01H 01H 01H 01H
11H
10H 10H 10H 10H 10H 10H
10H
11H 11H 11H 11H 11H 11H
34H
34H 34H 34H 34H 34H 34H

单片机指令表汇总

单片机指令表汇总

51单片机指令表汇总51单片机是一种广泛应用的微控制器,其指令集是进行编程的基础。

下面将51单片机的指令表进行汇总,以帮助初学者更好地理解其指令集。

一、数据传输指令1、MOV指令:将源操作数的内容传送到目标操作数。

2、XCH指令:将两个操作数的内容互换。

3、MOVC指令:从外部存储器将数据传送到目标操作数。

4、MOVX指令:将外部存储器中的数据传送到目标操作数。

5、PUSH指令:将数据压入堆栈。

6、POP指令:从堆栈中弹出数据。

二、算术运算指令1、ADD指令:将两个操作数相加,并将结果存放在目标操作数中。

2、SUB指令:从目标操作数中减去源操作数,并将结果存放在目标操作数中。

3、MUL指令:将两个操作数相乘,并将结果存放在目标操作数中。

4、DIV指令:将目标操作数除以源操作数,并将结果存放在目标操作数中。

5、ANL指令:对目标操作数和源操作数进行按位与运算,并将结果存放在目标操作数中。

6、ORL指令:对目标操作数和源操作数进行按位或运算,并将结果存放在目标操作数中。

7、XRL指令:对目标操作数和源操作数进行按位异或运算,并将结果存放在目标操作数中。

8、CPL指令:对目标操作数进行按位取反运算,并将结果存放在目标操作数中。

9、INC指令:将目标操作数加1。

10、DEC指令:将目标操作数减1。

11、ASR指令:将目标操作数右移n位,最高位用符号位补齐。

12、LSR指令:将目标操作数右移n位,最低位用0补齐。

13、ROL指令:将目标操作数循环左移n位,最高位移入最低位。

14、ROR指令:将目标操作数循环右移n位,最低位移入最高位。

单片机汇编指令表一、概述在单片机的世界里,汇编语言扮演着举足轻重的角色。

它是一种低级语言,能够直接与硬件进行交互,提供高效的代码执行效率。

下面,我们将详细列出一些常见的单片机汇编指令,以及它们的功能。

二、指令表1、MOV指令:用于将数据从一个寄存器移动到另一个寄存器。

例如,MOV R1, R2将把 R2的内容移动到 R1中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ADD A,@Ri;
0010 011i
(A)+((Ri)) →A
将间接寻址(Ri为R0或R1)
所得的片内RAM单元中内容 和累加器A中的数相加, “和”存放于累加器A中
ADD A, #data;
0010 0100
data
(A)+#data →A
将立即数的8位无符号二进制
数和累加器A中的数相加, “和”存放于累加器A中
18:16
单片机原理及接口技术
说明:上述指令的执行将影响标志位AC,Cy,OV,P。当 “和”的第3位或第7位有进位时,分别将AC,CY标志位 置 1 ,否则为 0 。溢出标志位 OV=C7 + C6 (异或),该
标志位只有带符号数运算时才有用。
例:若:(A)=78H ,(R0)=64H 执行ADD A,R0 后,结果及PSW=? (A):78H= 0111 1000 B +(R0):64H= 0110 0100 B (A):DCH= 1101 1100 B CY=0, AC=0, OV=1, P=1, PSW=05H (A)=DCH (R0)=64H Back 单片机原理及接口技术
(A) -CY -#data →A
将立即数的8位无符号二进 制数与CY及累加器A中的数相 减, “差”存放于累加器A中
18:16
单片机原理及接口技术
说明:这组指令的功能是从累加器A中减去源操作数所指出的数
及进位位CY的值,差保留在累加器A中。 由于89C51指令系统中没有不带借位的减法指令,如需要的话,可 以在“ SUBB” 指令前用“ CLR C” 指令将 Cy 清 0 ,这一点必须注意 。
(A) +CY + #data →A 将立即数的8位无符号二进 制数与CY及累加器A中的数 相加, “和”存放于累加器 A

18:16
单片机原理及接口技术
说明:本组指令的功能是同时把源操作数所指出的内容和进位标
志未CY都加到累加器A中,结果存放到A中,其余的功能和上面的 ADD指令相同。本组指令常用于多字节加法。
单片机原理及接口技术
Back
3
、带借位减法指令(四条)
机器码格式 1001 1rrr 操作 (A)-CY -(Rn) → A 注释 将工作寄存器内容与CY及 累加器A中的数相减, “差”存放于累加器A中
汇编指令格式 SUBB A, Rn;
SUBB A,direct;1001 0101 direct SUBB A,@Ri; 1001 011i
§3.3.2
算术运算指令
1 .不带进位加法指令(四条)
2 .带进位加法指令(四条)
3 .带借位减法指令(四条) 4 .乘法指令(1条) 5、除法指令(1条) 6、加1指令(5条)
7、减1指令(4条)
8、十进制调整指令(1条) Back
18:16
单片机原理及接口技术
1 、 不带进位加法指令(四条)
汇编指令格式 ADD A, Rn; 机器码格式 0010 1rrr 操作 (A)+(Rn) → A 注释 将工作寄存器内容和 累加器A中的数相加, “和”存放于累加器A中 ADD A,direct; 0010 0101 direct (A)+(direct) →A 将内部RAM单元内容和 累加器A中的数相加, “和”存放于累加器A中
18:16
单片机原理及接口技术
例:编程,将(30H),(31H)单元中的数与(40H),(41H) 单元中的数相加,结果存于(30H),(31H)单元中。
解:
MOV ADD MOV MOV ADDC MOV A, 30H A, 40H 30H, A A, 31H A, 41H 31H, A
18:16
(A) -CY -(direct) →A
将内部RAM单元内容与 CY及累加器A中的数相减, “差”存放于累加器A中
(A) -CY -((Ri)) →A
将间接寻址(Ri为R0或R1) 所得的片内RAM单元中内 容与CY及累加器A中的数 相减, “差”存放于累加器 A中
SUBB A, #data;
1001 0100 data
标志位: 即: 结果:
18:16
2
、带进位加法指令(四条)
机器码格式 0011 1rrr 操作 (A)+CY+(Rn) → A 注释 将工作寄存器内容与CY及 累加器A中的数相加, “和”存放于累加器A中
汇编指令格式 ADDC A, Rn;
ADDC A,direct;0011 0101 direct ADDC A,@Ri; 0011 011i
(A) +CY +(direct) →A 将内部RAM单元内容与 CY及累加器A中的数相加, “和”存放于累加器A中 (A) +CY+((Ri)) →A 将间接寻址(Ri为R0或R1) 所得的片内RAM单元中内 容与CY及累加器A中的数 相加, “和”存放于累加器 A中
ADDC A, #data;
0011 0100 data
例:设(A)=0C3H,(R0)=0AAH, (CY)=1。 执行指令“ADDC A,R0”后的结果及标志位如何? 解: (A): C3H=1100 0011 + (CY): 1=0000 0001 1100 0100 + (R0): AAH=1010 1010 (A): 6EH=0110 1110 标志位:CY=1,OV=1,AC=0, 结果:(A)=6EH,(R0)=0AAH。
结果为:(A)=74H 标志位为:Cy=0 AC=0 OV=1
P=0 Back
18:16
单片机原理及接口技术
4、
乘法指令(1条)
机器码格式 ; 1010 0100 操作 (A)×(B)→B15-8A7-0
汇编指令格式 MUL AB
该指令将累加器A和寄存器B中两个无符号数相乘,所得16位积的低字 节存放在A中,高字节存放中B中。 该指令若乘积大于0FFH,则OV置1,否则OV清0。Cy位总是被清0。
18:16

单片机原理及接口技术
例:设(A)=0C9H,(R2)=54H,Cy=1。 执行指令“SUBB A, R2”的结果如何?
解: (A)=0C9H= 11001001 B - ) Cy= 1 = 00000001 B 11001000 B -) (R2)=54H = 01010100 B (A)=74H = 01110100 B
相关文档
最新文档