单片机汇编语言指令教程汇集

合集下载

51单片机汇编语言教程:11课单片机算术运算指令

51单片机汇编语言教程:11课单片机算术运算指令

51 实验板推荐(点击下面的图片可以进入下载资料链接)
ห้องสมุดไป่ตู้HJ-1G
HJ-3G
推荐使用慧净 51 实验板。推荐 51 学习网 淘宝网:/
除法一般会出现小数但计算机中可没法直接表达小数它用的是我们小学生还没接触到小数时用的商和余数的概念如135其商是2余数是除了以后商放在a中余数放在b中
51 单片机汇编语言教程-慧净电子会员收集整理 (全部 28 课)
51 单片机汇编语言教程:第 11 课-单片机算术运算指令
(基于 HJ-1G、HJ-3G 实验板) 不带进位位的单片机加法指令 ADD A,#DATA ;例:ADD A,#10H ADD A,direct ;例:ADD A,10H ADD A,Rn ;例:ADD A,R7 ADD A,@Ri ;例:ADD A,@R0 用途:将 A 中的值与其后面的值相加,最终结果否是回到 A 中。 例:MOV A,#30H ADD A,#10H 则执行完本条指令后,A 中的值为 40H。 下面的题目自行练习 MOV 34H,#10H MOV R0,#13H MOV A,34H ADD A,R0 MOV R1,#34H ADD A,@R1 带进位位的加法指令 ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data 用途:将 A 中的值和其后面的值相加,并且加上进位位 C 中的值。 说明:由于 51 单片机是一种 8 位机,所以只能做 8 位的数学运算,但 8 位运算的范围只有 0-255,这在实际工作中是不够的,因此就要进行扩展,一般是将 2 个 8 位的数学运算合起 来,成为一个 16 位的运算,这样,能表达的数的范围就能达到 0-65535。如何合并呢?其 实很简单,让我们看一个 10 进制数的例程: 66+78。 这两个数相加,我们根本不在意这的过程,但事实上我们是这样做的:先做 6+8(低位), 然后再做 6+7,这是高位。做了两次加法,只是我们做的时候并没有刻意分成两次加法来做 罢了,或者说我们并没有意识到我们做了两次加法。之所以要分成两次来做,是因为这两个 数超过了一位数所能表达的范置(0-9)。 在做低位时产生了进位,我们做的时候是在适当的位置点一下,然后在做高位加法是将这一 点加进去。那么计算机中做 16 位加法时同样如此,先做低 8 位的,如果两数相加产生了进 位,也要“点一下”做个标记,这个标记就是进位位 C,在 PSW 中。在进行高位加法是将这 个 C 加进去。例:1067H+10A0H,先做 67H+A0H=107H,而 107H 显然超过了 0FFH,因此 最终保存在 A 中的是 7,而 1 则到了 PSW 中的 CY 位了,换言之,CY 就相当于是 100H。 然后再做 10H+10H+CY,结果是 21H,所以最终的结果是 2107H。 带借位的单片机减法指令 SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data

单片机指令大全

单片机指令大全

引言概述:单片机指令是嵌入式系统设计中至关重要的一部分,它们定义了单片机的功能和操作。

本文是单片机指令大全系列的第二部分,旨在提供更多全面的单片机指令信息,帮助读者更好地理解和应用单片机指令。

正文内容:一、移位指令1.逻辑左移指令:将操作数的每一位向左移动一位,并且最低位填充0。

2.逻辑右移指令:将操作数的每一位向右移动一位,并且最高位填充0。

3.算术右移指令:将操作数的每一位向右移动一位,并且最高位保持不变。

4.循环左移指令:将操作数的每一位向左循环移动一位,即最高位移动到最低位。

5.循环右移指令:将操作数的每一位向右循环移动一位,即最低位移动到最高位。

二、逻辑运算指令1.逻辑与指令:对操作数进行逻辑与运算,将两个二进制数对应位上的值进行逻辑与操作。

2.逻辑或指令:对操作数进行逻辑或运算,将两个二进制数对应位上的值进行逻辑或操作。

3.逻辑非指令:对操作数进行逻辑非运算,将二进制数的每一位取反。

4.逻辑异或指令:对操作数进行逻辑异或运算,将两个二进制数对应位上的值进行逻辑异或操作。

5.逻辑移位指令:将操作数进行逻辑左移或右移。

三、算术运算指令1.加法指令:对操作数进行加法运算,并将运算结果保存到指定的寄存器或存储器中。

2.减法指令:对操作数进行减法运算,并将运算结果保存到指定的寄存器或存储器中。

3.乘法指令:对操作数进行乘法运算,并将运算结果保存到指定的寄存器或存储器中。

4.除法指令:对操作数进行除法运算,并将运算结果保存到指定的寄存器或存储器中。

5.移位指令:对操作数进行移位运算,包括算术左移、算术右移、循环左移和循环右移。

四、输入输出指令1.读取输入指令:从指定的输入设备读取数据,并将数据保存到指定的寄存器或存储器中。

2.输出显示指令:将指定的数据从寄存器或存储器中读取,并显示到指定的输出设备上。

3.端口输入指令:从指定的端口读取数据,并将数据保存到指定的寄存器或存储器中。

4.端口输出指令:将指定的数据从寄存器或存储器中读取,并输出到指定的端口上。

单片机c51汇编语言51单片机汇编语言

单片机c51汇编语言51单片机汇编语言

单片机c51汇编语言51单片机汇编语言单片机C51汇编语言单片机(C51)是指一种集成电路上只包含一个集中式控制器的微处理器,具有完整的CPU指令集、RAM、ROM、I/O接口等功能。

汇编语言是一种低级语言,是用于编写单片机指令的一种语言。

汇编语言能够直接操作单片机的寄存器和输入/输出端口,因此在嵌入式系统的开发中非常重要。

本文将介绍单片机C51的汇编语言编程。

一、了解单片机C51单片机C51是目前应用最广泛的一种单片机系列,广泛用于各种电子设备和嵌入式系统的开发。

C51指的是Intel公司推出的一种基于MCS-51架构的单片机。

该系列单片机具有较高的性能和低功耗的特点,可用于各种控制和通信应用。

二、汇编语言的基本概念汇编语言是一种低级语言,与机器语言紧密相关。

它使用助记符来代替机器指令的二进制表示,使程序的编写更加易读。

在单片机C51汇编语言中,每一条汇编指令都对应着特定的机器指令,可以直接在单片机上执行。

三、汇编语言的基本指令在单片机C51汇编语言中,有一些基本的指令用于控制程序的执行和操作寄存器。

以下是一些常用的指令:1. MOV指令:用于将数据从一个寄存器或内存单元复制到另一个寄存器或内存单元。

2. ADD指令:用于将两个操作数相加,并将结果存储到目的寄存器中。

3. SUB指令:用于将第一个操作数减去第二个操作数,并将结果存储到目的寄存器中。

4. JMP指令:用于无条件跳转到指定的地址。

5. JZ指令:用于在条件为零时跳转到指定的地址。

6. DJNZ指令:用于将指定寄存器的值减一,并根据结果进行跳转。

四、编写单片机C51汇编程序的步骤编写单片机C51汇编程序需要按照以下步骤进行:1. 确定程序的功能和目标。

2. 分析程序的控制流程和数据流程。

3. 设计算法和数据结构。

4. 编写汇编指令,实现程序的功能。

5. 调试程序,并进行测试。

六、实例演示以下是一个简单的单片机C51汇编程序的示例,用于实现两个数的相加,并将结果输出到LED灯上:org 0H ; 程序的起始地址为0mov a, 05H ; 将05H赋值给累加器mov b, 07H ; 将07H赋值给B寄存器add a, b ; 将A寄存器和B寄存器的值相加mov P1, a ; 将相加结果输出到P1口end ; 程序结束在这个例子中,首先将05H赋值给累加器A,然后将07H赋值给B寄存器,接着使用ADD指令将A和B的值相加,将结果存储到累加器A中,最后将累加器A的值输出到P1口。

单片机汇编指令集合(中英指令翻译)

单片机汇编指令集合(中英指令翻译)

一、数据传送类指令(8种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;P55PUSH (Push onto Stack) 入栈;PUSH directPOP (Pop from Stack) 出栈;POP directXCH (Exchange) 字节交换;XCH A,源/@RiXCHD (Exchange low-order Digit) 低半字节交换;同上SWAP (Swap) 低4位与高4位交换;SWAP A MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVC A,@A+DPTR/PC MOVX (Move External RAM) 对外部RAM的数据传送;MOVX @DPTR,A MOVX A,@DPTR/@Ri MOVX @Ri,A二、算术运算类指令(8种助记符)ADD(Addition) 加法;ADDC(Add with Carry) 带进位加法;INC(Increment) 加1;INC A/Rn/direct/@Ri/源/DPTRDA(Decimal Adjust) 十进制调整;SUBB(Subtract with Borrow) 带借位减法;DEC(Decrement) 减1;DEC A/Rn/direct/@Ri/源MUL(Multiplication、Multiply) 乘法;MUL AB 高B,低A。

Cy=0 大于256,OV=1 DIV(Division、Divide) 除法;DIV AB 商A,余B。

Cy=0 OV=B(同上)三、逻辑运算类指令(9种助记符)CLR(Clear) 清零;CLR ACPL(Complement) 取反;CPL ARL(Rotate left) 循环左移;(同上)RLC(Rotate Left throught the Carry flag) 带进位循环左移;(同上)RR(Rotate Right) 循环右移;(同上)RRC (Rotate Right throught the Carry flag) 带进位循环右移;(同上)ANL(AND Logic) 逻辑与;ANL A,#data/Rn/direct/@Ri ANL direct,A/#dataORL(OR Logic) 逻辑或;ORL A,#data/Rn/direct/@Ri ANL direct,A/#dataXRL(Exclusive-OR Logic) 逻辑异或;(同上)四、位操作指令(6种助记符)MOV 位数据传送指令;MOV C,bit MOV bit,CCLR 位清零;C bitSETB(Set Bit)位置1;C bitCPL位取反;(同上)ANL位逻辑运算指令;ANL C,bit//bitORL位逻辑或运算指令;(同上)五、控制转移类指令(18种助记符)AJMP(Absolute Jump)绝对转移;AJMP addr11/ LABELLJMP(Long Jump)长转移;(同上)SJMP(Short Jump)短转移;SJMP rel/ LABELJMP间接转移指令; JMP @A+DPTRJZ (Jump if Zero)结果为0则转移;JZ rel/ LABELJNZ (Jump if Not Zero) 结果不为0则转移;(同上)CJNE (Compare Jump if Not Equal)比较不相等则转移;CJNE A,direct,rel/ LABEL CJNE A/Rn/@Ri,#data,rel/ LABELJC (Jump if the Carry flag is set)有进位则转移;JC rel/ LABELJNC (Jump if Not Carry)无进位则转移;(同上)JB (Jump if the Bit is set)位为1则转移;JB bit, rel/ LABELJNB (Jump if the Bit is Not set) 位为0则转移;(同上)JBC(Jump if the Bit is set and Clear the bit) 为1则转移,并清除该位;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;DJNZ Rn,rel/ LABEL DJNZ direct,rel/ LABELLCALL(Long subroutine Call)子程序长16调用;LCALL addr16/ SUBROUTINEACALL(Absolute subroutine Call)子程序绝对11调用;(同上)RET(Return from subroutine)子程序返回;RETI(Return from Interruption)中断返回;NOP (No Operation) 空操作;8种常用伪指令1.ORG 16位地址;此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。

51单片机汇编语言指令教程(校对版)

51单片机汇编语言指令教程(校对版)

03
02
01
00
返回前一次
2.2.3立即寻址
指令本身直接含有所需要的8位或16位的操作数。
将此数称为“立即数”(使用#标明)。如:
MOV A,#30H
;将(8位)立即数送累加器A
MOV DPTR,#2000H ;16位立即数送DPTR积存器
【注意】:MOV A,#30H MOV A,30H 两者的区别。 立即数寻址的指令长度为2或3个字节。
5,位操作指令:位传送、位置位、位运算和位控制转移等 操作。 【 特点】:按位操作而不是按字节的操作。位控转移的判 断不是检测某一个字节而是对某一个位进行检测并决定是 否进行程序转移。 这类指令基本不影响PSW的内容。
2.2 寻址方式
在指令的操作数位置上,用于表征、寻找操作数的方式定义 为“寻址方式”。
3,间址方式的指令不能访问SFR中的单元。如下面的程序 是错误的: MOV R1,#80H MOV A,@R1 (因为80H为SFR的物理地址)
MCS-51 片内 、片外 数据存储器示意图
FFH 特殊功能 寄存器 SFR
80H 7FH
通用数据 存储器
00H
片内数据存储器 256B个字节
FFFFH
注意:
片外数据 存储器 64KB
1,访问片内RAM20H存储单元; MOV A,20H
2,访问片外RAM存储单元; MOV R0,#20H MOVX A,@R0
0000H
3,尽管片内与片外的RAM单元 的00H-FFH地址相重叠但由 于指令的不同不会发生地址
混乱。
片外数据存储器 64KB个字节
2.2.5 变址寻址
操作码 OP
操作数或操作数地址 DATA 或 ADDRESS

51单片机汇编语言教程

51单片机汇编语言教程

51单片机汇编语言教程汇编语言是一种低级程序设计语言,直接操作计算机硬件,能够充分发挥硬件的性能,是学习嵌入式系统开发的基础。

而51单片机是广泛应用于嵌入式系统中的一种微控制器,具有功能强大、易于掌握等特点。

本篇文章将为大家介绍51单片机汇编语言的基本概念、编程指令以及应用实例,帮助读者快速入门。

一、51单片机汇编语言概述1.1 51单片机简介51单片机是一种由英特尔公司设计的8位微控制器,其核心是一个CPU,具有RAM、ROM、I/O端口等外围设备。

它采用的是汇编语言编程,具有指令集简单、易于学习等特点,因此深受嵌入式系统开发者的喜爱。

1.2 汇编语言的基本概念汇编语言是一种低级语言,与高级语言相比,更接近计算机底层的硬件操作。

在汇编语言中,程序员通过编写指令来告诉计算机具体的操作,如数据存储、运算等。

二、51单片机汇编语言基础知识2.1 寄存器寄存器是51单片机中的一种重要的存储设备,用于存储数据、地址等信息。

51单片机共有32个寄存器,其中一部分用于存储通用数据,一部分用于存储特定功能的数据。

在汇编语言编程中,我们可以使用这些寄存器来存储数据和进行运算。

2.2 程序存储器程序存储器是51单片机中存储程序的地方,它可以分为ROM和RAM两种类型。

其中,ROM存储的是不可修改的程序代码,而RAM 存储的是可以读写的数据。

2.3 I/O端口I/O端口是51单片机与外部设备进行数据交互的接口,通过输入/输出指令,可以实现数据的输入与输出。

在汇编语言中,我们需要了解如何使用I/O端口来与外部设备进行通信。

三、51单片机汇编语言编程指令3.1 数据传输指令数据传输指令用于将数据从一个地方传输到另一个地方。

常用的数据传输指令有MOV、MOVC、MOVX等,通过这些指令可以实现数据的读取、存储和传输等操作。

3.2 算术运算指令算术运算指令用于对数据进行加、减、乘、除等运算操作。

51单片机中的算术运算指令包括ADD、SUB、MUL、DIV等,通过这些指令可以对数据进行各种运算操作。

单片机汇编语言指令集

单片机汇编语言指令集

单片机汇编语言指令集汇编语言的所有指令数据传送指令集MOV功能: 把源操作数送给目的操作数语法: MOV 目的操作数,源操作数格式: MOV r1,r2MOV r,mMOV m,rMOV r,dataXCHG功能: 交换两个操作数的数据语法: XCHG格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数 POP 操作数格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPALEA,LDS,LES功能: 取地址至寄存器语法: LEA r,m LDS r,m LES r,mXLAT(XLATB)功能: 查表指令语法: XLAT XLAT m算数运算指令ADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,Z,S,OSUB,SBB功能:减法指令语法: SUB OP1,OP2 SBB OP1,OP2格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,OINC,DEC功能: 把OP的值加一或减一语法: INC OP DEC OP格式: INC r/m DEC r/m影响标志: P,A,Z,S,ONEG功能: 将OP的符号反相(取二进制补码)语法: NEG OP格式: NEG r/m影响标志: C,P,A,Z,S,OMUL,IMUL功能: 乘法指令语法: MUL OP IMUL OP格式: MUL r/m IMUL r/m影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)DIV,IDIV功能:除法指令语法: DIV OP IDIV OP格式: DIV r/m IDIV r/mCBW,CWD功能: 有符号数扩展指令语法: CBW CWDAAA,AAS,AAM,AAD功能: 非压BCD码运算调整指令语法: AAA AAS AAM AAD影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)DAA,DAS功能: 压缩BCD码调整指令语法: DAA DAS影响标志: C,P,A,Z,S位运算指令集AND,OR,XOR,NOT,TEST功能: 执行BIT与BIT之间的逻辑运算语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL功能: 移位指令语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL影响标志: C,P,Z,S,OROR,ROL,RCR,RCL功能: 循环移位指令语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL 影响标志: C,P,Z,S,O程序流程控制指令集CLC,STC,CMC功能: 设定进位标志语法: CLC STC CMC标志位: CCLD,STD功能: 设定方向标志语法: CLD STD标志位: DCLI,STI功能: 设定中断标志语法: CLI STI标志位: ICMP功能: 比较OP1与OP2的值语法: CMP r/m,r/m/data标志位: C,P,A,Z,OJMP功能: 跳往指定地址执行语法: JMP 地址JXX功能: 当特定条件成立则跳往指定地址执行语法: JXX 地址注:A: ABOVE,当C=0,Z=0时成立B: BELOW,当C=1时成立C: CARRY,当弁时成立 CXZ: CX寄存器的值为0(ZERO)时成立E: EQUAL,当Z=1时成立G: GREATER(大于),当Z=0且S=0时成立L: LESS(小于),当S不为零时成立N: NOT(相反条件),需和其它符号配合使用O: OVERFLOW,O=1时成立P: PARITY,P=1时成立PE: PARITY EVEN,P=1时成立PO: PARITY ODD,P=0时成立S: SIGN,S=1时成立Z: ZERO,Z=1时成立LOOP功能: 循环指令集语法: LOOP 地址LOOPE(Z)地址 LOOPNE(Z) 地址标志位: 无CALL,RET功能: 子程序调用,返回指令语法: CALL 地址 RET RET n标志位: 无INT,IRET功能: 中断调用及返回指令语法: INT n IRET标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器字符串操作指令集MOVSB,MOVSW,MOVSD功能: 字符串传送指令语法: MOVSB MOVSW MOVSD标志位: 无CMPSB,CMPSW,CMPSD功能: 字符串比较指令语法: CMPSB CMPSW CMPSD标志位: C,P,Z,S,OSCASB,SCASW功能: 字符串搜索指令语法: SCASB SCASW标志位: C,P,Z,S,OLODSB,LODSW,STOSB,STOSW功能: 字符串载入或存贮指令语法: LODSB LODSW STOSB STOSW标志位: 无REP,REPE,REPNE功能: 重复前缀指令集语法: REP 指令S REPE 指令S REPNE 指令S标志位: 依指令S而定对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。

汇编语言指令集

汇编语言指令集

mov‎a,b ‎把b的值送‎给a‎ret ‎返回主程序‎n‎o p 无作‎用,英文“‎n o op‎e rati‎o n”的简‎写,意思是‎“do n‎o thin‎g”(机器‎码90)*‎**机器码‎的含义参看‎上面‎(解释:‎u ltra‎e dit打‎开编辑ex‎e文件时你‎看到90,‎等同于汇编‎语句nop‎)‎c all ‎调用子程序‎j‎e或jz‎若相等则‎跳(机器码‎74 或0‎F84) ‎jn‎e或jnz‎若不相等‎则跳(机器‎码75或0‎F85) ‎jm‎p无条件‎跳(机器码‎E B)‎jb ‎若小于则跳‎j‎a若大于‎则跳‎jg 若‎大于则跳‎jg‎e若大于‎等于则跳‎jl‎若小于则‎跳‎j le 若‎小于等于则‎跳‎p op 出‎栈‎p ush ‎压栈三‎.常见修改‎(机器码)‎7‎4=>75‎74=>‎90 74‎=>EB ‎75‎=>74 ‎75=>9‎0 75=‎>EB‎jnz‎->nop‎7‎5->90‎(相应的机‎器码修改)‎j‎n z ->‎jmp ‎75‎-> E‎B(相应的‎机器码修改‎)‎j nz -‎> jz ‎75‎->74 ‎(正常) ‎0F 85‎-> 0‎F 84(‎特殊情况下‎,有时,相‎应的机器码‎修改)‎四.两种不‎同情况的不‎同修改方法‎1‎.修改为j‎m p‎je(j‎n e,jz‎,jnz)‎=>jm‎p相应的机‎器码EB ‎(出错信息‎向上找到的‎第一个跳转‎)jmp 的‎作用是绝对‎跳,无条件‎跳,从而跳‎过下面的出‎错信息‎xxx‎x xxxx‎x xxx ‎出错信息,‎例如:注册‎码不对,s‎o rry,‎未注册版不‎能...,‎"Func‎t ion ‎N ot A‎v aibl‎e in ‎D emo"‎或‎"Com‎m and ‎N ot A‎v aibl‎e" 或‎"Can'‎t sav‎e in ‎S hare‎w are/‎D emo"‎等(我们‎希望把它跳‎过,不让它‎出现)<。

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