51单片机汇编指令集(附记忆方法)

合集下载

51单片机(宏汇编)指令集5

51单片机(宏汇编)指令集5
常量有多种表示形式:二、十、十六进制数和 字符串等
常量及其表示
数据形式 格 式 取值范围 备注
2进制 ********B
0,1
0进制 ******
0, 1,2...9
****H 0,1...E,F
0CDE3H
符应是0--9
ASCII '**' ASCII 'AD' 使用
示例
10110011B 32768 16进制 最前面一个字
LAB+3: MOV A,30H LAB USB: MOV A,30H SUBB: MOV A,30H LAB: MOV A,MEN+3 R7: MOV A,30H MOV R7,A+3
SJMP $
常量及其表示
常量,就是在汇编时已经确定的值。 在汇编 语言中,常量主要用作指令性语句中的直接操 作数 ,也可用于存储器操作的组成部分(如位移 量,或者为伪指令中的变量输初值。 )
ASM51汇编语言格式
【label:】指令助记符 【操作数1】【 ,操作数2】【,操作数3】【注 释】
1. Label: 标号,冒号结尾,表示程序入口。 字母开头,通常少于8个字符。
2. 指令助记符:也可以是伪指令,后面如果有 操作数的话必须有“空格”或“TAB-键” 将其与操作数分开
ASM51汇编语言格式
意义:主程序从地址0000开始,实际又跳转到 0030H开始的主程序。INT0发生中断时,程序从 0003H开始执行,并跳转到INT0SAV程序执行。 T0发生溢出中断时,从000BH开始执行。

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集(附记忆方法)

51 单片机汇编指令集

一、数据传送类指令( 7 种助记符)

MOV(英文为Move :对内部数据寄存器RAM 和特殊功能寄存器SFR 的数据进行 传送; MOV Q 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) 循环右移;

51单片机堆栈操作指令的用法

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中的数据放回栈顶指针所指向的内存单元中。

51单片机汇编语言指令集

51单片机汇编语言指令集

若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6 若(A) 7-4>9或 (C)=1,则(A) 7-4←(A)7-4+6 逻辑运算指令 25.ANL A,Rn 26.ANL A,direct 27.ANL A,@Ri 28.ANL A,#data 29.ANL direct,A 1 1 将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器 2 1 将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器 1 1 将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器 2 1 将累加器的值与常数做AND的逻辑判断,结果存回累加器 2 1 将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址
110.DJNZ direct,rel 3 2 将直接地址的内容减1,不等于0则跳至rel所指的相关地址 111.NOP 1 1 无动作
指令介绍
指令 算数运算指令 1.ADD A,Rn 2.ADD A,direct 3.ADD A,@Ri 4.ADD A,#data 5.ADDC A,Rn 6.ADDC A,direct 7.ADDC A,@Ri 8.ADDC A,#data 9.SUBB A,Rn 10.SUBB A,direct 11.SUBB A,@Ri 12.SUBB A,0data 13.INC A 14.INC Rn

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单片机指令集

51单片机指令集

一、数据传送类指令

MOV A,Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,@Ri 内部RAM单元送累加器 1 1 MOV @Ri ,A 累加器送内部RAM单元 1 1 MOV A ,#data 立即数送累加器 2 1 MOV A ,direct 直接寻址单元送累加器 2 1 MOV direct ,A 累加器送直接寻址单元 2 1 MOV Rn,#data 立即数送寄存器 2 1 MOV direct ,#data 立即数送直接寻址单元 3 2 MOV @Ri ,#data 立即数送内部RAM单元 2 1 MOV direct ,Rn 寄存器送直接寻址单元 2 2 MOV Rn ,direct 直接寻址单元送寄存器 2 2 MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR ,#data16 16位立即数送数据指针 3 2 MOVX A ,@Ri 外部RAM单元送累加器(8位地址) 1 2 MOVX @Ri ,A 累加器送外部RAM单元(8位地址) 1 2 MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2 MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2

51单片机条件转移指令

51单片机条件转移指令

51单片机条件转移指令

51单片机是一种广泛应用于嵌入式系统中的微控制器,具有强大的条件转移指令集,可以实现复杂的逻辑控制。本文将以51单片机条件转移指令为标题,介绍其基本概念、使用方法以及相关应用。

一、概述

条件转移指令是计算机指令中的一种重要类型,它可以根据特定条件的成立与否,决定程序的执行路径。在51单片机中,条件转移指令用于实现基于条件的分支和循环控制,是实现复杂控制逻辑的重要工具。

二、条件转移指令的基本语法

在51单片机中,条件转移指令的基本语法如下:

```

CJxx 操作数1, 操作数2, 目标地址

```

其中,CJxx是条件转移指令的助记符,表示不同的条件;操作数1和操作数2是进行比较的操作数;目标地址是程序执行的跳转地址。

三、条件转移指令的常用类型

51单片机中常用的条件转移指令包括以下几种类型:

1. 条件转移指令(CJNE):用于比较两个操作数的大小,并根据比较结果决定是否跳转到目标地址。

2. 无条件转移指令(JMP):无条件跳转到目标地址。

3. 相对跳转指令(DJNZ):用于实现循环控制,根据操作数的值决定是否跳转到目标地址,并将操作数减一。

四、条件转移指令的使用方法

使用条件转移指令需要注意以下几点:

1. 确定比较的操作数:根据具体需求,选择合适的操作数进行比较。

2. 确定目标地址:根据条件的成立与否,确定程序执行的跳转地址。

3. 编写条件转移指令代码:根据条件转移指令的语法,编写相应的汇编指令。

4. 调试和测试:在编写完条件转移指令代码后,进行调试和测试,确保程序的逻辑正确。

8051单片机汇编指令速查表

8051单片机汇编指令速查表

8051系列单片机汇编语言指令速查表

说明:

1)Ri, Rn指当前工作寄存器,i,n = 0 – 7,当前工作寄存器由程序状态字寄存器PSW的2个位RS1, RS0决定

PLC汇编语言指令集

一、数据传输指令

它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。

1. 通用数据传送指令

MOV传送字或字节.

MOVSX先符号扩展,再传送.

MOVZX先零扩展,再传送.

PUSH把字压入堆栈.

POP把字弹出堆栈.

PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.

POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.

PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.

POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.

BSW AP交换32位寄存器里字节的顺序

XCHG交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)

CMPXCHG比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )

XADD 先交换再累加.( 结果在第一个操作数里)

XLAT字节查表转换.

──BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL )

2. 输入输出端口传送指令.

IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )

OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)

51指令集

51指令集

传送指令是指令系统中最基本,使用最多的一类指令,主要用于数据的传送、保存以及交换等场合。

1.以累加器A为目的操作数的指令(4条)

这组指令的功能是把源操作数指定的内容送入累加器A中。

有寄存器、直接、寄存器间接和立即4种寻址方式。

MOV A, Rn MOV A, data

MOV A,@Rn MOV A,#data

2.以寄存器Rn为目的的操作数的指令(3条)

这组指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。

有寄存器、直接和立即3种寻址方式。

MOV Rn, A MOV Rn,data

MOV Rn,#data

3.以直接地址为目的操作数的指令(5条)

这组指令的功能是把源操作数指定的内容送到由直接地址data所指定的片内RAM中。

有寄存器、直接、寄存器间接和立即4种寻址方式。

MOV data,A MOV data,Rn

MOV data1,data2 MOV data,@Ri

MOV data,#data

4.以间接地址为目的操作数的指令(3条)

这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。

有寄存器、直接和立即3种寻址方式。

MOV @Ri,A MOV @Ri,data

MOV @Ri,#data

5.查表指令(2条)

这组指令的功能是对存放于程序存储器中的数据表格进行查找传送。使用变址寻址方式。

MOVC A,@A+DPTR MOVC A, @A+PC

6.累加器A与片外AM传送指令(4条)

这组指令的功能为累加器A与片RAM间的相互传送。由于MCS-51指令系统中没有专门的输入/输出指令,且片外扩展的I/O口与片外RAM是统一编址的,故以下4条指令也可作为输入/输出指令。使用寄存器间接寻址方式。

51单片机指令集

51单片机指令集

51单片机指令集

在嵌入式系统的开发中,51单片机是一种常用的微控制器,其指令

集对于程序设计和功能实现具有重要的意义。本文将介绍51单片机指

令集的组成结构、常用指令及其功能,以及应用示例。

一、指令集的组成结构

51单片机指令集由多条指令组成,这些指令按照不同的功能进行分

类和编码。常见的指令分类包括数据传送指令、算术逻辑指令、位操

作指令、分支指令和中断指令等。

1. 数据传送指令

数据传送指令主要用于数据在寄存器和内存之间的传输。其中包括

将数据从一个寄存器传送到另一个寄存器、将数据从内存读取到寄存

器中以及将数据从寄存器写入内存等操作。

例如,MOV指令用于将一个寄存器的值传送到另一个寄存器,如MOV A, B表示将寄存器B中的值传送到寄存器A中。

2. 算术逻辑指令

算术逻辑指令主要用于进行算术和逻辑运算。其中包括加法、减法、乘法、除法、逻辑与、逻辑或、逻辑非等操作。

例如,ADD A, B用于将寄存器A和寄存器B中的值相加,并将结

果保存在寄存器A中。

3. 位操作指令

位操作指令主要用于对寄存器或内存中的位进行操作。其中包括位与、位或、位翻转、位置1、位清零等操作。

例如,ORL A, #0x0F用于将寄存器A的低4位与0x0F进行按位或运算,结果保存在寄存器A中。

4. 分支指令

分支指令主要用于程序的跳转和循环控制。其中包括无条件跳转、条件跳转、循环指令等。

例如,JMP 2000H用于无条件跳转到地址2000H处执行指令。

5. 中断指令

中断指令主要用于处理外部中断信号,进行程序的中断与恢复。

例如,ENI指令用于允许外部中断的响应,而DISI指令用于禁止外部中断的响应。

51单片机按键等控制代码

51单片机按键等控制代码

51单片机指令集

1、数据传送类指令振荡周期 51/STC51

2、算术操作类指令

3、逻辑操作类指令

4、控制转移类指令

控制转移指令共有17条,可分为“子程序调用指令”、“返回指令”、“无条件转移指令”及“有条件转移指令”。

5、布尔变量操作类指令

伪指令

51单片机汇编指令速查表

51单片机汇编指令速查表

51单片机汇编指令集

注:

1. i =0或1,n = 0~7。间接寻址时,只能使用R0和R1;

2. MOV、MOVC及MOVX均为“复制”性质的操作,不会修改源操作数;

3. 直接寻址范围包括:内部128B RAM单元和特殊功能寄存器(如A,P0,PSW等);

4. 片内片外操作指令不一样,除MOVX指令中的@Ri对外部低256B间接寻址外,其它使用@Ri的指令均对片内128B RAM寻址;

51单片机汇编语言

51单片机汇编语言

51单片机汇编语言

51单片机汇编语言是一种基于51系列单片机的汇编语言,它是一种直接操作硬件的低级语言。在嵌入式系统开发中,经常需要使用汇编语言来编写底层驱动程序和实现特定功能。本文将介绍51单片机汇编语言的基本概念、语法结构以及常用指令集。

一、51单片机简介

51单片机是一种基于哈佛结构的8位单片机,由英特尔公司设计,并于1980年发布。它具有低功耗、高性能和易于编程的特点,广泛应用于家电、汽车电子、工控设备等领域。

二、汇编语言基础

1. 数据类型:51单片机汇编语言支持的数据类型包括位(bit)、字节(byte)、字(word)和双字(dword)。可以通过定义变量来使用这些数据类型。

2. 寄存器:51单片机包含一组通用寄存器和特殊功能寄存器。通用寄存器用于存储临时数据,特殊功能寄存器用于控制和配置硬件。常用的通用寄存器有ACC累加器、B寄存器和DPTR数据指针。

3. 指令集:51单片机汇编语言的指令集丰富多样,包括数据传送指令、算术运算指令、逻辑运算指令、跳转指令等。例如,MOV指令用于数据传送,ADD指令用于加法运算,JMP指令用于无条件跳转。

三、汇编语言示例

下面是一个简单的51单片机汇编语言程序示例,实现了一个LED 灯的闪烁效果。

```

ORG 0x0000 ; 程序起始地址

MOV P1, #0x00 ; 将0x00赋值给P1口,关闭LED灯

LOOP:

MOV P1, #0xFF ; 将0xFF赋值给P1口,打开LED灯

CALL DELAY ; 调用延时子程序

MOV P1, #0x00 ; 将0x00赋值给P1口,关闭LED灯

51单片机或命令的用法

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单片机的定时器有三种工作模式:

MCS-51指令集

MCS-51指令集

MCS-51单片机的指令集。

MCS-51系列单片机的指令系统,按功能分类可分为:数据传送、算术操作、逻辑操作、控制转移和布尔变量操作等五种。

1.数据传送类指令:

助记符功能说明字节数振荡周期MOV A,Rn寄存器内容送入累加器112 MOV A,direct直接地址单元中的数据送入累加器212 MOV A,@Ri间接RAM中的数据送入累加器112 MOV A,#data88位立即数送入累加器212 MOV Rn,A累加器内容送入寄存器112 MOV Rn,direct直接地址单元中的数据送入寄存器224 MOV Rn,#data88位立即数送入寄存器212 MOV direct,A累加器内容送入直接地址单元212 MOV direct,Rn寄存器内容送入直接地址单元224 MOV direct,direct直接地址单元中的数据送入直接地址单元324 MOV direct,@Ri间接RAM中的数据送入直接地址单元224 MOV direct,#data88位立即数送入直接地址单元324 MOV @Ri,A累加器内容送入间接RAM单元112 MOV @Ri,direct直接地址单元中的数据送入间接RAM单元224 MOV @Ri,#data88位立即数送入间接RAM单元212 MOV DPTR,#data1616位立即数地址送入地址寄存器324

MOV A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入

累加器

124

MOV A,@A+PC 以PC为基地址变址寻址单元中的数据送入累加

51单片机jnb指令

51单片机jnb指令

51单片机jnb指令

51单片机是一种常用的微型控制器,其指令集中有许多有用的指令,其中之一就是jnb指令。本文将详细介绍jnb指令的功能和使用方法。

jnb指令是51单片机中的一条跳转指令,其功能是在某个条件不满足时跳转到指定的地址执行程序。jnb指令的全称是“Jump if Not Bit”,即如果某个位(bit)不为1,则跳转到指定地址。

jnb指令的语法如下:

jnb bit, addr

其中,bit是需要判断的位,可以是一个寄存器中的某个位,也可以是某个IO口的某个引脚;addr是需要跳转到的地址,通常是一个标号。

在使用jnb指令之前,我们需要先了解一些相关的概念。在51单片机中,每个寄存器都是8位的,也就是由8个位组成。我们可以通过位操作指令来对这些位进行读取和设置。而IO口则是单片机与外部设备进行通信的接口,每个IO口又包含了8个引脚,可以通过读取和设置引脚的状态来实现与外部设备的交互。

使用jnb指令时,我们首先需要确定要判断的位是哪一个。如果是寄存器中的位,可以使用与运算来将该位与1进行比较。如果是IO 口的引脚,可以使用相关的读取引脚状态的指令来进行判断。判断

结果为0时,代表该位或引脚为0;判断结果为1时,代表该位或引脚为1。

接下来,我们需要确定跳转的地址。通常情况下,我们会在程序中定义一些标号,然后在jnb指令中使用这些标号来指定跳转的地址。在跳转之后,程序会从指定地址开始执行,继续往下执行。

下面是一个简单的例子来演示jnb指令的使用。假设我们有一个LED灯连接在P1口的第0位引脚上,我们希望当这个引脚为0时,跳转到一个标号为L1的地址执行程序。代码如下:

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

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。

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 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条)

INC @Ri 间接RAM 加1 1 1 06;07 INC DPTR 数据指针加1 1 2 A3 DEC A A减1 1 1 14 DEC Rn 寄存器减 1 1 1 18—1F DEC data 直接字节减1 2 1 15 DEC @Ri 间接RAM 减1 1 1 16;17 MUL AB A乘B 1 4 A4

DIV AB A被B除 1 4 84

DA A A十进制调整 1 1 D4

4.转移指令(22条)

AJMP addr 11 绝对转移 2 2 *1 LJMP addr 16 长转移 3 2 02 SJMP rel 短转移 2 2 80 JMP @A+DPTR 相对于DPTR 间接转移 1 2 73

JZ rel 若A=0 则转移 2 2 60 JNZ rel 若A≠0 则转移 2 2 70

JC rel 若C=1 则转移 2 2 40 JNC rel 若C≠1 则转移 2 2 50

JB bit,rel 若直接位=1 则转移 3 2 20 JNB bit,rel 若直接位=0 则转移 3 2 30 JBC bit,rel 若直接位=1 则转移且清除 3 2 10 CJNE A,data,rel 直接数与 A 比较,不等转移 3 2 B5 CJNE A,#data,rel 立即数与 A 比较,不等转移 3 2 B4 CJNE @Ri,#data,rel 立即数与间接RAM比较,不等转移 3 2 B6;B7 CJNE Rn,#data,rel 立即数与寄存器比较不等转移 3 2 B8—BF DJNZ Rn,rel 寄存器减 1 不为0 转移 2 2 D8—DF DJNZ data,rel 直接字节减1 不为 0 转移 3 2 D5 ACALL addr 11 绝对子程序调用 2 2 *1 LCALL addr 16 子程序调用 3 2 12 RET 子程序调用返回 1 2 22 RETI 中断程序调用返回 1 2 32 NOP 空操作 1 1 00

六.记忆方法

MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,

其操作数有#data、direct、Rn、@Ri等。这里先介绍指令助记符及其相关符号的记忆方法。一、助记符号的记忆方法

1表格列举法

把44个指令助记符按功能分为五类,每类列表记忆。此处从略,请读者自己总结。

2英文还原法

单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉

语有助于理解其助记符含义,从而加强记忆。例如:

相关文档
最新文档