8051单片机指令系统
- 格式:pptx
- 大小:4.20 MB
- 文档页数:109
80c51汇编语言指令80C51汇编语言是一种常用的低级程序设计语言,广泛应用于嵌入式系统中。
它是基于Intel 8051系列单片机的指令集架构,具有高效、灵活、可靠的特点。
本文将介绍80C51汇编语言的一些常用指令。
一、MOV指令MOV指令是80C51汇编语言中最基本、最常用的指令之一,用于将数据从一个寄存器或内存位置复制到另一个寄存器或内存位置。
例如,MOV A, #25H表示将立即数25H复制到A寄存器中。
二、ADD指令ADD指令用于执行两个操作数的相加运算,并将结果存储在目标操作数中。
例如,ADD A, R0表示将A寄存器和R0寄存器中的数据相加,并将结果存储在A寄存器中。
三、SUBB指令SUBB指令用于执行两个操作数的减法运算,并将结果存储在目标操作数中。
与ADD指令不同的是,SUBB指令会考虑进位位的值。
例如,SUBB A, R1表示将A寄存器中的数据减去R1寄存器中的数据,并将结果存储在A寄存器中。
四、MUL指令MUL指令用于执行两个操作数的乘法运算,并将结果存储在累加器A和可选的乘法寄存器B中。
例如,MUL AB表示将累加器A和B 中的数据相乘,并将结果存储在A和B中。
五、DIV指令DIV指令用于执行两个操作数的除法运算,并将结果存储在累加器A和可选的余数寄存器B中。
例如,DIV AB表示将累加器A和B 中的数据相除,并将商存储在A中,余数存储在B中。
六、JC、JNC指令JC指令用于在条件跳转时执行跳转操作,如果进位标志位(C)为1,则执行跳转。
JNC指令则相反,只有当进位标志位为0时才执行跳转。
七、JZ、JNZ指令JZ指令用于在条件跳转时执行跳转操作,如果零标志位(Z)为1,则执行跳转。
JNZ指令则相反,只有当零标志位为0时才执行跳转。
八、CJNE指令CJNE指令用于在条件跳转时执行跳转操作,它比较两个操作数的值,并根据比较结果来确定是否执行跳转。
如果两个操作数相等,则不执行跳转;如果不相等,则执行跳转。
80C51单片机指令汇总程序应用举例例1:MOV A, #60H将立即数60H(源操作数)送入累加器A(目的操作数)中;这是一条双字节指令,机器码为“74H 60H”,源操作数的寻址方式为立即寻址。
例2:MOV DPTR, #1808H将16位立即数1808H送入数据指针DPTR中;这是一条三字节指令,机器码是“90H 18H 08H”。
源操作数的寻址方式也使用立即寻址。
例3:MOV A, 40H将片内RAM40H单元中的内容送入累加器A;源操作数为直接寻址,40H为直接地址。
这是一条双字节指令,机器码是“E5H 40H”。
例4:MOV A, 0F0HMOV A, B以上两条指令功能完全相同,都是将寄存器B的内容送到累加器A中,前一条指令中第二个操作数采用B寄存器的单元地址表示;后一条指令中是直接用B寄存器的名称来表示。
但汇编后的机器码是完全一样的,由两个字节组成:“E5H F0H”。
例5:INC R2将当前工作寄存器R2的内容加1;这是一条单字节指令,机器码是“0AH”,指令中的操作数使用寄存器寻址方式。
该指令的机器码表示为0000 1rrr,其中的rrr与工作寄存器的编号有关,如本例中用到了R2,则rrr=010,指令执行时,会根据当前PSW寄存器中RS1、RS0的状态确定当前工作寄存器区,同时再根据机器码中rrr的值,确定所要访问的是哪一个工作寄存器,最后找到这个工作寄存器所在单元,将其中的内容加1。
例6:MOV A, @R0 ; A←((R0))该指令为单字节指令,机器码为“E6H”,指令中源操作数为间接寻址。
假设R0中的内容是3AH,而3AH单元的内容为37H,则指令的功能是,以R0寄存器的内容3AH为单元地址,把该单元中的内容37H送累加器A。
例7:设(32H)=10H,执行指令:MOV R0, #32HMOV A, @R0执行结果是:(R0)=32H,(A)=10H,(32H)=10H。
8051单片机指令8051单片机是一种经典的微控制器,使用广泛,特别适用于嵌入式系统开发。
在实际的编程过程中,了解并掌握8051单片机的指令集是非常重要的。
本文将介绍一些常用的8051单片机指令,帮助读者更好地理解和应用这些指令。
一、MOV指令MOV指令是8051单片机中最常用的指令之一,用于将数据从一个寄存器移动到另一个寄存器。
例如,MOV A, B表示将B寄存器的值移动到A寄存器中。
这个指令非常简单直观,容易理解和使用。
二、ADD指令ADD指令用于将两个数相加,并将结果存储到累加器。
例如,ADD A, B表示将A和B寄存器中的值相加,并将结果存储到A寄存器中。
这个指令非常有用,可以实现简单的数学运算。
三、SUB指令SUB指令用于计算两个数的差值,并将结果存储到累加器。
例如,SUB A, B表示将B寄存器的值从A寄存器的值中减去,并将结果存储到A寄存器中。
这个指令也非常常用,可以实现简单的减法运算。
四、MUL指令MUL指令用于计算两个数的乘积,并将结果存储到累加器和扩展寄存器中。
例如,MUL AB表示将A和B寄存器中的值相乘,并将低8位结果存储到累加器A中,将高8位结果存储到扩展寄存器B中。
这个指令非常有用,可以实现简单的乘法运算。
五、DIV指令DIV指令用于计算两个数的商和余数,并将结果存储到累加器和余数寄存器中。
例如,DIV AB表示将A和B寄存器中的值相除,并将商存储到累加器A中,余数存储到余数寄存器B中。
这个指令非常有用,可以实现简单的除法运算。
六、JMP指令JMP指令用于无条件跳转到指定的地址。
例如,JMP 2000H表示程序跳转到2000H地址处执行。
这个指令非常常用,可以实现程序的控制流跳转。
七、JC指令JC指令用于在进位标志位(Carry Flag)为1时跳转到指定的地址。
例如,JC 3000H表示当进位标志位为1时,程序跳转到3000H地址处执行。
这个指令非常有用,可以实现条件判断和分支跳转。