8051指令集和汇编语言程序设计

发布者:行者无疆1978最新更新时间:2019-01-26 来源: eefocus关键字:指令集  汇编语言  程序设计 手机看文章 扫描二维码
随时随地手机看文章

8051单片机有255条指令。基本上可以分为下面几大类。下面给出各个类别的速记。


1.数据转移类


MOV(Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;(没有MOV Rn,Rn这样的寻址方式)

MOVC(Move Code)读取程序存储器数据表格的数据传送;(只有两条:MOVC A,@A+DPTR和MOVC A,@A+PC)

MOVX (Move External RAM)对外部RAM的数据传送;

XCH (Exchange) 字节交换;

XCHD (Exchange low-order Digit) 低半字节交换;

PUSH (Push onto Stack) 入栈;

POP (Pop from Stack) 出栈; 


2.算数运算类


ADD(Addition) 加法;

ADDC(Add with Carry) 带进位加法;

SUBB(Subtract with Borrow) 带借位减法;

DA(Decimal Adjust) 进行BCD压缩码加法运算后,做十进制调整;

INC(Increment) 自增;(有INC DPTR这条指令)

DEC(Decrement) 自减;(没有DEC DPTR这条指令)

MUL(Multiplication、Multiply) 乘法;(积的高8位放入B中,低8位放入A中)

DIV(Division、Divide) 除法;     (商放在A中,余数放在B中)


3.逻辑运算类


ANL(AND Logic) 按位与

ORL(OR Logic) 按位或;

XRL(Exclusive-OR Logic) 按位异或;

CLR(Clear) 清零;

CPL(Complement) 取反;


下面这5条指令的操作数只能是A。


RL A(Rotate left) 循环左移;

RLC A(Rotate Left throught the Carry flag) 带进位循环左移;

RR A(Rotate Right) 循环右移;

RRC A(Rotate Right throught the Carry flag) 带进位循环右移;

SWAP A(Swap) 低4位与高4位交换;


4.控制转移类


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则转移;


(INTEL他妈的为什么不把字节指令和位指令做成一致的规律)


JZ (Jump if Zero)A的结果为0则转移;

JNZ (Jump if Not Zero)A结果不为0则转移;

JC (Jump if the Carry flag is set)C为1则转移;

JNC (Jump if Not Carry)C为0则转移;

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) 空操作;


5.位操作指令


CLR (Clear)位清零;

SETB(Set Bit) 置位1 


汇编语言是由指令和伪指令一起构成的。下面给出常用的伪指令


8种常用伪指令


1.ORG  16位地址;

此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址.

2.[标号:] DB 字节数据项表;

将项表中的字节数据存放到从标号开始的连续字节单元中。例如:SEG: DB 88H,100,“7”,“C”

3.[标号:]DW   双字节数据项表;

定义16位地址表,16地址按低位地址存低位字节,高位地址存高位字节。

例如:TAB: DW 1234H,7BH

4.名字 EQU 表达式 或名字=表达式;

用与给一个表达式赋值或给字符串起名字。之后名字可用做程序地址,数据地址或立即数地址使用。名字必须是一字母开头的字母数字串。

例如:COUNT=10 或 SPACE EQU 10H5.名字 DATA 直接字节地址;

给8位内部RAM单元起个名字,名字必须是一字母开头的字母数字串。同一单元可起多个名字。

例如:ERROR DATA 80H

6.名字 XDATA 直接字节地址;

给8位外部RAM起个名字,名字规定同DATA伪指令。

例如:IO_PORT XDATA 0CF04H

7.名字 BIT 位指令;

给一可位寻址的位单元起个名字,规定同DATA伪指令。


例如:SWT BIT 30H

8.END;

指出源程序到此结束,汇编对其后的程序语句不予理睬。源程序只在主程序最后使用一个END。

关键字:指令集  汇编语言  程序设计 引用地址:8051指令集和汇编语言程序设计

上一篇:51单片机使用定时器中断模拟PWM控制端口电压
下一篇:51单片机9600波特率改115200波特率

推荐阅读最新更新时间:2024-03-16 16:23

双向访客计数器电路图 使用8051微控制器的双向访客计数器电路设计
本文介绍了使用 8051 微控制器的双向访客计数器的设计和工作。主要目的是设计一个系统,其中进入或离开房间的人数被跟踪并显示在屏幕上。 当一个人进入房间时,计数会增加,而当一个人离开房间时,计数会减少。红外感应机制用于感应访客的存在,整个计数操作由微控制器完成。 但是,在了解该电路之前,请先了解 如何将 16 x 2 LCD 显示器连接到 8051 微控制器 ,因为我们将在该项目中使用此概念。 构建和输出视频 双向访客计数器电路原理 双向访客计数器电路图 电路元件 采用8051单片机的双向访客计数器电路设计 如何操作双向访客计数器电路? 下载代码 双向访客计数器电路的应用 该电路的局限性 双向访客计
[单片机]
双向访客计数器电路图 使用<font color='red'>8051</font>微控制器的双向访客计数器电路设计
C8051与SRAM的高速接口
    摘要: C8051是美国Cygnal公司生产的、与标准51兼容的高速单片机,速度高达25 MIPS,但它扩展外部SRAM的方式与标准51单片机不同。单片机访问外部存储器的速度直接影响系统的性能。本文介绍两种提高C8051访问外部存储器速度的接口方法,其速度均超过现有文献所给出的接口方法。     关键词: 单片机 SRAM C8051 接口方法 C8051系列单片机没有与标准的51单片机那样的数据总线(RD、WR、ALE)等,只能采用通用I/O口模拟总线方式访问外部存储器。因此,C8051访问一次外部存储器需要几十条指令。即便这样,由于C8051的绝大多数指令的执行只需一个机器(振荡)周期,在同
[应用]
基于C8051F040的程控电源的设计
1 引言   在各种电子电路实验中,稳压电源是一种必不可少的仪器,目前实验所用的电源大多是只有固定电压输出(例如常用的有:±5V、±12V或±15V),其缺点是输出电压不可人为的改变,输出精度和稳定性都不高。   随着科学技术飞速发展,对电源可靠性、输出精度和稳定性要求越来越高,利用D/A转换器的高分辨率和单片机自动检测技术设计的程控电源就显示出其优越性。程控电源既能方便输入和选择预设电压值又具有较高精度和稳定性,而且能实现对电源的可编程监控,给电路实验带来极大的方便,提高了工作效率。 2 C8051F040单片机   随着微电子技术的飞速发展,CPU已经变成低成本器件。在可能的情况下,各种机电设备已经或者正在嵌入CPU构
[单片机]
基于C<font color='red'>8051</font>F040的程控电源的设计
基于C8051F130的信号源发生器设计
  引言   信号源产生电路可以由RC 震荡电路、LC 震荡电路以及由555 定时器构成的震荡电路制成,更多的则是用专门的函数信号发生器IC 产生,但它们的功能较少, 精度不高, 频率上限只有300 kHz, 无法产生更高频率的信号, 另外调节方式也不够灵活, 频率和占空比不能独立调节, 二者互相影响。也有采用专门DDS 芯片的信号发生器, 但电路结构复杂, 成本较高 。而专门针对极低频率的信号源其设计频率范围又较窄 , 应用范围小。为此, 本文研究并设计出了一种基于单片机C8051F130 和MAX038 的信号源发生器, 能在15 MHz 内产生三角波、正弦波、方波, 精度高、失真度小、能有效弥补上述设计的不足, 满足大部分
[单片机]
基于C<font color='red'>8051</font>F130的信号源发生器设计
基于C8051F300单片机的CCD驱动电路设计方案
1 常用的CCD驱动时序产生方法 CCD厂家众多,型号各异,其驱动时序的产生方法也多种多样,一般有以下4种: (1)数字电路驱动方法 这种方法是利用数字门电路及时序电路直接构建驱动时序电路,其核心是一个时钟发生器和几路时钟分频器,各分频器对同一时钟进行分频以产生所需的各路脉冲。该方法的特点是可以获得稳定的高速驱动脉冲,但逻辑设计和调试比较复杂,所用集成芯片较多,无法在线调整驱动频率。 (2)EPROM驱动方法 这种驱动电路一般在EPROM中事先存放所有的CCD时序信号数据,并由计数电路产生EPROM的地址使之输出相应的驱动时序。该方法结构相对简单、运行可靠,但仍需地址产生硬件电路,所需EPR0M容量较大,同样也无法在 线调整驱动频
[单片机]
基于C<font color='red'>8051</font>F300单片机的CCD驱动电路设计方案
PIC单片机程序设计解析
PIC单片机采用精简指令集,例如对于PIC16F716单片机,只有35条单字节指令。要用这么少的指令实现复杂的控制或计算,显然要在程序设计上多做文章,以下就程序设计需要注意的问题谈一些看法。 美国微芯公司开发的CMOS工艺PIC系列单片机,特别是采用内置第二代Flash存储器的微控制器在快速应用方面具有独到之处。PIC单片机系列内大都包含运算器、存储器、A/D、PWM、输入和输出I/O、通信等常用接口。自由灵活的定义功能可以适应不同的控制要求。 一、区分指令的大小写 编写PIC单片机的源程序,除了源程序的开始处需要严格的列表指令外,还须注意源程序中字母符号的大小写规则,否则在PC机上汇编程序时不会成功。在源程序中都会
[单片机]
以C8051F020单片机为控制核心的一键多义按键管理程序的原理
设计采用高性能单片机C8051F020为控制芯片,监控示波器面板上40个按键、3个编码开关及4个电位器的状态。分别介绍了键盘、编码开关和电位器的工作原理,以及其与单片机连接的硬件电路及软件编程的实现。按键部分采用的键盘程序设计方法,给出了键码匹配子程序流程图。 监控程序负责系统中全部硬件和软件资源的分配、调度工作,它提供用户接口,使用户获得友好的工作环境,是系统设计中一个重要组成部分。 1C8051F020单片机概述 伴随着电子技术快速的发展,越来越多的人加入电子开发的大军。在学习电子技术和研发项目的过程中,避免不了要使用一些仪器,例如万用表、示波器等等,然而对于一些非专业的爱好者,拥有一台数字示波器是比较“奢侈”的。本设
[单片机]
以C<font color='red'>8051</font>F020单片机为控制核心的一键多义按键管理程序的原理
理清单片机中的各种周期
单片机 时钟周期 时钟周期: 时钟周期也叫振荡周期或晶振周期,即晶振的单位时间发出的脉冲数,一般有外部的振晶产生,比如12MHZ=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,也就是1/12微秒。通常也叫做系统时钟周期。是计算机中最基本的、最小的时间单位。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期: 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,
[单片机]
理清单片机中的各种周期
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved