单片机常用指令
常见单片机指令及应用
![常见单片机指令及应用](https://img.taocdn.com/s3/m/6211e6d850e79b89680203d8ce2f0066f53364f9.png)
常见单片机指令及应用常见的单片机指令主要有以下几类:数据传送指令、算术逻辑指令、逻辑运算指令、转移指令和程序控制指令。
下面将详细介绍这些指令及其应用。
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](https://img.taocdn.com/s3/m/636c7405ff4733687e21af45b307e87101f6f8ef.png)
单片机指令大全(二)引言概述:本文是关于单片机指令大全的第二部分。
在上一部分中,我们介绍了一些常用的单片机指令和其功能。
本文将继续介绍更多的单片机指令,包括数据传输、逻辑运算、算术运算、位操作以及状态寄存器等方面的指令。
这些指令将帮助您更好地理解和使用单片机。
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指令:用于从程序中直接跳转到任意存储器位置。
总结:本文介绍了单片机指令大全的第二部分内容,包括数据传输、逻辑运算、算术运算、位操作以及状态寄存器等方面的指令。
这些指令的功能与用法将有助于您更好地理解和应用单片机。
通过熟练掌握这些指令,您将能够更加灵活地进行单片机程序的设计与开发。
单片机指令大全
![单片机指令大全](https://img.taocdn.com/s3/m/36ce5049c850ad02de804177.png)
单片机指令大全数据传递指令:(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中的。
c51单片机c语言常用指令 -回复
![c51单片机c语言常用指令 -回复](https://img.taocdn.com/s3/m/5fc26564580102020740be1e650e52ea5518ce19.png)
c51单片机c语言常用指令-回复C51单片机C语言常用指令导语:C51单片机是一种非常常用的微控制器,它广泛应用于许多嵌入式系统和电子设备中。
在单片机的开发过程中,C语言是一种非常常用的编程语言。
本文将介绍C51单片机常用的指令,帮助读者了解这些指令的功能和使用方法。
第一部分:常用的I/O口控制指令I/O口控制指令是C51单片机中非常重要的一部分,因为它们用于控制单片机与外部设备之间的数据交互。
以下是一些常用的I/O口控制指令:- P0:将P0口设置为输入或输出,可以用于与外部设备进行数据通信。
- P1:将P1口设置为输入或输出,可以用于与外部设备进行数据通信。
- P2:将P2口设置为输入或输出,可以用于与外部设备进行数据通信。
- P3:将P3口设置为输入或输出,可以用于与外部设备进行数据通信。
第二部分:常用的中断控制指令中断是C51单片机中实现实时响应的重要机制之一。
以下是一些常用的中断控制指令:- EA:使能所有中断。
- EX0:外部中断0的控制指令,用于外部设备产生中断信号。
- EX1:外部中断1的控制指令,用于外部设备产生中断信号。
- IT0:外部中断0的触发方式,可以设置为电平触发或边沿触发。
- IT1:外部中断1的触发方式,可以设置为电平触发或边沿触发。
第三部分:常用的定时器控制指令定时器是C51单片机中实现时间计数和定时任务的重要模块。
以下是一些常用的定时器控制指令:- TMOD:设置定时器模式,可以选择定时器0/1的工作模式。
- TL0、TL1:定时器0/1的低8位计数器,用于保存定时值的低8位。
- TH0、TH1:定时器0/1的高8位计数器,用于保存定时值的高8位。
- TR0、TR1:定时器0/1的运行控制位,用于启动和停止计时器。
- TF0、TF1:定时器0/1的溢出标志位,用于判断定时器是否溢出。
第四部分:常用的串口通信指令串口通信是C51单片机中常用的通信方式之一,用于与其他设备进行数据交互。
8051单片机指令
![8051单片机指令](https://img.taocdn.com/s3/m/75e615391611cc7931b765ce0508763230127461.png)
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地址处执行。
这个指令非常有用,可以实现条件判断和分支跳转。
常见51单片机指令及详解
![常见51单片机指令及详解](https://img.taocdn.com/s3/m/0da16d56571252d380eb6294dd88d0d233d43cd4.png)
常见51单片机指令及详解1. 简介单片机是一种集成电路,具备处理和控制功能。
51单片机是指Intel公司推出的一系列8位单片机,常用于嵌入式系统和物联网设备。
本文将介绍一些常见的51单片机指令,并对其进行详解。
2. 数据传送指令2.1 MOV指令MOV指令用于将数据从一个寄存器或内存位置传送到另一个寄存器或内存位置。
例如:MOV A, #10 ;将立即数10传送给累加器AMOV R0, R1 ;将寄存器R1的值传送给R02.2 XCH指令XCH指令用于交换两个寄存器或内存位置中的数据。
例如:XCH A, B ;交换累加器A和B的值3. 算术运算指令3.1 ADD指令ADD指令用于将两个操作数相加,并将结果保存在累加器中。
例如:ADD A, B ;将累加器A和寄存器B的值相加,结果存储在A中3.2 SUBB指令SUBB指令用于将第二个操作数的补码与累加器的值相减,并将结果存储在累加器中。
例如:SUBB A, B ;将B的补码与累加器A的值相减,结果存储在A中4. 逻辑运算指令4.1 ANL指令ANL指令用于对两个操作数进行按位与运算,并将结果存储在目的操作数中。
例如:ANL A, B ;将累加器A和寄存器B的值按位与,结果存储在A 中4.2 ORL指令ORL指令用于对两个操作数进行按位或运算,并将结果存储在目的操作数中。
例如:ORL A, B ;将累加器A和寄存器B的值按位或,结果存储在A 中5. 跳转指令5.1 JMP指令JMP指令用于无条件跳转至指定的目标地址。
例如:JMP 2000H ;跳转至内存地址2000H处执行指令5.2 JZ指令JZ指令用于在累加器为零时跳转至指定的目标地址。
例如:JZ 3000H ;当累加器为零时,跳转至内存地址3000H处执行指令6. 输入输出指令6.1 IN指令IN指令用于将外部设备的数据输入到累加器或指定的寄存器中。
例如:IN A, P1 ;将P1端口的数据输入到累加器A中6.2 OUT指令OUT指令用于将累加器或指定的寄存器中的数据输出到外部设备。
51单片机指令表汇总
![51单片机指令表汇总](https://img.taocdn.com/s3/m/e4bfdb3559fafab069dc5022aaea998fcc2240ad.png)
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 单片机指令的一部分,实际应用中还有更多的指令和组合使用方式。
在编程时,合理选择和运用这些指令能够实现各种复杂的功能。
比如,通过数据传送指令来初始化变量和读取外部数据;利用算术运算指令进行数值计算;借助逻辑运算指令处理逻辑关系;使用控制转移指令实现程序的分支和循环;运用位操作指令控制单个引脚的状态。
单片机指令一览
![单片机指令一览](https://img.taocdn.com/s3/m/e708e81210a6f524ccbf85e8.png)
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
单片机常用指令
![单片机常用指令](https://img.taocdn.com/s3/m/f4f826d04bfe04a1b0717fd5360cba1aa8118ca0.png)
单片机常用指令在单片机编程中,常用的指令是一种用于控制微处理器和外围设备工作的基本命令。
掌握常用指令对于单片机的开发和应用至关重要。
本文将介绍一些常用的单片机指令,以帮助读者更好地理解和应用单片机。
一、数据传输指令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 内存地址。
单片机指令大全(一)
![单片机指令大全(一)](https://img.taocdn.com/s3/m/ddbaec54a66e58fafab069dc5022aaea998f41dd.png)
单片机指令大全(一)引言概述:本文是关于单片机指令的大全,主要介绍了单片机指令的基本概念和应用。
单片机指令是单片机操作的核心,具有重要的意义。
本文将按照不同的功能对单片机指令进行分类和阐述,为读者提供一份全面而简明的单片机指令资料。
正文:一、数据传送相关指令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指令:用于控制单片机暂停执行总结:本文介绍了单片机指令的基本概念和分类,并详细阐述了每类指令的具体功能和使用方法。
单片机指令大全
![单片机指令大全](https://img.taocdn.com/s3/m/66689a1e3d1ec5da50e2524de518964bcf84d2fa.png)
引言概述:单片机指令是嵌入式系统设计中至关重要的一部分,它们定义了单片机的功能和操作。
本文是单片机指令大全系列的第二部分,旨在提供更多全面的单片机指令信息,帮助读者更好地理解和应用单片机指令。
正文内容:一、移位指令1.逻辑左移指令:将操作数的每一位向左移动一位,并且最低位填充0。
2.逻辑右移指令:将操作数的每一位向右移动一位,并且最高位填充0。
3.算术右移指令:将操作数的每一位向右移动一位,并且最高位保持不变。
4.循环左移指令:将操作数的每一位向左循环移动一位,即最高位移动到最低位。
5.循环右移指令:将操作数的每一位向右循环移动一位,即最低位移动到最高位。
二、逻辑运算指令1.逻辑与指令:对操作数进行逻辑与运算,将两个二进制数对应位上的值进行逻辑与操作。
2.逻辑或指令:对操作数进行逻辑或运算,将两个二进制数对应位上的值进行逻辑或操作。
3.逻辑非指令:对操作数进行逻辑非运算,将二进制数的每一位取反。
4.逻辑异或指令:对操作数进行逻辑异或运算,将两个二进制数对应位上的值进行逻辑异或操作。
5.逻辑移位指令:将操作数进行逻辑左移或右移。
三、算术运算指令1.加法指令:对操作数进行加法运算,并将运算结果保存到指定的寄存器或存储器中。
2.减法指令:对操作数进行减法运算,并将运算结果保存到指定的寄存器或存储器中。
3.乘法指令:对操作数进行乘法运算,并将运算结果保存到指定的寄存器或存储器中。
4.除法指令:对操作数进行除法运算,并将运算结果保存到指定的寄存器或存储器中。
5.移位指令:对操作数进行移位运算,包括算术左移、算术右移、循环左移和循环右移。
四、输入输出指令1.读取输入指令:从指定的输入设备读取数据,并将数据保存到指定的寄存器或存储器中。
2.输出显示指令:将指定的数据从寄存器或存储器中读取,并显示到指定的输出设备上。
3.端口输入指令:从指定的端口读取数据,并将数据保存到指定的寄存器或存储器中。
4.端口输出指令:将指定的数据从寄存器或存储器中读取,并输出到指定的端口上。
单片机指令大全
![单片机指令大全](https://img.taocdn.com/s3/m/7b846be929ea81c758f5f61fb7360b4c2e3f2a6c.png)
单片机指令大全单片机(Microcontroller)是一种集成了微处理器、存储器和输入/输出接口等功能的芯片,广泛应用于各种电子设备中。
在单片机的编程过程中,指令起到了至关重要的作用,指令的正确使用能够充分发挥单片机的性能和功能。
本文将详细介绍单片机常用的指令,并提供相应的格式和示例,以便读者更好地理解和运用。
一、数据传送指令数据传送指令用于从一个位置传送数据到另一个位置,常见的指令有MOV(Move)和LDR(Load Register)等。
1. MOV指令MOV指令用于将一个数据从一个位置复制到另一个位置。
格式如下:MOV 目的操作数,源操作数示例:MOV A, B ; 将寄存器B的值赋给寄存器AMOV R1, #10 ; 将立即数10赋给寄存器R12. LDR指令LDR指令用于将数据从存储器中加载到寄存器中。
格式如下:LDR 目的寄存器,来源地址示例:LDR R0, 0x1000 ; 将存储器地址0x1000处的数据加载到寄存器R0二、算术运算指令算术运算指令用于进行数值运算,如加法、减法、乘法和除法等。
常见的指令有ADD(Addition)和SUB(Subtraction)等。
1. ADD指令ADD指令用于进行加法运算,并将结果保存到指定的目标操作数中。
格式如下:ADD 目的操作数,源操作数示例:ADD A, B ; 将寄存器A和寄存器B的值相加,并将结果保存到寄存器A2. SUB指令SUB指令用于进行减法运算,并将结果保存到指定的目标操作数中。
格式如下:SUB 目的操作数,源操作数示例:SUB A, B ; 将寄存器A的值减去寄存器B的值,并将结果保存到寄存器A三、逻辑运算指令逻辑运算指令用于进行与、或、非、移位等逻辑操作。
常见的指令有AND(And)、OR(Or)和NOT(Not)等。
1. AND指令AND指令用于进行与运算,并将结果保存到指定的目标操作数中。
格式如下:AND 目的操作数,源操作数示例:AND A, B ; 将寄存器A和寄存器B的值进行与运算,并将结果保存到寄存器A2. OR指令OR指令用于进行或运算,并将结果保存到指定的目标操作数中。
单片机汇编语言指令.
![单片机汇编语言指令.](https://img.taocdn.com/s3/m/a9163ff7856a561252d36f55.png)
汇编指令常用单片机汇编指令:1 .MOV A,Rn 寄存器内容送入累加器2 .MOV A,direct 直接地址单元中的数据送入累加器3 .MOV A,@Ri (i=0,1间接RAM 中的数据送入累加器4 .MOV A,#data 立即数送入累加器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.11 .MOV direct,@Ri (i=0,1间接RAM 中的数据送入直接地址单元12.12 MOV direct,#data 立即数送入直接地址单元13.13 .MOV @Ri,A (i=0,1累加器内容送间接RAM 单元14.14 .MOV @Ri,direct (i=0,1直接地址单元数据送入间接RAM 单元15.15 .MOV @Ri,#data (i=0,1立即数送入间接RAM 单元16 .MOV DPTR,#data1616.16 位立即数送入地址寄存器17.17 .MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器18.18 .MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器19.19 .MOVX A,@Ri (i=0,1外部RAM(8 位地址送入累加器20.20 .MOVX A,@DPTR 外部RAM(16 位地址送入累加器21.21 .MOVX @Ri,A (i=0,1累计器送外部RAM(8 位地址22.22 .MOVX @DPTR,A 累计器送外部RAM(16 位地址23.23 .PUSH direct 直接地址单元中的数据压入堆栈24.24 .POP direct 弹栈送直接地址单元25.25 .XCH A,Rn 寄存器与累加器交换26.26 .XCH A,direct 直接地址单元与累加器交换27.27 .XCH A,@Ri (i=0,1间接RAM 与累加器交换28.28 .XCHD A,@Ri (i=0,1间接RAM 的低半字节与累加器交换算术操作类指令:1. ADD A,Rn 寄存器内容加到累加器2 .ADD A,direct 直接地址单元的内容加到累加器3 A.DD A,@Ri (i=0,1间接ROM 的内容加到累加器4 .ADD A,#data 立即数加到累加器5 .ADDC A,Rn 寄存器内容带进位加到累加器6 .ADDC A,direct 直接地址单元的内容带进位加到累加器7 .ADDC A,@Ri(i=0,1 间接ROM 的内容带进位加到累加器8 .ADDC A,#data 立即数带进位加到累加器9 .SUBB A,Rn 累加器带借位减寄存器内容10.SUBB A,direct 累加器带借位减直接地址单元的内容11.11 .SUBB A,@Ri (i=0,1累加器带借位减间接RAM 中的内容12.12 .SUBB A,#data 累加器带借位减立即数13.13 .INC A 累加器加114.14 .INC Rn 寄存器加115.15 .INC direct 直接地址单元加116.16 .INC @Ri (i=0,1间接RAM 单元加117.17 .DEC A 累加器减118.18 .DEC Rn 寄存器减119.19 .DEC direct 直接地址单元减120.20 .DEC @Rj 间接RAM 单元减121.21 .INC DPTR 地址寄存器DPTR 加122.22 .MUL AB A 乘以B,结果放在A23.23 .DIV AB A 除以B,结果放在A24.24. 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.11 .MOV C,bit 直接地址位送入进位位12.12 .MOV bit,C 进位位送入直接地址位13.13 .JC rel 进位位为1 则转移14.14 .JNC rel 进位位为0 则转移15.15 .JB bit,rel 直接地址位为1 则转移16.16 .JNB bit,rel 直接地址位为0 则转移17.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.11. ORL direct,A 直接地址单元与累加器相“或”12.12 .ORL direct,#data 直接地址单元与立即数相“或”13.13 .XRL A,Rn 累加器与寄存器相“异或”14.14 .XRL A,direct 累加器与直接地址单元相“异或”15.15 .XRL A,@Ri 累加器与间接RAM 单元单元相“异或”16.16 .XRL A,#data 累加器与立即数相“异或”17.17 .XRL direct,A 直接地址单元与累加器相“异或”18.18 .XRL direct,#data 直接地址单元与立即数相“异或”19.19 .CLR A 累加器清“0”20.20 .CPL A 累加器求反21.21 .RL A 累加器循环左移22.22 .RLC A 累加器带进位位循环左移23.23 .RR A 累加器循环右移24.24 .RRC A 累加器带进位位循环右移25.25 .SW AP 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.10. JNZ rel 累加器非零转移11.11. CJNE A,direct,rel 累加器与直接地址单元比较,不相等则转移12.12 .CJNE A,#data,rel 累加器与立即数比较,不相等则转移13.13 .CJNE Rn,#data,rel 寄存器与立即数比较,不相等则转移14.14 .CJNE @Ri,#data,rel 间接RAM 单元与立即数比较,不相等则转移15.15 .DJNZ Rn,rel 寄存器减1,非零转移16.16 .DJNZ direct,erl 直接地址单元减1,非零转移17.17 .NOP 空操作。
单片机常用指令
![单片机常用指令](https://img.taocdn.com/s3/m/7ffa3f693868011ca300a6c30c2259010302f376.png)
单片机常用指令单片机是一种集成在一个芯片上的微型计算机,广泛应用于各种电子设备中。
要让单片机按照我们的意愿工作,就需要给它下达各种指令。
下面就来介绍一些单片机常用的指令。
一、数据传送指令这一类指令用于在单片机内部的寄存器、存储器之间进行数据的传输。
比如“MOV”指令,它可以将一个数据从源操作数传送到目的操作数。
例如“MOV A, 50H”,就是把十六进制数 50H 传送到累加器 A 中。
“MOVX”指令则用于在单片机与外部数据存储器之间进行数据传送。
比如“MOVX A, @DPTR”,可以从外部数据存储器中读取数据到累加器 A 。
二、算术运算指令用于执行加、减、乘、除等算术运算。
“ADD”指令用于加法运算,“SUBB”指令用于带借位的减法运算。
例如“ADD A, R0”,将累加器 A 的值和寄存器 R0 的值相加,结果存放在累加器 A 中。
“MUL”指令用于乘法运算,它将累加器 A 和寄存器 B 中的两个 8 位无符号数相乘,结果的低 8 位存放在累加器 A 中,高 8 位存放在寄存器 B 中。
三、逻辑运算指令进行与、或、异或等逻辑操作。
“ANL”指令执行逻辑与操作,“ORL”指令执行逻辑或操作,“XRL”指令执行逻辑异或操作。
例如“ANL A, 0FH”,将累加器 A 的值和十六进制数 0FH 进行逻辑与运算,结果存放在累加器 A 中。
四、控制转移指令这类指令用于改变程序的执行流程。
“JMP”指令用于无条件跳转,直接跳转到指定的地址去执行程序。
例如“JMP 1000H”,程序将跳转到地址为 1000H 的地方继续执行。
“CJNE”指令用于比较两个操作数,如果不相等则跳转。
比如“CJNE A, 50H, LOOP”,如果累加器 A 的值不等于 50H ,就跳转到标号 LOOP 处执行。
“LCALL”和“ACALL”指令用于调用子程序。
“LCALL”可以调用64KB 范围内的子程序,而“ACALL”只能调用 2KB 范围内的子程序。
(完整版)单片机指令大全
![(完整版)单片机指令大全](https://img.taocdn.com/s3/m/940dacb1aaea998fcd220e60.png)
一个单片机所需执行指令的集合即为单片机的指令系统。
单片机使用的机器语言、汇编语言及高级语言,但不管使用是何种语言,最终还是要“翻译”成为机器码,单片机才能执行之。
现在有很多半导体厂商都推出了自己的单片机,单片机种类繁多,品种数不胜数,值得注意的是不同的单片机它们的指令系统不一定相同,或不完全相同。
但不管是使用机器语言、汇编语言还是高级语言都是使用指令编写程序的。
所谓机器语言即指令的二进制编码,而汇编语言则是指令的表示符号。
在指令的表达式上也不会直接使用二进制机器码,最常用的是十六进制的形式。
但单片机并不能直接执行汇编语言和高级语言,都必须通过汇编器“翻译”成为二进制机器码方能执行,但如果直接使用二进制来编写程序,那将十分不便,也很难记忆和识别,不易编写、难于辨读,极易出错,同时出错了也相当难查找。
所以现在基本上都不会直接使用机器语言来编写单片机的程序。
最好的办法就是使用易于阅读和辨认的指令符号来代替机器码,我们常称这些符号为助记符,用助记符的形式表示的单片机指令就是汇编语言,为便于记忆和阅读,助记符号通常都使用易于理解的英文单词和拼音字母来表示。
每种单片机都有自己独特的指令系统,那么指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须理解和遵循这些指令标准,要掌握某种(类)单片机,指令系统的学习是必须的。
MCS-51共有111条指令,可分为5类:[1].数据传送类指令(共29条)[2].算数运算类指令(共24条)[3].逻辑运算及移位类指令(共24条)[4].控制转移类指令(共17条)[5].布尔变量操作类指令(共17条)一些特殊符号的意义在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。
Rn——当前选中的寄存器区的8个工作寄存器R0—R7(n=0-7)。
Ri——当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)direct—内部数据存储单元的8位地址。
单片机指令表汇总
![单片机指令表汇总](https://img.taocdn.com/s3/m/09c7a6377ed5360cba1aa8114431b90d6c8589fd.png)
51单片机指令表汇总51单片机是一种广泛应用的微控制器,其指令集是进行编程的基础。
下面将51单片机的指令表进行汇总,以帮助初学者更好地理解其指令集。
一、数据传输指令1、MOV指令:将源操作数的内容传送到目标操作数。
2、XCH指令:将两个操作数的内容互换。
3、MOVC指令:从外部存储器将数据传送到目标操作数。
4、MOVX指令:将外部存储器中的数据传送到目标操作数。
5、PUSH指令:将数据压入堆栈。
6、POP指令:从堆栈中弹出数据。
二、算术运算指令1、ADD指令:将两个操作数相加,并将结果存放在目标操作数中。
2、SUB指令:从目标操作数中减去源操作数,并将结果存放在目标操作数中。
3、MUL指令:将两个操作数相乘,并将结果存放在目标操作数中。
4、DIV指令:将目标操作数除以源操作数,并将结果存放在目标操作数中。
5、ANL指令:对目标操作数和源操作数进行按位与运算,并将结果存放在目标操作数中。
6、ORL指令:对目标操作数和源操作数进行按位或运算,并将结果存放在目标操作数中。
7、XRL指令:对目标操作数和源操作数进行按位异或运算,并将结果存放在目标操作数中。
8、CPL指令:对目标操作数进行按位取反运算,并将结果存放在目标操作数中。
9、INC指令:将目标操作数加1。
10、DEC指令:将目标操作数减1。
11、ASR指令:将目标操作数右移n位,最高位用符号位补齐。
12、LSR指令:将目标操作数右移n位,最低位用0补齐。
13、ROL指令:将目标操作数循环左移n位,最高位移入最低位。
14、ROR指令:将目标操作数循环右移n位,最低位移入最高位。
单片机汇编指令表一、概述在单片机的世界里,汇编语言扮演着举足轻重的角色。
它是一种低级语言,能够直接与硬件进行交互,提供高效的代码执行效率。
下面,我们将详细列出一些常见的单片机汇编指令,以及它们的功能。
二、指令表1、MOV指令:用于将数据从一个寄存器移动到另一个寄存器。
例如,MOV R1, R2将把 R2的内容移动到 R1中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为CPU识别并执行的指令的集合就是该CPU的指令系统。
MCS-51单片机汇编语言指令格式:操作符目的操作数,源操作数指令中的常用符号Rn: n=(0~7),表示当前工作寄存器R0~R7中的一个Ri: i=(0、1),代表R0和R1寄存器中的一个,用作间接寻址寄存器dir : 8 位直接字节地址(片内RAM 和SFR )#data: 8位立即数,即8位常数。
可以为2进制(B)、10进制、16进制(H)、字符(‘ ’)#data16: 表示16位立即数,即16位常数,取值范围为#0000H~#0FFFFHaddr16 : 表示16位地址addr11 : 表示11位地址rel : 相对偏移量(为一字节补码)用于相对转移指令中bit :位地址,在位地址空间中。
$: 表示当前指令的地址。
寻址方式1、立即寻址指令中直接给出操作数的寻址方式。
在51系列单片机的指令系统中,立即数用一个前面加“#“号的8位数(#data,如#30H)或16位数(#data16,如#2052H)表示。
立即寻址中的数,称为立即数。
例如指令:MOV A,#30H2、直接寻址操作数的地址直接出现在指令中。
寻址对象:①内部数据存贮器:使用它的地址。
②特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。
3、寄存器寻址操作数存放在寄存器中。
寻址对象:A,B,DPTR,R0~R7 。
B 仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。
A 可以寄存器寻址又可以直接寻址,直接寻址时写作ACC例如:MOV A,R0 ;R0→A,A、R0均为寄存器寻址,机器码E8MUL AB ;A*B→BA,A、B为寄存器寻址,机器码A4MOV B,R0 ;R0→B,R0为寄存器寻址,B为直接寻址机器码88F0,其中F0为B的字节地址(见表1-2)PUSH ACC ;A的内容压入堆栈机器码C0E04、寄存器间址操作数存放在以寄存器内容为地址的单元中。
例如:MOV R0,#20HMOV @R0,A ;A→(20H) 地址的内部RAMMOVX A,@R1 ;外部RAM(地址为P2 R1 )的内容→AMOVX @DPTR,A ;A→以DPTR内容为地址的外部RAM5、变址寻址以DPTR或PC寄存器内容为基地址,和A的内容为相加形成操作数的地址。
其中累加器A内容是可变的。
例如:MOVC A, @A+DPTR6、相对寻址相对寻址是将程序计数器PC的当前值与指令第二字节给出的偏移量相加,从而形成转移的目标地址。
例如:JZ 61H7、位寻址对片内RAM中20H~2FH中的128个位地址及SFR中的可位寻址的位地址寻址。
例如:MOV C,20H;20H位的内容送CY标志位,C称为位累加器。
MOV A,20H ;字节寻址,将内部RAM中20H单元中的内容送给累加器A。
以上两条指令均为寻址,究竟是位寻址还是字节寻址,根据两操作数类型一致的原则,由另一个操作数决定。
例R1=20H,(20H)=55H,指令MOV A,@R1执行后,A=55H。
例(40H)=30H,指令MOV R7,40H 执行后,R7=30H。
例MOV R7,#40H 执行后,R7=40H。
MOVX指令举例例: 实现片外数据存储器数据传送(2000H)→(2100H)。
使用P2口和8位寄存器Ri间址:MOV P2,#20H ;高位地址MOV R0,#00 ;低位地址MOVX A,@R0 ;读片外RAMMOV P2,#21H ;改变高位地址MOVX @R0,A ;写片外RAM查表指令MOVC注:①只能从程序存储器读取数据到A累加器。
②只能使用变址间接寻址方式多用于查常数表程序,直接求取常数表中的函数值1)DPTR为基址寄存器MOVC A,@A+DPTR ;A←(A+DPTR)查表范围为64KB 程序存储器任意空间。
例查表法求Y=X2。
设X(0≤X≤15)在片内RAM 20H单元,要求将查表求Y,存入片内RAM 21H单元1)用DPTR作基址寄存器ORG 0100HSQU: MOV DPTR,#TAB ;确定表首地址MOV A,20H ;取XMOVC A,@A+DPTR ;查表求Y=X2MOV 21H,A ;保存YRET ;子程序结束…;其它程序段2)用PC作基址寄存器指令地址源程序ORG 0100H ;程序起始地址0100H SQU: MOV A,20H ;取X0102H ADD A,#3 ;修正偏移量0104H MOVC A,@A+PC ;查表求Y=X20105H MOV 21H,A ;存结果0107H RET ;子程序结束0108H TAB: DB 00,01,04 ;平方表010BH DB 09,…,2253.堆栈操作指令例:设A=02,B=56H,执行下列指令序列后,SP = ?A = ?,B = ?2.2.2 交换指令实现片内RAM区的数据双向传送1. 字节交换指令XCH A,Rn ;A←→RnXCH A,@Ri ;A←→(Ri)XCH A,n ;A ←→(n)2. 半字节交换指令例将片内RAM 2AH和2BH单元中的ASCII码转换成压缩式BCD码存入20H单元算术类指令的操作意义非常明确,不一一赘述,注意减指令只有带借位减,因此在多字节减法中,最低字节作减法时,注意先清CY。
逻辑运算是按位进行的,两数运算的运算法则是:与:有“0”则“0”;或:有“1”则“1”异或:同为“0” ,异为“1”;与“0”异或值不变:与“1”异或值变反。
逻辑指令常用于对数据位进行加工。
3. 十进制调整指令计算机完成二进制加法其和也为二进制,如果是十进制相加(即BCD码相加)想得到十进制的结果,就必须进行十进制调整(即BCD 码调整)。
调整指令:DA A ;将A中二进制相加和调整成BCD码调整方法:和低4位大于9或有半进位则低4位加6;和的高4位大于9或有进位,则高4位加6。
指令根据相加和及标志自行进行判断,因此该指令应紧跟在加指令之后,至少在加指令和该指令之间不能有影响标志的指令。
DA A指令只对一个字节和调整,如为多字节相加必须进行多次调整。
此指令不能对减法结果进行调整。
例完成56+17的编程。
MOV A,#56H ;A存放BCD码56HMOV B,#17H ;B存放BCD码17HADD A,B ;A=6dHDA A ;A=73HSJMP $指令对标志位的影响有如下规律:1)凡是对A 操作指令(包括传送指令)都将A中1个的奇偶反映到PSW的P标志位上。
即A中奇数个“1”,P=1;偶数个“1”,P=0。
2)传送指令、加1、减1 指令、逻辑运算指令不影响Cy、OV、AC 标志位。
3)加减运算指令影响标志位,乘除指令使Cy=0,当乘积大于255,或除数为0时,OV 置1。
4)对进位位Cy(指令中用C表示)进行操作的指令和大环移指令,显然会影响Cy。
具体指令对标志位的影响可参阅附录A。
标志位的状态是控制转移指令的条件,因此指令对标志位的影响应该记住。
控制转移指令这一类指令的功能是改变指令的执行顺序,转到指令指示的新的PC地址执行。
MCS-51单片机的控制转移指令有以下类型:无条件转移:无需判断,执行该指令就转移到目的地址。
条件转移:需判断标志位是否满足条件,满足条件转移到目的地址,否则顺序执行。
绝对转移:转移的目的地址用绝对地址指示,通常为无条件转移。
相对转移:转移的目的地址用相对于当前PC的偏差(偏移量)指示,通常为条件转移。
长转移或长调用:目的地址距当前PC 64KB地址范围内。
短转移或短调用:目的地址距当前PC 2KB地址范围。
1.长调用LCALL addrl16 ;addr16→PC0~15说明:(1)该指令功能是①保护断点,即当前PC(本指令的下一条指令的首地址)压入堆栈。
②子程序的入口地址addr16 送PC,转子程序执行。
(2)本指令为64KB地址范围内的调子程序指令,子程序可在64KB地址空间的任一处。
(3)本指令的机器码为三字节12 addr16。
2.短调用ACALL addr11 ;addr11→PC0~10说明:(1)该指令的功能是①保护断点,即当前PC压入堆栈。
②addrl11→PC0~10,而PC11~15保持原值不变。
(2)本指令为2KB地址范围的调子程序指令,子程序入口距当前PC不得超过2KB地址范围。
(3)本指令的机器码为二字节,设addr11的各位是a10a9a8…a2a1a0,则ACALL指令机器码a10a9a810001a7a6a5a4a3a2a1a0,其中10001是ACALL指令的操作码。
例子程序调用指令ACALL在程序存储器中的首地址为0100H,子程序入口地址为0205H。
试确定能否使用ACALL指令实现调用?如果能使用,确定该指令的机器码。
解: 因为ACALL指令首地址在0100H,而ACALL是2字节指令,所以下一条指令的首地址在0102H。
0102H和0250H在同一2KB地址范围内,故可用ACALL调用。
调用入口地址为0250H,ACALL指令的机器码形式为:000B=5150H。
3.子程序返回指令RET ;从调用子程序返回。
功能:从栈顶弹出断点到PC。
RETI ;从中断服务程序返回。
功能:从栈顶弹出断点到PC,并恢复中断优先级状态触发器。
2.4.2 转移指令1. 无条件转移指令(1)短转移AJMP addr11 ;addr11→PC0~10说明:①转移范围:本指令为2KB地址范围内的转移指令。
对转移目的地址的要求与ACALL指令对子程序入口地址的要求相同。
②机器码形式:本指令为2字节指令。
设addr11的各位是a10a9a8…a2a1a0,则指令的机器码为a10a9a800001a7a6a5a4a3a2a1a0。
(2)长转移LJMP addr16 ;addr16→PC0~15说明:①本指令为64KB程序存储空间的全范围转移指令。
转移地址可为16位地址中的任意值。
②本指令为3字节指令02 addr16。
(3)间接转移JMP @A+DPTR ;A+DPTR→PC例A=02H,DPTR=2000H,指令JMP @A+DPTR执行后,PC=2002H。
也就是说,程序转移到2002H地址单元去执行。
例现有一段程序如下:MOV DPTR,#TABLEJMP @A+DPTRTABLE:AJMP PROC0AJMP PROC1AJMP PROC2AJMP PROC2根据JMP @A+DPTR指令的操作可知,当A=00H时,程序转入到地址PROC0 处执行;当A=02H时,转到PROC1处执行……可见这是一段多路转移程序,进入的路数由A确定。
因为AJMP指令是2字节指令,所以A 必须为偶数。