单片机 指令

合集下载

常见单片机指令及应用

常见单片机指令及应用

常见单片机指令及应用常见的单片机指令主要有以下几类:数据传送指令、算术逻辑指令、逻辑运算指令、转移指令和程序控制指令。

下面将详细介绍这些指令及其应用。

1. 数据传送指令:数据传送指令用于将数据从一个寄存器传送到另一个寄存器。

常见的数据传送指令有MOV(Move)、LDR(Load Register)和STR(Store Register)。

这些指令可以用于寄存器之间、存储器和寄存器之间的数据传输。

在应用上,数据传送指令可以用于将传感器数据读取到寄存器中,在处理器中间进行处理,或将处理结果存储到存储器中。

2. 算术逻辑指令:算术逻辑指令用于执行算术和逻辑操作。

常见的算术逻辑指令包括ADD (Addition)和SUB(Subtraction)等算术指令,AND(Logical AND)和OR(Logical OR)等逻辑指令。

这些指令可以用于在单片机中进行各种数学计算和逻辑判断。

在应用上,算术逻辑指令可以用于实现数值计算、逻辑运算以及条件判断等功能。

3. 逻辑运算指令:逻辑运算指令用于执行位操作和逻辑操作。

常见的逻辑运算指令有比特移位指令(LSL、LSR、ASL、ASR)和旋转指令(ROL、ROR)等。

这些指令可以用于在单片机中对数据的位进行移位和旋转操作。

在应用上,逻辑运算指令可以用于实现数据的位操作,如提取、移位和翻转等。

4. 转移指令:转移指令用于实现程序的无条件或有条件转移。

常见的转移指令有JMP(Jump)、CALL(Subroutine Call)和RET(Return)等。

这些指令可以用于实现程序的跳转和子程序的调用。

在应用上,转移指令可以用于控制程序的流程,实现程序的分支和循环等。

5. 程序控制指令:程序控制指令用于控制程序的执行。

常见的程序控制指令有NOP(No Operation)和HALT(Halt Execution)等。

这些指令可以用于实现程序的空操作和停止执行。

在应用上,程序控制指令可以用于实现程序的延时、空闲状态等。

单片机指令大全(二)2024

单片机指令大全(二)2024

单片机指令大全(二)引言概述:本文是关于单片机指令大全的第二部分。

在上一部分中,我们介绍了一些常用的单片机指令和其功能。

本文将继续介绍更多的单片机指令,包括数据传输、逻辑运算、算术运算、位操作以及状态寄存器等方面的指令。

这些指令将帮助您更好地理解和使用单片机。

1. 数据传输指令1.1. MOV指令:将一个数据从源操作数传送到目的操作数。

1.2. LDI指令:将一个立即数传送到一个寄存器。

1.3. LDS和STS指令:将数据从SRAM传送到寄存器或将寄存器的数据传送到SRAM。

1.4. IN和OUT指令:将数据从端口传送到寄存器或从寄存器传送到端口。

2. 逻辑运算指令2.1. AND、OR和XOR指令:进行逻辑与、逻辑或和逻辑异或运算。

2.2. NOT指令:对一个寄存器的数据进行逻辑非运算。

2.3. CLR指令:将一个寄存器的数据清零。

3. 算术运算指令3.1. ADD和SUB指令:对两个操作数进行加法或减法运算。

3.2. INC和DEC指令:对一个寄存器的数据进行加1或减1操作。

3.3. MUL和DIV指令:进行乘法和除法运算。

4. 位操作指令4.1. ANDI、ORI和XORI指令:对一个寄存器的数据进行与、或和异或运算。

4.2. SBI和CBI指令:设置或清除一个I/O端口的某个位。

4.3. SBIC和SBIS指令:跳转指令,根据指定的I/O端口位是否被设置或清除执行跳转操作。

5. 状态寄存器相关指令5.1. SEI和CLI指令:设置或清除全局中断。

5.2. SREG指令:用于保存和恢复状态寄存器的值。

5.3. IJMP和EIJMP指令:用于从程序中直接跳转到任意存储器位置。

总结:本文介绍了单片机指令大全的第二部分内容,包括数据传输、逻辑运算、算术运算、位操作以及状态寄存器等方面的指令。

这些指令的功能与用法将有助于您更好地理解和应用单片机。

通过熟练掌握这些指令,您将能够更加灵活地进行单片机程序的设计与开发。

单片机指令大全

单片机指令大全

引言概述:单片机指令是嵌入式系统设计中至关重要的一部分,它们定义了单片机的功能和操作。

本文是单片机指令大全系列的第二部分,旨在提供更多全面的单片机指令信息,帮助读者更好地理解和应用单片机指令。

正文内容:一、移位指令1.逻辑左移指令:将操作数的每一位向左移动一位,并且最低位填充0。

2.逻辑右移指令:将操作数的每一位向右移动一位,并且最高位填充0。

3.算术右移指令:将操作数的每一位向右移动一位,并且最高位保持不变。

4.循环左移指令:将操作数的每一位向左循环移动一位,即最高位移动到最低位。

5.循环右移指令:将操作数的每一位向右循环移动一位,即最低位移动到最高位。

二、逻辑运算指令1.逻辑与指令:对操作数进行逻辑与运算,将两个二进制数对应位上的值进行逻辑与操作。

2.逻辑或指令:对操作数进行逻辑或运算,将两个二进制数对应位上的值进行逻辑或操作。

3.逻辑非指令:对操作数进行逻辑非运算,将二进制数的每一位取反。

4.逻辑异或指令:对操作数进行逻辑异或运算,将两个二进制数对应位上的值进行逻辑异或操作。

5.逻辑移位指令:将操作数进行逻辑左移或右移。

三、算术运算指令1.加法指令:对操作数进行加法运算,并将运算结果保存到指定的寄存器或存储器中。

2.减法指令:对操作数进行减法运算,并将运算结果保存到指定的寄存器或存储器中。

3.乘法指令:对操作数进行乘法运算,并将运算结果保存到指定的寄存器或存储器中。

4.除法指令:对操作数进行除法运算,并将运算结果保存到指定的寄存器或存储器中。

5.移位指令:对操作数进行移位运算,包括算术左移、算术右移、循环左移和循环右移。

四、输入输出指令1.读取输入指令:从指定的输入设备读取数据,并将数据保存到指定的寄存器或存储器中。

2.输出显示指令:将指定的数据从寄存器或存储器中读取,并显示到指定的输出设备上。

3.端口输入指令:从指定的端口读取数据,并将数据保存到指定的寄存器或存储器中。

4.端口输出指令:将指定的数据从寄存器或存储器中读取,并输出到指定的端口上。

单片机指令大全

单片机指令大全

单片机指令大全数据传递指令:(3)以直接地址为目的操作数的指令MOV direct,A例:MOV 20H,AMOV direct,Rn MOV 20H,R1MOV direct1,direct2 MOV 20H,30HMOV direct,@Ri MOV 20H,@R1MOV direct,#data MOV 20H,#34H(4)以间接地址为目的操作数的指令MOV @Ri,A 例:MOV @R0,AMOV @Ri,direct MOV @R1,20HMOV @Ri,#data MOV @R0,#34H(5)十六位数的传递指令MOV DPTR,#data168051是一种8位机,这是唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入DPTR中去。

其中高8位送入DPH,低8位送入DPL。

例:MOV DPTR,#1234H,则执行完了之后DPH中的值为12H,DPL中的值为34H。

反之,如果我们分别向DPH,DPL送数,则结果也一样。

如有下面两条指令:MOV DPH,#35H,MOV DPL,#12H。

则就相当于执行了MOV DPTR,#3512H。

单片机的累加器A与片外RAM之间的数据传递类指令MOVX A,@RiMOVX @Ri,AMOVX A,@DPTRMOVX @DPTR,A说明:1)在51系列单片机中,与外部存储器RAM打交道的只能是A累加器。

所有需要传送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A 读入。

在此我们能看出内外部RAM的区别了,内部RAM间能直接进行数据的传递,而外部则不行,比如,要将外部R AM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再传送到0200H单元中去。

要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条单片机指令中,地址是被直接放在DPTR中的。

单片机指令大全

单片机指令大全

一、数据传输指令───────────────────────────────────────在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVX 调用片外数据MOVC调用片内数据.PUSH 把字压入堆栈.POP 把字弹出堆栈.SWAP 交换8位寄存器里字节的顺序XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)XLAT 字节查表转换.2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535.二、算术运算指令───────────────────────────────────────ADD 加法.ADC 带进位加法.INC 加1.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减1.NEC 求反(以0 减之).CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的十进制调整.MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), DIV 无符号除法.IDIV 整数除法.三、逻辑运算指令───────────────────────────────────────AND 与运算.or 或运算.XOR 异或运算.NOT 取反.ROL 循环左移. ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上四种移位指令,其移位次数可达255次.五、程序转移指令───────────────────────────────────────1>无条件转移指令(长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令NOP 空操作.六、伪指令END 程序结束.。

51单片机指令表汇总

51单片机指令表汇总

51单片机指令表汇总51 单片机是一种广泛应用于电子工程和嵌入式系统开发的微控制器。

要熟练掌握 51 单片机的编程,了解其指令表是至关重要的。

下面就为大家汇总一下 51 单片机的常见指令。

数据传送类指令MOV 指令:这是最基本的数据传送指令,用于在寄存器之间、寄存器与存储器之间传送数据。

例如,“MOV A, 50H”就是将立即数 50H传送到累加器 A 中。

MOVX 指令:用于在片外数据存储器和累加器 A 之间进行数据传送。

比如“MOVX A, @DPTR”,将片外数据存储器中由数据指针 DPTR 所指定单元的内容传送到累加器 A 中。

MOVC 指令:用于访问程序存储器中的数据表格。

“MOVC A, @A+DPTR”是常见的用法。

算术运算类指令ADD 指令:实现加法运算。

像“ADD A, R0”就是将累加器 A 的内容和寄存器 R0 的内容相加,结果存放在累加器 A 中。

ADDC 指令:带进位加法指令。

考虑了上一次运算产生的进位标志。

SUBB 指令:用于减法运算,并且会考虑借位标志。

逻辑运算类指令ANL 指令:进行逻辑与操作。

例如“ANL A, R0”,将累加器 A 和寄存器 R0 的内容进行逻辑与运算,结果存放在累加器 A 中。

ORL 指令:执行逻辑或操作。

XRL 指令:实现逻辑异或运算。

控制转移类指令JC 指令:若进位标志为 1 则跳转。

JZ 指令:若累加器 A 的内容为 0 则跳转。

LJMP 指令:长跳转指令,可以跳转到 64KB 程序存储器空间的任意位置。

位操作类指令SETB 指令:将指定的位设置为 1。

例如“SETB P10”,将 P1 端口的第 0 位置 1。

CLR 指令:把指定的位清零。

这些只是 51 单片机指令的一部分,实际应用中还有更多的指令和组合使用方式。

在编程时,合理选择和运用这些指令能够实现各种复杂的功能。

比如,通过数据传送指令来初始化变量和读取外部数据;利用算术运算指令进行数值计算;借助逻辑运算指令处理逻辑关系;使用控制转移指令实现程序的分支和循环;运用位操作指令控制单个引脚的状态。

单片机指令一览

1.加法指令
ADD
P44
ADDA,Rn
ADDA,direct
ADDA,@Ri
ADDA,#data
1.不带进位的加法指令
ADDC
P45
ADDCA,Rn
ADDCA,direct
ADDCA,@Ri
ADDCA,#data
2.带进位的加法指令
INC
P46
INCA
INCRn
INCdirect
INC@Ri
INCDPTR
MOV@R0,70H
MOV@R1,#78H
4.以寄存器间接地址为目的地址的指令
MOVDPTR,#data
5.16位数据传送指令
MOVX
P42
片外数据存储器(或扩展I/O口)与累加器A之间的传送指令
MOVXA,@DPTR
MOVXA,@Ri(0,1)
MOXX@DPTR,A
MOVX@Ri,A
MOVC
P42
JB
P53
JB bit,rel
JNB
P53
JNB bit,rel
JBC
P53
JBC bit,rel
CJNE
P53
CJNE A,direct,rel
CJNE A,#data,rel
CJNE Rn,#data,rel
CJNE @Ri,#data,rel
2.比较不相等转移指令
DJNZ
P53
DJNZ Rn,rel
3.增量指令
2.减法指令
SUBB
P47
SUBBA,Rn
SUBBA,direct
SUBBA,@Ri
SUBBA,#data
1.带进位的减法指令
DEC

单片机常用指令

单片机常用指令在单片机编程中,常用的指令是一种用于控制微处理器和外围设备工作的基本命令。

掌握常用指令对于单片机的开发和应用至关重要。

本文将介绍一些常用的单片机指令,以帮助读者更好地理解和应用单片机。

一、数据传输指令1. MOVMOV指令用于将一个操作数的值传送到另一个操作数,格式为MOV 目的操作数,源操作数。

例如:MOV A,B表示将寄存器B中的值传送到寄存器A中。

2. LDA和STALDA指令用于将一个内存单元的值传送到累加器A中,格式为LDA 内存单元地址。

例如:LDA 0x1234表示将0x1234地址处的数据传送到累加器A中。

STA指令与LDA相反,用于将累加器A的值传送到一个内存单元中,格式为STA 内存单元地址。

3. LXILXI指令用于将一个16位的立即数装入16位寄存器,格式为LXI 寄存器对,16位立即数。

例如:LXI BC,0x1234表示将0x1234装入BC寄存器。

二、算术逻辑指令1. ADD和SUBADD指令用于将一个操作数的值与累加器A的值相加,结果存放在累加器A中,格式为ADD 操作数。

例如:ADD B表示将寄存器B的值与累加器A的值相加。

SUB指令与ADD相反,用于将一个操作数的值减去累加器A的值,结果存放在累加器A中,格式为SUB 操作数。

2. INR和DCRINR指令用于将一个操作数的值增加1,格式为INR 操作数。

例如:INR C表示将寄存器C的值加1。

DCR指令与INR相反,用于将一个操作数的值减1,格式为DCR操作数。

3. AND和ORAND指令用于将一个操作数的值与累加器A的值按位与运算,结果存放在累加器A中,格式为AND 操作数。

例如:AND D表示将寄存器D的值与累加器A的值按位与运算。

OR指令与AND相反,用于将一个操作数的值与累加器A的值按位或运算,结果存放在累加器A中,格式为OR 操作数。

三、分支指令1. JMPJMP指令用于无条件地跳转到指定的内存地址,格式为JMP 内存地址。

单片机指令大全(一)

单片机指令大全(一)引言概述:本文是关于单片机指令的大全,主要介绍了单片机指令的基本概念和应用。

单片机指令是单片机操作的核心,具有重要的意义。

本文将按照不同的功能对单片机指令进行分类和阐述,为读者提供一份全面而简明的单片机指令资料。

正文:一、数据传送相关指令1. mov指令:用于将数据从一个寄存器传送到另一个寄存器2. ldi指令:用于将立即数存入寄存器3. ld指令:用于将存储器中的数据传送到寄存器4. st指令:用于将寄存器中的数据传送到存储器5. push和pop指令:用于将数据存入和取出堆栈二、算术运算指令1. add指令:用于将两个寄存器中的数据相加2. sub指令:用于将一个寄存器中的数据减去另一个寄存器中的数据3. inc和dec指令:用于将一个寄存器中的数据递增或递减4. mul和div指令:用于进行乘法和除法运算5. clr指令:用于将一个寄存器中的数据清零三、逻辑运算指令1. and指令:用于对两个寄存器中的数据进行按位与运算2. or指令:用于对两个寄存器中的数据进行按位或运算3. xor指令:用于对两个寄存器中的数据进行按位异或运算4. not指令:用于对一个寄存器中的数据进行取反运算5. test指令:用于对寄存器数据进行测试四、跳转指令1. jmp指令:用于无条件跳转到指定的地址2. jc、jnc、jz、jnz指令:用于根据特定条件进行跳转3. call和ret指令:用于子程序调用和返回4. cmp指令:用于比较两个寄存器中的数据5. loop指令:用于循环执行指定次数的程序五、I/O操作指令1. in指令:用于输入外设数据到寄存器中2. out指令:用于将寄存器中的数据输出到外设3. stc和clc指令:用于设置和清除进位标志位4. ei和di指令:用于开启和关闭中断5. hlt指令:用于控制单片机暂停执行总结:本文介绍了单片机指令的基本概念和分类,并详细阐述了每类指令的具体功能和使用方法。

单片机指令的分类及特点

单片机指令的分类及特点单片机是一种高度集成的微型计算机系统,具有自主工作能力。

在单片机中,指令是控制其工作的基本单位。

本文将对单片机指令进行分类,并介绍各类指令的特点。

一、单片机指令的分类1. 数据传送指令:用于将数据从一个寄存器传送到另一个寄存器,或者将寄存器中的数据传送到内存等外部设备。

2. 运算指令:包括算术运算、逻辑运算和位操作等指令,用于实现数据的加减乘除、与或非等运算。

3. 跳转指令:用于修改程序计数器(PC)的值,实现程序的无条件或有条件跳转。

4. 逻辑指令:用于进行逻辑运算,包括逻辑与、逻辑或、逻辑非等操作。

5. 位操作指令:用于对数据的位进行操作,如位移、置位、清零等。

6. 输入输出指令:用于实现单片机与外部设备之间的数据传输,如从外设中读取数据或向外设发送数据。

二、单片机指令的特点1. 高度集成:单片机指令集集成在芯片中,通过编程可以直接控制各个功能模块,实现多种应用。

2. 程序可重写:单片机的指令可以通过编程修改,使得单片机能够适应不同的应用场景,提高了单片机的灵活性和可重用性。

3. 运行速度快:单片机指令的执行速度快,响应时间短,适用于对实时性要求较高的应用。

4. 节约空间:由于单片机指令集集成在芯片中,无需额外的外部器件,节约了电路板空间,并提高了系统的可靠性。

5. 低功耗:单片机指令的执行过程简单,功耗较低,适合用于电池供电的应用场景,延长了电池的寿命。

6. 外部扩展性强:单片机通过引脚可与外部器件连接,可根据实际需求进行扩展,满足不同应用的要求。

7. 指令多样性:不同型号的单片机具有不同的指令集,可以选择适合具体应用场景的单片机,提高了开发效率。

总结:单片机指令根据功能的不同可以分为数据传送指令、运算指令、跳转指令、逻辑指令、位操作指令和输入输出指令。

单片机指令具有高度集成、程序可重写、运行速度快、节约空间、低功耗、外部扩展性强和指令多样性等特点。

这些特点使得单片机成为嵌入式系统中最常用的处理器之一,被广泛应用于各种电子设备中。

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

单片机汇编指令1 MOV A,Rn 寄存器内容送入累加器2 MOV A,direct 直接地址单元中的数据送入累加器3 MOV A,@Ri 间接RAM 中的数据送入累加器4 MOV A,#tata 立即数送入累加器5 MOV Rn,A 累加器内容送入寄存器6 MOV Rn,direct 直接地址单元中的数据送入寄存器7 MOV Rn,#data 立即数送入寄存器8 MOV direct,A 累加器内容送入直接地址单元9 MOV direct,Rn 寄存器内容送入直接地址单元10 MOV direct,direct 直接地址单元中的数据送入另一个直接地址单元11 MOV direct,@Ri 间接RAM 中的数据送入直接地址单元12 MOV direct,#data 立即数送入直接地址单元13 MOV @Ri,A 累加器内容送间接RAM 单元14 MOV @Ri,direct 直接地址单元数据送入间接RAM 单元15 MOV @RI,#data 立即数送入间接RAM 单元16 MOV DRTR,#dat16 16 位立即数送入地址寄存器17 MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器18 MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器19 MOVX A,@Ri 外部RAM(8 位地址)送入累加器20 MOVX A,@DPTR 外部RAM(16 位地址)送入累加器21 MOVX @Ri,A 累计器送外部RAM(8 位地址)22 MOVX @DPTR,A 累计器送外部RAM(16 位地址)23 PUSH direct 直接地址单元中的数据压入堆栈24 POP direct 弹栈送直接地址单元25 XCH A,Rn 寄存器与累加器交换26 XCH A,direct 直接地址单元与累加器交换27 XCH A,@Ri 间接RAM 与累加器交换28 XCHD A,@Ri 间接RAM 的低半字节与累加器交换算术操作类指令:1 ADD A,Rn 寄存器内容加到累加器2 ADD A,direct 直接地址单元的内容加到累加器3 ADD A,@Ri 间接ROM 的内容加到累加器4 ADD A,#data 立即数加到累加器5 ADDC A,Rn 寄存器内容带进位加到累加器6 ADDC A,direct 直接地址单元的内容带进位加到累加器7 ADDC A,@Ri 间接ROM 的内容带进位加到累加器8 ADDC A,#data 立即数带进位加到累加器9 SUBB A,Rn 累加器带借位减寄存器内容10 SUBB A,direct 累加器带借位减直接地址单元的内容11 SUBB A,@Ri 累加器带借位减间接RAM 中的内容12 SUBB A,#data 累加器带借位减立即数13 INC A 累加器加114 INC Rn 寄存器加115 INC direct 直接地址单元加116 INC @Ri 间接RAM 单元加117 DEC A 累加器减118 DEC Rn 寄存器减1 1 1219 DEC direct 直接地址单元减120 DEC @Rj 间接RAM 单元减 121 INC DPTR 地址寄存器DPTR 加 122 MUL AB A 乘以B,结果放在A23 DIV AB A 除以B,结果放在A24 DA A 累加器十进制调整布尔变量操作类指令:1 CLR C 清进位位2 CLR bit 清直接地址位3 SETB C 置进位位4 SETB bit 置直接地址位5 CPL C 进位位求反6 CPL bit 置直接地址位求反7 ANL C,bit 进位位和直接地址位相“与”8 ANL C,bit 进位位和直接地址位的反码相“与”9 ORL C,bit 进位位和直接地址位相“或”10 ORL C,bit 进位位和直接地址位的反码相“或”11 MOV C,bit 直接地址位送入进位位12 MOV bit,C 进位位送入直接地址位13 JC rel 进位位为1 则转移14 JNC rel 进位位为0 则转移15 JB bit,rel 直接地址位为1 则转移16 JNB bit,rel 直接地址位为0 则转移17 JBC bit,rel 直接地址位为1 则转移,该位清零逻辑操作数指令:1 ANL A,Rn 累加器与寄存器相“与”2 ANL A,direct 累加器与直接地址单元相“与”3 ANL A,@Ri 累加器与间接RAM 单元相“与”4 ANL A,#data 累加器与立即数相“与”5 ANL direct,A 直接地址单元与累加器相“与”6 ANL direct,#data 直接地址单元与立即数相“与”7 ORL A,Rn 累加器与寄存器相“或”8 ORL A,direct 累加器与直接地址单元相“或”9 ORL A,@Ri 累加器与间接RAM 单元单元相“或”10 ORL A,#data 累加器与立即数相“或”11 ORL direct,A 直接地址单元与累加器相“或”12 ORL direct,#data 直接地址单元与立即数相“或”13 XRL A,Rn 累加器与寄存器相“异或”14 XRL A,direct 累加器与直接地址单元相“异或”15 XRL A,@Ri 累加器与间接RAM 单元单元相“异或”16 XRL A,#data 累加器与立即数相“异或”17 XRL direct,A 直接地址单元与累加器相“异或”18 XRL direct,#data 直接地址单元与立即数相“异或”19 CLR A 累加器清“0”20 CPL A 累加器求反21 RL A 累加器循环左移22 RLC A 累加器带进位位循环左移23 RR A 累加器循环右移24 RRC A 累加器带进位位循环右移25 SWAP A 累加器半字节交换控制转移类指令:1 ACALL addr11 绝对(短)调用子程序2 LCALL addr16 长调用子程序3 RET 子程序返回4 RETI 中数返回5 AJMP addr11 绝对(短)转移6 LJMP addr16 长转移7 SJMP rel 相对转移8 JMP @A+DPTR 相对于DPTR 的间接转移9 JZ rel 累加器为零转移10 CJNE rel 累加器非零转移11 CJNE A,direct,rel 累加器与直接地址单元比较,不相等则转移12 CJNE A,#data,rel 累加器与立即数比较,不相等则转移13 CJNE Rn,#data,rel 寄存器与立即数比较,不相等则转移14 CJNE @Ri,#data,rel 间接RAM 单元与立即数比较,不相等则转移15 DJNZ Rn,rel 寄存器减1,非零转移16 DJNZ direct,erl 直接地址单元减1,非零转移17 NOP 空操作伪指令1. ORG 汇编起始命令格式:ORG 16位地址功能是规定该伪指令后面程序的汇编地址,即汇编后生成目标程序存放的起始地址。

例如:ORG 2000HSTART:MOV A,#64H既规定了标号START的地址是2000H,又规定了汇编后的第一条指令码从2000H开始存放。

ORG可以多次出现在程序的任何地方。

当它出现时,下一条指令的地址就由此重新定位。

2. END 汇编结束命令END命令通知汇编程序结束汇编。

在END之后的汇编语言指令均不予以汇编。

3.EQU 赋值命令格式:字符名称 EQU 项(数或汇编符号)EQU命令是把“项”赋值给“字符名称”。

注意,这里的字符名称不等于标号(其后没有冒号)。

其中的项,可以是数也可以是汇编符号。

用EQU赋过值的符号名可以用作数据地址、代码地址、位地址或是一个立即数。

由此它可以是8位的,也可以16位的。

例如:AA EQU R1MOV A, AA这里AA就是代表了工作寄存器R1。

又例如:A10 EQU 10DELY EQU 07EBHMOV A, A10LCALL DELY这里A10当作片内RAM的一个直接地址,而DELY定义了一个16位地址,实际上它是一个子程序的入口。

4.DATA 数据地址赋值命令格式:字符名称 DATA 表达式DATA命令功能与EQU类似,但有一下差别:1)EQU定义的字符名必须先定义再使用,而DATA定义的字符名可以后定义先用;2)用EQU伪指令可以把一个汇编符号赋给一个名字,而DATA只能把数据赋给字符名;3)DATA语句中可以把一个表达式的值赋给字符名,其中的表达式应是可求值的。

5.DB 定义字节命令格式:DB [项或项表]项或项表可以是一个字节、用逗号隔开的字节串或括在单引号(‘’)中的ASCII字符串。

它通知汇编程序从当前ROM地址开始,保留一字节或字节串的存储单元,并存入DB后面的数据,例如:ORG 2000HDB 0A3HLIST: DB 26H, 03HSTR: DB 'ABC'经汇编后,则有:(2000H)=A3H(2001H)=26H(2002H)=03H(2003H)=41H(2004H)=42H(2005H)=43H其中,41H、42H和43H分别是A、B和C的ASCII编码值。

6.DW定义字节命令格式:DW 16位数据项或项表该命令把DW后的16为数据项或项表从当前地址连续存放。

没项数值为16位二进制数,高8位先存放,低8位后存放,这和其他指令中16位数的存放方式相同。

DW常用于定义一个地址表,例如:ORG 1500HTABLE: DW 7234H, 8AH, 10H经汇编后,则有:(1500H)=72H (1501H)=34H(1502H)=00H (1503H)=8AH(1504H)=00H (1505H)=10H7.DS定义存储空间命令格式:DS 表达式在汇编时,从定义地址开始保留DS之后表达式的值所规定的存储单元,以备后用。

例如:ORG 1000HDS 08HDB 30H,8AH汇编以后,从1000H保留8个单元,然后从1008H开始给内存赋值,即(1008H)=30H(1009H)=8AH以上的DB、DW和DS伪指令都只是对程序存储器起作用,它们不能对数据存储器进行初始化PSW:程序状态字寄存器地址D0H,位寻址D7H~D0H。

AC——半进位标记F0——用户设定标记RS1、RS0——4个工作寄存器区的选择位。

VO——溢出标记P——奇偶校验标记PCON:电源控制器及波特率选择寄存器SMOD——波特率倍增位GF1、GF0——用户通用标记PD——掉电方式控制位,PD=1时进入掉电模式IDL——空闲方式控制位,IDL=1时进入空闲方式在AT89S51中PCON.4是电源断电标记位POF,上电是为1IE:中断允许控制寄存器寄存器地址A8H,位寻址AFH~A8H。

相关文档
最新文档