51单片机汇编语言教程:11课单片机算术运算指令(1)
单片机指令的算术运算分析单片机指令中的算术运算功能
单片机指令的算术运算分析单片机指令中的算术运算功能单片机(Microcontroller)是一种集成了处理器、存储器和输入/输出(I/O)接口的微型计算机系统。
它广泛应用于各种电子设备中,如智能手机、电视机、汽车电子系统等。
而在单片机的编程中,算术运算是一项重要的功能,它使得单片机能够进行各种数值计算和逻辑判断。
本文将对单片机指令中的算术运算功能进行分析。
1. 加法运算在单片机中,加法运算是最常见的算术运算之一。
单片机中一般有专门的指令用于执行加法运算。
这些指令通常包括将两个操作数相加的指令和将运算结果存储到目标寄存器中的指令。
通过这些指令,单片机可以实现对不同长度和精度的数值进行加法运算。
2. 减法运算除了加法运算,单片机还可以执行减法运算。
减法运算可以通过将被减数与减数取负后再执行加法运算来实现。
单片机中的减法指令包括减法运算的指令和将运算结果存储到目标寄存器的指令。
3. 乘法运算乘法运算是单片机中较复杂的一种算术运算。
通常情况下,单片机的乘法运算是通过多次执行加法运算来实现的。
单片机通过将乘法操作数分解为多个部分,并使用不同的加法指令逐步计算得到最终的乘积。
4. 除法运算与乘法运算相似,除法运算也是相对复杂的一种算术运算。
单片机中一般使用迭代逼近法(Iterative approximation)来执行除法运算。
这种方法通过多次迭代计算,使得除法运算逐步逼近最终结果。
5. 移位运算除了基本的四则运算,单片机还可以执行移位运算。
移位运算包括逻辑左移、逻辑右移、算术左移和算术右移等。
移位运算可以将操作数的二进制表示进行平移,从而实现乘以或除以2的幂次方的计算。
通过以上分析,我们可以看出单片机的算术运算功能十分强大。
不仅可以执行基本的加减乘除运算,还能进行移位运算等。
这些功能使得单片机能够满足各种复杂的计算需求,并在各种电子设备中发挥重要作用。
总结起来,单片机指令中的算术运算功能是一项重要的功能,它使得单片机能够实现各种数值计算和逻辑判断。
51单片机指令总结
51单片机指令总结51单片机是一种经典的单片机型号,由英特尔公司推出。
它是一种基于哈佛结构的8位单片机,具有强大的功能与广泛的应用领域,包括嵌入式系统、自动控制、仪器仪表、通信等等。
51单片机的指令集是其核心功能之一,本文将对51单片机的指令进行详细总结。
1.数据传送指令:用于数据在寄存器之间的传递,包括MOV、XCH、PUSH、POP等指令。
MOV指令用于将数据从一个寄存器传送到另一个寄存器,XCH指令用于交换两个寄存器的值,PUSH和POP指令用于将数据从寄存器压入堆栈或从堆栈弹出。
2.算术指令:用于进行算数运算,包括ADD、SUB、MUL、DIV等指令。
ADD指令用于两个操作数相加,SUB指令用于两个操作数相减,MUL指令用于两个操作数相乘,DIV指令用于两个操作数相除。
3.逻辑指令:用于进行逻辑运算,包括AND、OR、XOR、NOT等指令。
AND指令用于进行按位与运算,OR指令用于进行按位或运算,XOR指令用于进行按位异或运算,NOT指令用于进行按位非运算。
4.跳转指令:用于控制程序的跳转,包括JMP、JZ、JC、DJNZ等指令。
JMP指令用于无条件跳转到指定地址,JZ指令用于如果结果为零则跳转,JC指令用于如果进位标志位为1则跳转,DJNZ指令用于如果结果不为零则跳转。
5.输入输出指令:用于与外部设备进行数据的输入与输出,包括IN、OUT指令。
IN指令用于从指定的端口读取一个字节数据,OUT指令用于向指定的端口写入一个字节数据。
6.中断指令:用于处理中断事件,包括EI、DI、INT等指令。
EI指令用于使能中断,DI指令用于禁止中断,INT指令用于产生软件中断。
7.位操作指令:用于对特定位进行操作,包括SETB、CLR、CPL、RL、RR等指令。
SETB指令用于将指定位设置为1,CLR指令用于将指定位清零,CPL指令用于对指定位进行取反操作,RL指令用于循环左移操作,RR指令用于循环右移操作。
单片机指令的算术运算与数值处理技巧
单片机指令的算术运算与数值处理技巧单片机(Microcontroller Unit,MCU)作为一种集成了处理器核心、存储器和各种外设接口的微型计算机,通常用于嵌入式系统中。
在单片机的编程过程中,算术运算和数值处理是其中一个重要的方面。
本文将介绍单片机指令的算术运算和数值处理的技巧和方法。
一、算术运算指令在单片机中,常见的算术运算指令包括加法、减法、乘法、除法等。
这些指令的使用需要掌握相应的编程知识和技巧。
1. 加法运算在单片机中执行加法运算可以使用ADD指令。
例如,使用ADD A, B指令可以将A寄存器的值与B寄存器的值相加,并将结果保存在A寄存器中。
同时,还可以使用ADD指令进行带进位的加法,比如使用ADDC A, B指令。
2. 减法运算减法运算可以使用SUB指令进行。
例如,使用SUB A, B指令可以将A寄存器的值减去B寄存器的值,并将结果保存在A寄存器中。
还可以使用SUBB指令进行带借位的减法。
3. 乘法运算单片机中一般没有专门的乘法指令,但可以通过多次执行移位和加法运算来实现乘法运算。
例如,可以使用循环结构和移位指令来实现乘法运算,将被乘数左移一位,然后与乘法因子相加。
重复这个过程直到完成相应的乘法运算。
4. 除法运算除法运算在单片机中也没有专门的指令。
如果需要进行除法运算,可以通过循环结构和移位指令来实现。
例如,可以使用循环结构和移位指令将被除数逐步减去除法因子,直到被除数小于除法因子为止,最后得到商和余数。
二、数值处理技巧除了基本的算术运算指令外,单片机的数值处理还需要掌握一些常用的技巧和方法,以提高程序的效率和准确性。
1. 数据类型选择在进行数值处理时,应根据实际需要选择合适的数据类型。
例如,如果处理的数值范围比较小,可以选择使用无符号整型(unsigned int)来提高存储效率。
而如果需要处理负数,可以选择有符号整型(signed int)。
2. 溢出处理在进行算术运算时,可能会出现溢出的情况。
常见51单片机指令及详解
常见51单片机指令及详解1. 简介单片机是一种集成电路,具备处理和控制功能。
51单片机是指Intel公司推出的一系列8位单片机,常用于嵌入式系统和物联网设备。
本文将介绍一些常见的51单片机指令,并对其进行详解。
2. 数据传送指令2.1 MOV指令MOV指令用于将数据从一个寄存器或内存位置传送到另一个寄存器或内存位置。
例如:MOV A, #10 ;将立即数10传送给累加器AMOV R0, R1 ;将寄存器R1的值传送给R02.2 XCH指令XCH指令用于交换两个寄存器或内存位置中的数据。
例如:XCH A, B ;交换累加器A和B的值3. 算术运算指令3.1 ADD指令ADD指令用于将两个操作数相加,并将结果保存在累加器中。
例如:ADD A, B ;将累加器A和寄存器B的值相加,结果存储在A中3.2 SUBB指令SUBB指令用于将第二个操作数的补码与累加器的值相减,并将结果存储在累加器中。
例如:SUBB A, B ;将B的补码与累加器A的值相减,结果存储在A中4. 逻辑运算指令4.1 ANL指令ANL指令用于对两个操作数进行按位与运算,并将结果存储在目的操作数中。
例如:ANL A, B ;将累加器A和寄存器B的值按位与,结果存储在A 中4.2 ORL指令ORL指令用于对两个操作数进行按位或运算,并将结果存储在目的操作数中。
例如:ORL A, B ;将累加器A和寄存器B的值按位或,结果存储在A 中5. 跳转指令5.1 JMP指令JMP指令用于无条件跳转至指定的目标地址。
例如:JMP 2000H ;跳转至内存地址2000H处执行指令5.2 JZ指令JZ指令用于在累加器为零时跳转至指定的目标地址。
例如:JZ 3000H ;当累加器为零时,跳转至内存地址3000H处执行指令6. 输入输出指令6.1 IN指令IN指令用于将外部设备的数据输入到累加器或指定的寄存器中。
例如:IN A, P1 ;将P1端口的数据输入到累加器A中6.2 OUT指令OUT指令用于将累加器或指定的寄存器中的数据输出到外部设备。
单片机指令的算术和逻辑运算
单片机指令的算术和逻辑运算在计算机科学与电子工程领域,单片机指令的算术和逻辑运算是非常重要的内容。
本文将深入探讨单片机指令的算术和逻辑运算,介绍其基本原理、应用场景以及相关的编程技巧。
一、算术运算算术运算主要包括加法、减法、乘法和除法。
在单片机中,这些运算由相应的指令来实现。
以加法为例,单片机通常使用ADD指令来执行此操作。
ADD指令可以将两个操作数相加,并将结果存储在目标寄存器中。
类似地,SUB指令用于减法运算,MUL指令用于乘法运算,DIV指令用于除法运算。
除了基本的算术运算指令,单片机还提供了其他相关的指令,如累加指令(INC)和累减指令(DEC)。
这些指令用于对寄存器或内存中的数值进行自增或自减操作。
通过结合这些指令,开发者可以灵活地进行各种复杂的算术运算。
除了整数运算外,单片机还支持浮点数运算。
浮点数是一种表示实数的方法,包括小数部分和指数部分。
单片机中的浮点数运算通常由相应的指令库来实现。
这些指令库提供了一系列的浮点数运算指令,如浮点数加法指令、浮点数乘法指令等。
通过使用这些指令,单片机可以高效地进行复杂的浮点数计算,满足各种实际应用的需求。
二、逻辑运算逻辑运算主要包括与、或、非、异或等操作。
在单片机中,逻辑运算由相应的指令来实现。
以与运算为例,单片机通常使用AND指令来执行此操作。
AND指令可以将两个操作数的对应位进行与运算,并将结果存储在目标寄存器中。
类似地,OR指令用于或运算,NOT指令用于非运算,XOR指令用于异或运算。
逻辑运算在单片机编程中被广泛应用。
它们可以用于条件判断、位操作、数据处理等多个方面。
例如,在某些应用场景下,我们需要对某个输入信号进行判断,并根据判断结果来执行相应的操作。
这时,我们可以利用逻辑运算指令来进行条件判断,并根据判断结果来选择不同的执行路径。
此外,逻辑运算还可以用于位操作。
位操作主要涉及对数据的位进行开关操作,如位与、位或、位取反等。
通过逻辑运算指令,我们可以实现对数据位的精确控制,提高程序的效率和可靠性。
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。
51单片机教材(免费完整版)
单片机教程原作:进墨者目录单片机教程第一课:单片机概述 (2)单片机教程第二课:单片机的内部、外部结构(一) (2)单片机教程第三课:几个基本概念 (5)单片机教程第四课:第一个小程序 (8)单片机教程第五课:延时程序分析 (10)单片机教程第六课:单片机的内外部结构分析(四) (12)单片机教程第七课:单片机内部结构分析(五) (15)单片机教程第八课(寻址方式与指令系统) (19)单片机教程第九课:数据传递指令 (22)单片机教程第十课数据传递类指令指令 (25)单片机教程第十一课:算术运算类指令 (28)单片机教程第十二课:逻辑运算类指令: (32)单片机教程第十三课:逻辑与指令 (34)单片机教程第十四课:条件转移指令 (38)单片机教程第十五课:位及位操作指令 (41)单片机教程第十六课:计数器与定时器 (44)单片机教程第十七课:定时/计数器的方式控制字 (46)单片机教程第十八课:中断系统 (49)单片机教程第十九课:定时、中断练习一 (52)单片机教程第二十课:定时/计数器实验2 (57)单片机教程第二十一课:串行接口 (60)单片机教程第二十二课:串行口应用编程实例 (65)单片机教程第二十三课:LED数码显示器的连接与编程 (68)单片机教程第二十四课:动态扫描显示接口 (72)单片机教程第二十五课:键盘接口与编程 (78)单片机教程第二十六课:矩阵式键盘接口技术及编程 (83)单片机教程第二十七课:初学单片机几个不易掌握的概念 (87)单片机教程第二十八课:单片机音乐程序的设计与实验 (90)单片机教程第一课:单片机概述1、何谓单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。
而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
51单片机或命令的用法
51单片机或命令的用法51单片机是一种常见的微控制器,广泛应用于各种嵌入式系统中。
以下是51单片机常用指令的用法:1、数据传输指令数据传输指令主要用于在寄存器、内存单元和输入/输出端口之间进行数据传输。
MOV:将源操作数传送到目标操作数。
MOV A, #data:将8位立即数data传送到累加器A中。
MOV R0, R2:将寄存器R2的值传送到寄存器R0中。
MOV @R0, A:将累加器A的值传送到R0所指定的存储单元中。
MOV DPTR, #data:将16位立即数data传送到数据指针DPTR寄存器中。
2、算术指令算术指令主要用于对两个操作数进行算术运算,并将结果存储在目标操作数中。
ADD:将两个操作数相加,并将结果存储在目标操作数中。
ADD A, R1:将累加器A与R1的值相加,将结果存入累加器A中。
ADD A, #data:将累加器A与8位立即数data相加,将结果存入累加器A中。
ADDC:在相加时,将进位标志位C的状态自动加到结果的最低有效位上。
ADDC A, R2:将累加器A与R2的值以及进位标志位C相加,将结果存入累加器A中。
3、控制转移指令控制转移指令主要用于实现程序的跳转和流程控制。
AJMP:无条件跳转到指定地址。
LJMP:长跳转到指定地址。
SJMP:短跳转到指定地址。
4、位操作指令位操作指令主要用于对单个位进行操作。
SETB:设置位。
CLR:清除位。
CPL:取反位。
:定时器是51单片机中的一个重要模块,它可以用来产生精确的定时/计数功能,常用于测量时间间隔或者产生定时中断。
51单片机的定时器有三种工作模式:模式0(工作方式1):当m1,m2设置成0,0时,定时器/计数器就工作在方式0,工作方式0是一种13位定时器/计数器方式,可用来测量外信号的脉冲宽度所持续的时间。
模式1(工作方式2):工作方式1为16位定时器/计数其结构和操作与工作方式0基本相同,唯一的区别是工作方式1的计数器由tl0的8位和th0的8位共同组成16位的计数器,其定时时间为:t=(2^16-t0初值)×时钟周期×12 。
MCS-51单片机指令系统教程(1)
三字节指令在存储器中存放的方式示意图
指令的字节数与指令的运行时间
指令的字节多是否意味着指令周期就长?
指令
字节数 周期数
MOV A,R0
1
1
MOV A,#0FFH 2
1
MOV 20H,#30H 3
2
MUL AB
1
4
INC DPTR
1
1
指令说明 R0内容送累加器A
立即数FFH送A 立即数30H送内存20h单元
5,位操作指令:位传送、位置位、位运算和位控制转移等 操作。 【 特点】:按位操作而不是按字节的操作。位控转移的判 断不是检测某一个字节而是对某一个位进行检测并决定是 否进行程序转移。 这类指令基本不影响PSW的内容。
返回
2.2 寻址方式
在指令的操作数位置上,用于表征、寻找操作数的方式定义 为“寻址方式”。
MOV A,R0 ;将工作寄存器R0的内容送累加器A
这里使用了不同的寻址方式,其指令的结构也不相同。
前者是:11100101(0E5H)、00000000(00H) 双字节。
后者的机器码是:11101000(0E8H)
单字节;
在物理结构上,R0与RAM的00H单元恰好是同一单元, 所以不同的指令而执行结果是一样的。
类似的还有累加器A:
INC A
寄存器寻址方式(单字节);
INC ACC 直接寻址方式(双字节);
INC 0E0H 直接寻址方式(双字节)。
3,在指令系统中:字节地址与位地址是完全不同的概念。 前者用direct表示,而后者用bit 表示,但在指令中都是用 16进制表示的数。 如:
MOV A,20H ;将RAM的20H单元内容送A MOV C,20H ;将位寻址区中的位地址为20H位内容送
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。
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,则跳转到指定地址。
51单片机数学运算
51单片机数学运算51单片机是一种常用的微控制器,具有广泛的应用领域。
在数学运算方面,51单片机可以进行基本的算术运算、逻辑运算和位运算等。
本文将介绍51单片机在数学运算方面的应用。
一、算术运算51单片机可以进行加法、减法、乘法和除法等基本的算术运算。
通过使用相关的指令,可以将数值存储在寄存器中,并进行各种算术运算。
例如,可以使用ADD指令将两个数相加,并将结果保存在某个寄存器中。
类似地,可以使用SUB指令进行减法运算,MUL指令进行乘法运算,DIV指令进行除法运算。
二、逻辑运算51单片机可以进行与、或、非和异或等逻辑运算。
逻辑运算常用于判断条件、控制程序流程和实现逻辑控制等。
通过使用相关的指令,可以将两个数进行逻辑运算,并根据结果进行相应的处理。
例如,可以使用AND指令进行与运算,OR指令进行或运算,NOT指令进行非运算,XOR指令进行异或运算。
三、位运算51单片机可以进行位移、与、或、非和异或等位运算。
位运算常用于处理二进制数据和位控制等。
通过使用相关的指令,可以对数据进行位运算,并根据需要进行相应的处理。
例如,可以使用MOV指令将数据移动到某个寄存器中,使用AND指令进行与运算,使用OR指令进行或运算,使用NOT指令进行非运算,使用XOR指令进行异或运算。
四、数值转换51单片机可以进行十进制和二进制、十六进制之间的转换。
通过使用相关的指令和算法,可以将不同进制的数值进行转换,并进行相应的处理。
例如,可以使用MOV指令将十进制数值转换为二进制或十六进制数值,使用CLR指令清除数据,使用INC指令增加数据,使用DEC指令减少数据。
五、数学函数除了基本的算术运算和逻辑运算,51单片机还可以进行一些常用的数学函数计算。
通过使用相关的库函数和算法,可以进行数值的平方、开方、对数、三角函数等计算。
例如,可以使用库函数sqrt计算一个数的平方根,使用库函数log计算一个数的自然对数,使用库函数sin计算一个角度的正弦值。
51单片机汇编指令详解
MCS-51系列单片机指令以A开头的指令有18条,分别为:ACALL addr11ADD A,RnADD A,directADD A,@RiADD A,#dataADDC A,RnADDC A,directADDC A,@RiADDC A,#dataAJMP addr11ANL A,RnANL A,directANL A,@RiANL A,#dataANL direct,AANL direct,#dataANL C,bitANL C,/bit1、ACALL addr11指令名称:绝对调用指令指令代码:{A10,A9,A8,10001},A[7:0]指令功能:构造目的地址,进行子程序调用。
其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不变。
操作内容:PC←(PC)+2SP←(SP)+1(SP)←(PC)7~0SP←(SP)+1(SP)←(PC)15~8PC10~0←addrl0~0字节数: 2机器周期:2使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。
2、ADD A,Rn指令名称:寄存器加法指令指令代码:28H~2FH指令功能:累加器内容与寄存器内容相加操作内容:A←(A)+(Rn), n=0~7字节数: 1机器周期;1影响标志位:C,AC,OV3、ADD A,direct指令名称:直接寻址加法指令指令代码:25H指令功能:累加器内容与内部RAM单元或专用寄存器内容相加操作内容:A←(A)+(direct)字节数: 2机器周期:1影响标志位:C,AC,OV4、ADD A,@Ri指令名称:间接寻址加法指令指令代码:26H~27H指令功能:累加器内容与内部RAM低128单元内容相加操作内容:A←(A)+((Ri)), i=0,1字节数: 1机器周期:1影响标志位:C,AC,OV5、ADD A,#data指令名称:立即数加法指令指令代码:24H指令功能:累加器内容与立即数相加操作内容:A←(A)+data字节数: 2机器周期:1影响标志位:C,AC,OV6、ADDC A,Rn指令名称:寄存器带进位加法指令指令代码:38H~3FH指令功能:累加器内容、寄存器内容和进位位相加操作内容:A←(A)+(Rn)+(C), n=0~7字节数: 1机器周期:1影响标志位:C,AC,OV7、ADDC A,direct指令名称:直接寻址带进位加法指令指令代码:35H指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加操作内容:A←(A)+(direct)+(C)字节数: 2机器周期:1影响标志位:C,AC,OV8、ADDC A,@Ri指令名称:间接寻址带进位加法指令指令代码:36H~37H指令功能:累加器内容、内部RAM低128单元内容及进位位相加操作内容:A←(A)+((Ri))+(C), i=0,1字节数: 1机器周期:1影响标志位:C,AC,OV9、ADDC A,#data指令名称:立即数带进位加法指令指令代码:34H指令功能:累加器内容、立即数及进位位相加操作内容:A←(A)+data+(C)字节数: 2机器周期:1影响标志位:C,AC,OV10、AJMP addr11指令名称:绝对转移指令指令代码:{A10,A9,A8,00001},A[7:0]指令功能:构造目的地址,实现程序转移。
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。
单片机指令表汇总
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中。
51单片机指令使用方法
51单片机指令使用方法51单片机是一种常用的嵌入式微控制器,广泛应用于各种电子设备中。
它具有强大的控制能力和灵活的指令集,为我们开发各种应用提供了便利。
在使用51单片机时,我们需要熟悉其指令的使用方法,下面我们来介绍一些常用的指令及其应用。
首先,我们来讲解一些与数据传输和处理相关的指令。
MOV指令是最常用的指令之一,用于将一个数据从一个寄存器或内存单元传输到另一个寄存器或内存单元。
通过MOV指令,我们可以在单片机中实现数据的复制、传递和处理等操作。
除了MOV指令,还有一些其他常用的数据传输和处理指令,比如ADD指令用于进行加法运算,AND指令用于进行逻辑与操作,OR指令用于进行逻辑或操作等。
这些指令可以实现各种数据处理、逻辑运算和位操作等功能,为我们的程序提供灵活性和多样性。
接下来,我们介绍一些与控制流程相关的指令。
循环结构是程序中常用的一种控制结构,而JMP指令和CJNE指令可以实现跳转和循环控制。
JMP指令用于无条件跳转到指定的地址,而CJNE指令则根据比较结果决定是否跳转到指定的地址。
通过这些指令,我们可以实现程序的分支、循环和条件控制等功能。
此外,还有一些与中断处理相关的指令需要我们熟悉。
中断是单片机中常用的一种事件触发机制,通过中断处理,我们可以实现对外部事件的及时响应。
EA指令用于使能全局中断,而EN和DIS指令用于使能和禁止外部中断。
通过这些指令,我们可以合理利用中断机制,提高程序的响应速度和实时性。
最后,我们来介绍一些与IO口操作相关的指令。
单片机的IO口是与外部设备进行通信的接口,而P1、P2等寄存器则是与IO口对应的数据寄存器。
通过MOV指令和SETB/C指令,我们可以实现对IO口数据的读写操作和控制。
通过这些指令,我们可以与外部设备进行数据交互,实现各种输入输出功能。
总结起来,51单片机的指令使用是嵌入式开发中的基础知识,熟练掌握各种指令的使用方法能够提高我们的开发效率和程序的性能。
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
51单片机算术运算指令
1.程序状态字PSWMCS-51有一个程序状态字寄存器PSW,用来保存指令执行结果的标志,供程序查讯和判别。
PSW是特殊功能寄存器中的一个,其格式如下:PSW7--既是布尔处理机的累加器C,又是进位标志CY,如果操作结果在最高位有进位输出(加法时)或借位输入(减法时),置位CY,否则清“0”CY。
AC--辅助进位(半进位)标志。
如果操作结果的低4位有进位(加法时)或向高4位借位时(减法),置AC,否则清“0”AC,AC主要用于二-十进制数加法调整。
OV--溢出标志。
如果操作结果有进位进入最高位,但最高位没有产生进位,或者最高位产生进位而低位没有向最高位进位,这时置位溢出标志位,否则OV清“0”。
溢出标志位用于补码运算,当有符号的数运算结果不能用8位二进制数表示时,OV将置位。
P--累加器A的奇偶标志位,如果累加器A的8位的模2和为1(奇),则P=1;否则P=0。
由于P总是表示A的奇偶性,随着A的内容变化的,所以一个值写入PSW的P位的值不变。
RS1、RS0--指示当前使用的工作寄存器区。
F0--用户标志位。
可作为软件标志,它的作用和内部RAM位寻址区的各位相似。
PSW1--保留位,对它的操作无效。
2.加法指令•1、不带进位加法指令工作寄存器、内部RAM单元内容或立即数的8位无符号二进制数和累加器A中数相加,所得和存放于累加器A中,当和的第3、7位有进位时,分别将AC,CY标志位置1;否则为0。
上述指令的执行将影响标志位AC、CY、OV、P。
对于无符号数,进位标志位CY=1,表示溢出;CY=0表示无溢出。
带符号数运算的溢出取决于第6、7位中有一位产生进位,而另一位不产生进位,溢出标志位OV置“1”否则被清“0”。
OV=1表示两个正数相加,和变为负数,或两个负数相加,和变为正数的错误结果。
源操作数有四种寻址方式:寄存器、直接、间接和立即数。
•2、带进位加法指令:这是四条带进位的加法指令。
将累加器A内容加当前CY标志位内容,再加无符号单字节的数,和存于累加器A中。
51单片机指令
51单片机指令单片机,这个在电子世界中扮演着重要角色的小家伙,其功能的实现离不开各种指令的指挥。
51 单片机作为经典的单片机类型,拥有丰富的指令集,这些指令就像是单片机的“语言”,告诉它该如何完成各种任务。
51 单片机的指令可以分为数据传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作指令等几大类。
数据传送指令是单片机中最常用的指令之一。
比如说“MOV A,50H”,这条指令的作用就是把十六进制数 50H 传送到累加器 A 中。
再比如“MOV R0, A”,它把累加器 A 的内容传送到寄存器 R0 中。
通过这些数据传送指令,我们可以在单片机内部的各个存储单元之间轻松地搬移数据,为后续的运算和操作做好准备。
算术运算指令则负责完成加、减、乘、除等基本的数学运算。
以加法指令“ADD A, R1”为例,它将累加器 A 的值和寄存器 R1 的值相加,结果存放在累加器 A 中。
减法指令“SUBB A, 10H”则是从累加器 A 的值中减去十六进制数 10H,并考虑借位情况。
这些算术运算指令在处理数值计算、数据调整等方面发挥着重要作用。
逻辑运算指令用于对数据进行与、或、异或等逻辑操作。
像“ANL A, R2”就是将累加器 A 的值和寄存器 R2 的值进行按位与运算,结果存放在累加器 A 中。
“ORL A, 80H”则是将累加器 A 的值和十六进制数80H 进行按位或运算。
逻辑运算指令在数据处理、条件判断等场景中常常被用到。
控制转移指令是改变程序执行流程的关键。
比如“JZ label”,如果累加器 A 的值为 0,则程序跳转到指定的 label 处执行;“CJNE A, 50H, label”,如果累加器A 的值不等于十六进制数50H,就跳转到label 处。
通过这些控制转移指令,我们可以根据不同的条件让程序有选择地执行不同的代码段,实现复杂的逻辑控制。
位操作指令是 51 单片机的一大特色。
“SETB bit”可以将指定的位设置为 1,“CLR bit”则将其清零。
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位减
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51 单片机汇编语言教程-慧净电子会员收集整理(全部 28 课)
51 单片机汇编语言教程:第 11 课-单片机算术运算指令
(基于 HL-1、HJ-C52、HJ-3G 实验板)
(图片 HL-1 开发板)
不带进位位的单片机加法指令
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
推荐使用慧净51实验板。
推荐51学习网淘宝网:/
51 单片机汇编语言教程-慧净电子会员收集整理(全部 28 课)
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
设(每个H,(R2)=55H,CY=1,执行指令SUBB A,R2之后,A中的值为73H。
说明:没有不带借位的单片机减法指令,如果需要做不带位的减法指令(在做第一次相减时),只要将CY清零即可。
乘法指令
MUL AB
此单片机指令的功能是将A和B中的两个8位无符号数相乘,两数相乘结果一般比较大,因此最终结果用1个16位数来表达,其中高8位放在B中,低8位放在A中。
在乘积大于FFFFFH(65535)时,0V 置 1(溢出),不然 OV 为 0,而 CY 总是
0。
例:(A)=4EH,(B)=5DH,执行指令
MUL AB 后,乘积是 1C56H,所以在 B 中放的是 1CH,而 A 中放的则是 56H。
除法指令
DIV AB
此单片机指令的功能是将A中的8位无符号数除了B中的8位无符号数(A/B)。
除法一般会出现小数,但计算机中可没法直接表达小数,它用的是我们小学生还没接触到小数时用的商和余数的概念,如13/5,其商是2,余数是3。
除了以后,商放在A中,余数放在B 中。
CY 和 OV 都是 0。
如果在做除法前 B 中的值是 00H,也就是除数为 0,那么 0V=1。
加1指令
INC A
INC Rn
INC direct
推荐使用慧净51实验板。
推荐51学习网淘宝网:/
51 单片机汇编语言教程-慧净电子会员收集整理(全部 28 课)
INC @Ri
INC DPTR
用途很简单,就是将后面目标中的值加1。
例:(A)=12H,(R0)=33H,(21H)=32H,(34H)
=22H,DPTR=1234H。
执行下面的指令:
INC A (A)=13H
INC R2 (R0)=34H
INC 21H (21H)=33H
INC @R0 (34H)=23H
INC DPTR ( DPTR)=1235H
后结果如上所示。
说明:从结果上看INC A和ADD A,#1差不多,但INC A是单字节,单周期指令,而ADD#1 则是双字节,双周期指令,而且 INC A 不会影响 PSW 位,如(A)=0FFH,INC A 后(A) =00H,而 CY 依然保持不变。
如果是 ADD A ,#1,则(A)=00H,而 CY 一定是 1。
因此
加1 指令并不适合做加法,事实上它主要是用来做计数、地址增加等用途。
另外,加法类指令都是以A为核心的��其中一个数必须放在A中,而运算结果也必须放在A中,而
加1 类指令的对象则广泛得多,能是寄存器、内存地址、间址寻址的地址等等。
减1 指令
减1 指令
DEC A
DEC RN
DEC direct
DEC @Ri
与加1指令类似,就不多说
了。
综合练习:
MOV A,#12H
MOV R0,#24H
MOV 21H,#56H
ADD A,#12H
MOV DPTR,#4316H
ADD A,DPH
ADD A,R0
CLR C
SUBB A,DPL
SUBB A,#25H
INC A
SETB C
ADDC A,21H
INC R0
SUBB A,R0
MOV 24H,#16H
CLR C
ADD A,@R0
先写出每步运行结果,然后将以上题目建入,并在软件仿真中运行,观察寄存器及有关单元的内容的变化,是否与自已的预想结果相同。
推荐使用慧净51实验板。
推荐51学习网淘宝网:/
51 单片机汇编语言教程-慧净电子会员收集整理(全部 28 课)
重要说明
需要51学习板的朋友请QQ:3981150881、本教程是《慧净电子》网上收整理,版权归互联网,全部免费共享,为了支持慧净免费助学加上了慧净51实验板的链接。
2、教程中的实验不保证 100%正确,当你能认真学习时你会有能力修正实验中的小错误。
3、请不要再问如何学单片机,如何写程序,为什么这样写程序的问题,慧净不提供源码分析,如果你有心学单片机的,全部由你自己自学完成,推荐你用慧净电子的HJ-C52实验板配套学习。
祝你学业有成,以后多点共享各种单片机资料,使中国电子技术更强
推荐使用慧净51实验板。
推荐51学习网淘宝网:/
推荐你使用 HJ-C52 学习板,想学单片机详细了解一下
推荐使用慧净51实验板。
推荐51学习网淘宝网:/
推荐使用慧净51实验板。
推荐51学习网淘宝网:/
HJ-C52 功能模块
推荐使用慧净51实验板。
推荐51学习网淘宝网:/
推荐使用慧净51实验板。
推荐51学习网淘宝网:/
慧净电子
交流QQ:398115088
慧净单片机学习网址:
淘宝网址:/
2012 年 11 月 11 日
推荐使用慧净51实验板。
推荐51学习网淘宝网:/。