51单片机汇编指令集
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单片机堆栈操作指令的用法

51单片机堆栈操作指令的用法51单片机是一种非常常用的单片机芯片,其指令集非常丰富,其中包含了很多堆栈操作指令。
堆栈操作指令是用来进行数据的入栈和出栈操作的指令,通过堆栈操作指令,我们可以方便地保存和恢复程序执行中的临时数据,提高代码的灵活性和效率。
本文将详细介绍51单片机堆栈操作指令的用法,帮助读者更好地理解和运用这些指令。
一、堆栈简介堆栈(Stack)是一种特殊的数据结构,具有后进先出(LIFO)的特点。
在51单片机的内部RAM中,有一段专门用来存放堆栈的空间,这段空间的大小为128字节(地址为0x07Fh至0x080h)。
在程序执行过程中,我们可以通过堆栈操作指令将数据入栈或者出栈,进栈是将数据放入堆栈,出栈是将数据从堆栈中取出。
二、堆栈操作指令51单片机的指令集中包含了以下几条堆栈操作指令:1. PUSH 指令PUSH指令用于将8位数据入栈,将要入栈的数据放入寄存器A中,通过PUSH 指令可以将A的数据压入堆栈。
PUSH指令的实际操作是将A的数据先放入栈顶指针(SP)所指向的内存单元中,然后将SP的值减1,即栈顶指针向下移动一个位置。
2. POP 指令POP指令用于将数据出栈,即从堆栈中取出一个8位数据,并放入寄存器A中。
POP指令的实际操作是将栈顶指针向上移动一个位置,然后将栈顶指针所指向的内存单元中的数据取出,并放入A中。
3. XCH指令XCH指令用于交换A寄存器的数据和栈顶指针所指向的内存单元的数据。
具体操作是将栈顶指针所指向的内存单元中的数据取出,并放入A中,然后将A中的数据放回栈顶指针所指向的内存单元中。
4. LCALL指令LCALL指令是一个特殊的调用指令,用于将下一条指令的地址入栈,并转移到指定地址处执行。
具体操作是将下一条指令的地址(即当前指令的地址加3)入栈,然后将指定地址的值赋给程序计数器(PC)。
5. RET指令RET指令用于从子程序返回,从堆栈中取出地址,并赋给程序计数器(PC),从而实现返回到调用该子程序的地方继续执行。
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单片机编码

51单片机编码单片机编码技术是现代电子信息技术中的重要组成部分。
作为微控制器的核心,单片机编码通过将输入的数据信息转换为特定的编码方式,实现各种功能和应用。
本文将从基本概念、编码原理和应用实例等方面,详细介绍51单片机编码相关内容。
1. 51单片机编码的基本概念51单片机编码是指使用8051系列单片机进行程序设计和编码的过程。
它采用汇编语言或高级语言编写程序代码,并将其转化为机器码,通过单片机的指令集执行相应的操作。
由于其成熟的硬件平台和丰富的软件资源,51单片机编码广泛应用于各种嵌入式系统、控制系统等领域。
2. 51单片机编码的原理51单片机编码的原理主要包括指令集、寄存器、数据存储器、输入输出端口等组成部分。
指令集是单片机内部存储的一组机器指令,通过不同的指令实现对数据的处理和控制。
寄存器用于存储临时数据和程序状态等信息,提供给CPU进行运算和控制。
数据存储器则用于存储程序代码和数据,包括内部RAM和外部ROM等。
输入输出端口是单片机与外部设备进行交互的接口,通过读取输入端口的状态和向输出端口写入数据,实现与外部环境的通信。
3. 51单片机编码的应用实例3.1 系统控制应用51单片机编码广泛应用于各种系统控制应用中,如智能家居、工业自动化、交通信号控制等。
通过编写相应的控制程序代码,将输入的传感器信号处理后,控制相关的执行机构进行动作。
例如,通过读取温度传感器的数据,控制空调的开关和温度调节,实现智能环境控制。
3.2 嵌入式系统应用嵌入式系统是指将计算能力嵌入到各种设备和系统中,实现特定功能的计算系统。
51单片机编码在嵌入式系统中有广泛的应用,如智能手机、电视、汽车电子等。
通过编写嵌入式软件程序,控制和管理功耗、资源调度、外设驱动等,实现嵌入式系统的各项功能。
3.3 通信系统应用51单片机编码在通信系统中也有着重要的应用。
例如,通过编写相应的通信协议和驱动程序,实现与外部设备的数据交换和通信。
单片机伪指令和指令详解

ASM-51汇编伪指令一、伪指令分类1.符号定义SEGMENT, EQU, SET, DATA, IDATA, XDATA, BIT, CODE2.存储器初始化/保留DS, DB, DW, DBIT3.程序链接PUBILC, EXTRN, NAME4.汇编程序状态控制ORG, END5.选择段的伪指令RSEG, CSEG, DSEG, XSEG, ISEG, BSEG, USING二、伪指令具体说明1.符号定义伪指令1)SEGMENT伪指令格式:段名SEGMENT 段类型说明:SEGMENT 伪指令说明一个段。
段就是一块程序代码或数据存储器。
允许使用的段类型为:●CODE代码空间●DATA 可以直接寻址的内部数据空间●XDATA外部数据空间●IDATA可以间接寻址的整个内部数据空间●BIT位空间例子:(段符号用于表达式时,代表被连接段的基地址)STACK SEGMENT IDATARSEG STACKDS 10H ;保留16字节做堆栈MOV SP , #STACK-1 ;堆栈指针初始化2)EQU伪指令格式:符号名 EQU 表达式符号名 EQU 特殊汇编符号说明:EQU表示把一个数值或特殊汇编符号赋予规定的名字。
一个表达式赋予一个符号,必须是不带向前访问的表达式。
例子:N27 EQU 27;ACCUM EQU A ;定义ACCUM代替特殊汇编符号A(累加器)HERE EQU $; HERE为当前位置计数器的值3)SET伪指令格式:符号名 SET 表达式符号名 SET 特殊汇编符号说明:SET类似EQU,区别在于可以用另一个SET伪指令在以后对定义过的符号重新定义。
例子:COUNT SET 0COUNT SET COUNT+14)BIT伪指令格式:符号名 BIT 位地址说明: BIT伪指令把一个地址赋予规定的符号名。
该符号类型取段类型BIT.例子:RSEG DATA_SEG;CONTROL: DS 1ALATM BIT CONTROL.0;OPEN_BOARD BIT ALATM+1 ;下一位RESET_BOARD BIT 60H ;下一个绝对的位5)DATA伪指令格式:符号名 DATA 表达式说明:DATA伪指令把片内的数据地址赋予所规定的符号名。
PIC汇编语言指令

PIC 8位单片机共有三个级别,有相对应的指令集。
基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。
其指令向下兼容。
一、PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。
1标号与MCS-51系列单片机功能相同,标号代表指令的符号地址。
在程序汇编时,已赋以指令存储器地址的具体数值。
汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。
标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。
在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。
指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。
书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。
再有标号不能用操作码助记符和寄存器的代号表示。
标号也可以单独占一行。
2操作码助记符该字段是指令的必选项。
该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。
3操作数由操作数的数据值或以符号表示的数据或地址值组成。
若操作数有两个,则两个操作数之间用逗号(,)分开。
当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。
还可以是被定义过的标号、字符串和ASCⅡ码等。
具体表示时,规定在二进制数前冠以字母“B”,例如B;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。
51单片机程序计数器PC和堆栈指针SP如何指挥ROM和RAM工作
编程模型Keil中的执行情况编程模型寄存器组8位数据寄存器组16位地址寄存器组程序计数器PC堆栈指针SP状态标记寄存器组指令集汇编指令集C51指令集编程模型16位地址寄存器组片内ROM 8位数据寄存器组片内RAM地址内容(指令)0x0FFF xx0x0FFE xx (xx)0x0101xx0x0100xx (xx)0x0002xx0x0001xx0x0000 xx 地址内容(数据)0x7F xx0xFE xx (xx)0x61xx0x60xx (xx)0x02xx0x01xx0x00 xx只考虑片内时SP、PCSP PCSP:堆栈指针,51单片机堆栈是向上生长型,即栈底是低位地址。
SP 指向栈顶。
存放有顺序要求的数据。
用途:(1)用来存放压入堆栈的数据。
(2)存放函数调用是断口地址。
(3)中断断口地址及保存数据。
51单片机复位后的SP默认地址:07H,为了避免和位寻址区重合,一般设置50H或者60H。
PC:程序计数器,51单片机内不可访问,独立结构的16位地址寄存器。
(1)自动+1,CPU从ROM中每读一个字节,自动执行PC+1→PC。
(2)执行转移指令,PC会根据指令要求修改下一次读ROM的地址(3)执行子程序调用或中断时,CPU自动将下一条执行的PC值压入堆栈,将子程序或中断入口地址装入PC,返回时,恢复原有压入堆栈的PC值,继续执行原程序。
举一个例子(汇编程序)ORG0000H;规定下一条指令的起始地址为0000HJMP START;跳转指令,程序跳转到START处执行ORG0400H;规定下一条指令DELY 的起始地址为0400HDELY: ;子函数DELYNOP;NOP指令,空操作,什么都不做,消耗该指令周期的时间RET;返回指令,弹出堆栈中断口地址,DELY调用返回指令ORG0100H;规定下一条指令START 的起始地址为0100HSTART: ;函数STARTMOV SP,#60H ;设置堆栈指针的值,即设置单片机栈底的地址为60HMOV DPTR,#1234H;将立即数1234H赋值给DPTR,其中低8位给DPTR的DPL(34H),;高8位给DPTR的DPH(12H)PUSH DPH;将DPH中数据12H压入堆栈PUSH DPL;将DPL中数据34H压入堆栈CALL DELY;调用子函数DELYPOP DPH;弹出堆栈中栈顶数据到DPH中POP DPL;弹出堆栈中栈顶数据到DPL中LJMP$;原地等待END;结束标志KEIL中的执行情况PC=0x0000 ;即0000HSP=0x07 ;即07H黄色箭头表示PC指针指向PC=0x0100 ;即0100H SP=0x07 ;即07HPC指针指向下一条指令PC=0x0103 ;即0103H SP=0x60 ;即60HPC指针指向下一条指令PC=0x0106 ;即0106H SP=0x60 ;即60HPC指针指向下一条指令PC=0x0108 ;即0108HSP=0x61 ;即61H,且地址为61H中的数据为12H PC指针指向下一条指令PC=0x010A ;即010AHSP=0x62 ;即62H,且地址为61H中的数据为12H,62H中的数据为34HPC指针指向下一条指令PC=0x0400 ;即0400HSP=0x64 ;即62H,且地址为61H中的数据为12H,62H中的数据为34H,63H中的数据为0CH,64H中的数据为01H。
《单片机》教学课件51单片机的指令系统
MOV Rn ,direct
;(direct)→Rn ,n =0~7
MOV Rn ,#data
;#data→Rn ,n =0~7
把源操作数送入当前寄存器区的R0~R7中的某一寄存器。
3.以直接地址direct为目的操作数的指令
MOV direct,A
; (A)→direct
MOV direct,Rn
寻址空间内快速地找到指定的地址单元。 下面介绍指令系统7种寻址方式。
5
1.寄存器寻址方式
指令中的操作数为某一寄存器的内容。
例如:MOV A,Rn
;(Rn)→A,n =0~7
把Rn中的源操作数送入到累加器A中。由于指令指定了从寄存 器Rn中取得源操作数,所以称为寄存器寻址方式。
本寻址方式的寻址范围:
4.以寄存器间接地址为目的操作数的指令
MOV @Ri,A
;(A)→((Ri)), i=0,1
MOV @Ri,direct ;(direct)→((Ri)),i=0,1
MOV @Ri,#data ;#data→((Ri)), i=0,1
功能是把源操作数内容送入R0或R1指定的存储单元中。
5.16位数传送指令
内部RAM的00H~7FH共128个单元。 6.堆栈操作指令 内部RAM中设定一个后进先出(LIFO,Last In First Out)
的区域,称为堆栈。在特殊功能寄存器中有一个堆栈指针 SP,指示堆栈的栈顶位置。堆栈操作有进栈和出栈两种, 因此,在指令系统中相应有两条堆栈操作指令。
22
(1)进栈指令 PUSH direct
(1)4组通用工作寄存区共32个工作寄存器。但只对当前工 作寄存器区的8个工作寄存器寻址,指令中的寄存器名称只 能是R0~R7。
51单片机按键等控制代码
8 位立即数带进位加到累加器 累加器带借位减去寄存器内容 累加器带借位减去直接地址单元 累加器带借位减去间接 RAM 内容 累加器带借位减去 8 位立即数 累加器加 1 寄存器加 1 直接地址单元内容加 1 间接 RAM 内容加 1 DPTR 加 1 累加器减 1 寄存器减 1 直接地址单元内容减 1 间接 RAM 内容减 1 A 乘以 B A 除以 B 累加器进行十进制转换
3、 逻辑操作类指令 助记符 ANL A,Rn ANL A,direct ANL A,@Ri ANL A,#data8 ANL direct,A ANL direct,#data8 ORL A,Rn ORL A,direct ORL A,@Ri ORL A,#data8 ORL direct,A ORL direct,#data8 XRL A,Rn XRL A,direct XRL A,@Ri XRL A,#data8 XRL direct,A XRL direct,#data8 CLR A CPL A RL A RLC A RR A
进位位和直接地址位相“与”
ANL C,/bit
进位位和直接地址位的反码相“与”
ORL C,bit
进位位和直接地址位相“或”
ORL C,/bit
进位位和直接地址位的反码相“或”
MOV C,bit
直接地址位送入进位位
MOV bit,C
进位位送入直接地址位
字节数 1 2 1 2 1 2 2 2 2 2 2 2
功能说明 寄存器内容加到累加器 直接地址单元内容加到累加器 间接 RAM 内容加到累加器 8 位立即数加到累加器 寄存器内容带进位加到累加器 直接地址单元内容带进位加到累加器 间接 RAM 内容带进位加到累加器
字节数 1 2 1 2 1 2 1
51单片机简介
51单片机简介简介:51单片机,也称为8051单片机,是一种广泛应用于嵌入式系统开发的微控制器。
它由Intel公司在20世纪80年代初开发而成,很快成为了业界的标准。
51单片机以其高性能、易于编程和低功耗等特性,被广泛应用于家电、通信、汽车等领域。
历史:20世纪80年代,Intel公司推出了首款51单片机,这一时期正是微处理器技术蓬勃发展的阶段。
由于其性能强大且易于使用,51单片机很快占据了市场,并成为了许多嵌入式系统开发者的首选。
之后,51单片机通过不断的更新换代,逐渐演化为现今应用广泛的8051系列。
特点:1. 高性能:51单片机采用了CISC(复杂指令集计算机)架构,具有高效的指令集和丰富的外设接口,能够满足各种需要。
2. 易于编程:51单片机支持多种编程语言,如汇编语言和C语言。
开发者可以根据需求选择适合自己的编程语言,降低开发难度。
3. 低功耗:由于嵌入式系统通常需要长时间运行,功耗成为一个重要的考虑因素。
51单片机以其低功耗的特点,在许多低功耗应用场景中得到了广泛应用。
4. 丰富的外设:51单片机内置了大量的外设接口,如通用输入输出口、定时器、串口等,可轻松与其他设备进行通信和交互。
5. 可扩展性强:51单片机支持外部扩展,通过扩展模块可以实现更多的功能和接口,满足不同应用需求。
应用领域:1. 家电:51单片机在家电领域广泛应用,如空调、洗衣机、电视机等。
通过对温度、湿度等参数的检测和控制,提高了家电的智能化水平。
2. 通信:51单片机在通信领域被广泛应用于电话、手机等设备。
它可以实现通信协议栈的处理、信号处理和数据传输等功能。
3. 汽车:51单片机在汽车电子控制系统中扮演着重要角色。
它可以控制发动机的点火、燃油喷射等关键操作,提高汽车的性能和燃油利用率。
4. 工业控制:51单片机可用于工业自动化系统中的控制和监测。
通过与传感器和执行器的联动,实现对生产过程的精确控制,提高生产效率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
带进位循环左移; 带进位循环右移;
51 单片机汇编指令集 一、数据传送类指令( 7 种助记符) MOV(英文为Move :对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行 传送; MOVQMove 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 (Decreme nt 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 。
8 种常用伪指令 1. ORG 16 位地址 ; 此指令用在原程序或数据块的开始, 指明此语句后面目标程序或数据块存放 的起始地址。 2. [标号:]DB 字节数据项表; 将项表中的字节数据存放到从标号开始的连续字节单元中。例如: SEG: DB 88H,100,“7”,“C” 3. [标号:]DW 双字节数据项表; 定义 16位地址表, 16 地址按低位地址存低位字节,高位地址存高位字节。 例如: TAB: DW 1234H,7BH 4. 名字EQU表达式 或名字二表达式; 用与给一个表达式赋值或给字符串起名字。 之后名字可用做程序地址, 数据 地址或立即数地址使用。名字必须是一字母开头的字母数字串。 例如:COUNT=1或 SPACE EQU 10H 5 .名字DATA直接字节地址; 给8位内部RAM单元起个名字,名字必须是一字母开头的字母数字串。 同一 单元可起多个名字。 例如: ERROR DATA 80H 6 .名字XDATA直接字节地址; 给8位外部RAM起个名字,名字规定同DATA伪指令。 例如: IO_PORT XDATA 0CF04H 7 .名字BIT位指令; 给一可位寻址的位单元起个名字,规定同 DATA伪指令。 例如: SWT BIT 30H 8.[标号:]END; 指出源程序到此结束, 汇编对其后的程序语句不予理睬。 源程序只在主程序 最后使用一个END。 指令集(111条) 助记符 说明 字节 周期 代码 1.数据传送指令(30条) MOV A,R n 寄存器送A 1 1 E8--EF MOV A,data 直接字节送A 2 1 E5 MOV A,@Ri 间接RAM送A 1 1 E6--E7 MOV A,#data 立接数送A 2 1 74 MOV Rn ,A A送奇存器 1 1 F8--FF MOV Rn ,data 直接数送奇存器 2 2 A8--AF MOV Rn, #data 立即数送寄存器 2 1 78--7F MOV data,A A送直接字节 2 1 F5 MOV data,R n 寄存器送直接字节 2 1 88—8F
MOV data,data 直接字节送直接字节 3 2 85 MOV data,@Ri 间接Rn送直接字节 2 2 86;87 MOV data,#data 立即数送直接字节 3 2 75 MOV @Ri,A A送间接Rn 1 2 F6;F7 MOV @Ri,data 直接字节送间接Rn 1 1 A6;A7 MOV @Ri,#data 立即数送间接Rn 2 2 76;77 MOV DPTR,#data16 16位常数送数据指针 3 1 90 MOV C,bit 直接位送进位位 2 1 A2 MOV bit,C 进位位送直接位 2 2 92 MOVC A,@A+DPTR A+DPTF寻址程序存贮字节送A 3 2 93 MOVC A,@A+PC A+PC寻址程序存贮字节送A 1 2 83 MOVX A,@Ri 外部数据送A (8位地址) 1 2 E2;E3 MOVX A,@DPTR 外部数据送A (16位地址) 1 2 E0
MOVX @Ri,A A送外部数据(8位地址) 1 2 F2;F3 MOVX @DPTR,A A送外部数据(16位地址) 1 2 F0 PUSH data 直接字节进栈道,SP加1 2 2 C0 POP data 直接字节出栈,SP减1 2 2 D0 XCH A,R n 奇存器与A交换 1 1 C8— CF XCH A,data 直接字节与A交换 2 1 C5 XCH A,@Ri 间接Rn与A交换 1 1 C6;C7 XCHD A,@Ri 间接Rn与A低半字节交换 1 1 D6;D7 2.逻辑运算指令(35条) ANL A,R n 寄存器与到A 1 1 58—5F ANL A,data 直接字节与到A 2 1 55 ANL A,@Ri 间接RAM与至U A 1 1 56;57 ANL A,#data 立即数与到A 2 1 54 ANL data,A A与到直接字节 2 1 52 ANL data,#data 立即数与到直接字节 3 2 53 ANL C,bit 直接位与到进位位 2 2 82 ANL C,/bit 直接位的反码与到进位位 2 2 BO ORL A,R n 寄存器或到A 1 1 48—4F
ORL A,data 直接字节或到A 2 1 45 ORL A,@Ri 间接RAM或至U A 1 1 46;47 ORL A,#data 立即数或到A 2 1 44 ORL data,A A或到直接字节 2 1 42 ORL data,#data 立即数或到直接字节 3 2 43 ORL C,bit 直接位或到进位位 2 2 72 ORL C,/bit 直接位的反码或到进位位 2 2 A0 XRL A,R n 寄存器异或到A 1 1 68—6F
XRL A,data 直接字节异或到A 2 1 65 XRL A,@Ri 间接RAM异或到A 1 1 66;67 XRL A,#data 立即数异或到A 2 1 64 XRL data,A A异或到直接字节 2 1 62
XRL data,#data 立即数异或到直接字节 3 2 63 SETB C 进位位置1 1 1 D3 SETB bit 直接位置1 2 1 D2 CLR A A清0 1 1 E4 CLR C 进位位清0 1 1 C3 CLR bit 直接位清0 2 1 C2 CPL A A求反码 1 1 F4 CPL C 进位位取反 1 1 B3 CPL bit 直接位取反 2 1 B2 RL A A循环左移一位 1 1 23 RLC A A带进位左移一位 1 1 33 RR A A右移一位 1 1 03 RRC A A带进位右移一位 1 1 13 SWAP A A半字节交换 1 1 C4 3.算术运算指令(24条) ADD A,R n 寄存器加到A 1 1 28—2F ADD A,data 直接字节加到A 2 1 25 ADD A,@Ri 间接RAM加到A 1 1 26;27 ADD A,#data 立即数加到A 2 1 24 ADDC A,R n 奇存器带进位加到A 1 1 38—3F ADDC A,data 直接字节带进位加到A 2 1 35 ADDC A,@Ri 间接RAM带进位加到A 1 1 36;37 ADDC A,#data 立即数带进位加到A 2 1 34 SUBB A,R n 从A中减去寄存器和进位 1 1 98—9F SUBB A,data 从A中减去直接字节和进位 2 1 95 SUBB A,@Ri 从A中减去间接RAM和进位 1 1 96;97 SUBB A,#data 从A中减去立即数和进位 2 1 94 INC A A加1 1 1 04 INC Rn 寄存器加1 1 1 08—0F INC data 直接字节加1 2 1 05