C51控制转移类指令及位操作指令
C51指令表

)→))C51汇编伪指令:1、DS ---预留存储区命令格式:〔标号:〕DS 表达式值其功能是从指定地址开始,定义一个存储区,以备源程序使用。
存储区预留的存储单元数由表达式的值决定。
TMP: DS 1从标号TEP地址处开始保留1个存储单元(字节)。
2、BIT---定义位命令格式:字符名称BIT 位地址其功能用于给字符名称定义位地址。
SPK BIT P3.7经定义后,允许在指令中用SPK代替P3.7。
3、USING指令USING指令通知汇编器使用8051的哪一个工作寄存器组。
格式:USING 表达式(值必须为0-3,默认值为0。
)USING 0使用第0组工作寄存器。
4、SEGMENT指令SEGMENT 指令用来声明一个再定位段和一个可选的再定位类型。
格式:再定位段名SEGMENT 段类型〔再定位类型〕其中,“再定位段名”用于指明所声明的段。
“段类型”用于指定所声明的段将处的存储器地址空间。
可用的段类型有CODE、XDA TA、DA TA、IDA TA和BIT。
STACK_SEG SEGMENT IDA TADA TA_SEG SEGMENT DATA5、RSEG---再定位段选择指令再定位段选择指令为RSEG,用于选择一个已在前面定义过的再定位段作为当前段。
格式:RSEG 段名段名必须是在前面已经声明过的再定位段。
DA TA_SEG SEGMENT DATA ;声明一个再定位DATA段RSEG DATA_SEG ;选择前面声明的再定位DA TA段作为当前段6、绝对段选择指令CSEG---绝对代码段DSEG---内部绝对数据段XSEG---外部绝对数据段ISEG---内部间接寻址数据段BSEG---绝对位寻址数据段格式:CSEG [AT 绝对地址表达式]DSEG [AT 绝对地址表达式]XSEG [AT 绝对地址表达式]ISEG [AT 绝对地址表达式]BSEG [AT 绝对地址表达式]括号内是可选项,用来指定当前绝对段的基地址。
MCS-51指令系统

4、控制转移类指令(二)
无条件转移:(LJMP,AJMP,SJMP,JMP—4条) LJMP addr16 长跳转指令
——可在64K范围内跳转 AJMP addr11 绝对跳转指令
——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令
——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令
1
累加器清零/取反操作 (CLR,CPL—2条)
CLR A —对累加器清零
1 Byte 1 Tm
CPL A ——对累加器按位取非 1 Byte 1 Tm 15
3、逻辑运算及移位类指令(三)
逻辑运算指令在程序中的应用(下面的例子认为Acc 的内容为9AH)
逻辑与ANL运算用于对某些位进行清0或者保留: 例: ANL A, #0FH; 则(A) = 0AH
位清零/置位指令(4条): CLR bit(或C) —— (bit或 C)“0” SETB bit(或C) —— (bit或 C)“1”
位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 注: “/bit”表示对bit位先取反然后再参加运算
带借位减法(SUBB):(A) ← (A)- (Cy)- (第二操作数)
10
2、算术运算类指令(三)
加1/减1操作: (INC,DEC—9条) INC, DEC与用加/减法指令做加1/减1 操作不 同之处在于INC、DEC不影响标志位。
单字节乘/除运算: (MUL,DIV—2条) 两个单字节数的乘/除法运算只在A与B之间 进行。 MUL AB: (A)与(B)相乘, 积为16位数,
51系列单片机指令表

E5direct
2
1
MOVdirect.A
累加器A送直接寻址单元
F5direct
2
I
MOVRn.#data
立即数送寄存器
78~7Fdata
2
I
MOVdirect,#data
立即数送直接寻址单元
75directdata
3
2
MOV@Ri,#data
立即数送内部RAM单元
76~77data
2
1
MOVdirect,Rn
寄存器送直接寻址单元
88~8Fdireci
2
2
MOVRn.direct
直接寻址单元送寄存器
A8~AFdirect
2
2
MOVdirect.@Ri
内部RAM单元送直接寻址单元
86~87direct
2
2
MOV@Ri,direct
直接寻址单元送内部RAM单元
A6-A7direct
DOdireci
2
2
PUSHdirect
直接寻址单元压入栈顶
COdirect
2
2
算术运算类指令
指令
功能简述
指令代码
字节
数
T
ADDA,Rn
累加器A加寄存器
28-2F
1
1
ADDA.@Ri
累器A加内部RAM单元
26-27
1
I
ADDA.direct
照加器A加直接寻址单元
25direct
2
1
ADDA.#data
盛加器A与寄存器交换
C8~CF
1
1
XCHA,@Ri
C51指令集

51指令集指令格式 功能简述 字节数 周期一、数据传送类指令MOV A, Rn 寄存器送累加器 1 1MOV Rn,A 累加器送寄存器 1 1MOV A ,@Ri 内部RAM单元送累加器 1 1MOV @Ri ,A 累加器送内部RAM单元 1 1MOV A ,#data 立即数送累加器 2 1MOV A ,direct 直接寻址单元送累加器 2 1MOV direct ,A 累加器送直接寻址单元 2 1MOV Rn,#data 立即数送寄存器 2 1MOV direct ,#data 立即数送直接寻址单元 3 2MOV @Ri ,#data 立即数送内部RAM单元 2 1MOV direct ,Rn 寄存器送直接寻址单元 2 2MOV Rn ,direct 直接寻址单元送寄存器 2 2MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR ,#data16 16位立即数送数据指针 3 2MOVX 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 2XCH A ,Rn 累加器与寄存器交换 1 1XCH A ,@Ri 累加器与内部RAM单元交换 1 1XCHD A ,direct 累加器与直接寻址单元交换 2 1XCHD A ,@Ri 累加器与内部RAM单元低4位交换 1 1 SWAP A 累加器高4位与低4位交换 1 1POP direct 栈顶弹出指令直接寻址单元 2 2PUSH direct 直接寻址单元压入栈顶 2 2二、算术运算类指令ADD A, Rn 累加器加寄存器 1 1ADD A, @Ri 累加器加内部RAM单元 1 1ADD A, direct 累加器加直接寻址单元 2 1ADD A, #data 累加器加立即数 2 1ADDC A, Rn 累加器加寄存器和进位标志 1 1ADDC A, @Ri 累加器加内部RAM单元和进位标志 1 1 ADDC A, #data 累加器加立即数和进位标志 2 1ADDC A, direct 累加器加直接寻址单元和进位标志 2 1 INC A 累加器加1 1 1INC Rn 寄存器加1 1 1INC direct 直接寻址单元加1 2 1INC @Ri 内部RAM单元加1 1 1INC DPTR 数据指针加1 1 2DA A 十进制调整 1 1SUBB A, Rn 累加器减寄存器和进位标志 1 1SUBB A, @Ri 累加器减内部RAM单元和进位标志 1 1 SUBB A, #data 累加器减立即数和进位标志 2 1SUBB A, direct 累加器减直接寻址单元和进位标志 2 1 DEC A 累加器减1 1 1DEC Rn 寄存器减1 1 1DEC @Ri 内部RAM单元减1 1 1DEC direct 直接寻址单元减1 2 1MUL AB 累加器乘寄存器B 1 4DIV AB 累加器除以寄存器B 1 4三、逻辑运算类指令ANL A, Rn 累加器与寄存器 1 1ANL A, @Ri 累加器与内部RAM单元 1 1ANL A, #data 累加器与立即数 2 1ANL A, direct 累加器与直接寻址单元 2 1ANL direct, A 直接寻址单元与累加器 2 1ANL direct, #data 直接寻址单元与立即数 3 1ORL A, Rn 累加器或寄存器 1 1ORL A,@Ri 累加器或内部RAM单元 1 1ORL A,#data 累加器或立即数 2 1ORL A,direct 累加器或直接寻址单元 2 1ORL direct, A 直接寻址单元或累加器 2 1ORL direct, #data 直接寻址单元或立即数 3 1XRL A, Rn 累加器异或寄存器 1 1XRL A,@Ri 累加器异或内部RAM单元 1 1XRL A,#data 累加器异或立即数 2 1XRL A,direct 累加器异或直接寻址单元 2 1XRL direct, A 直接寻址单元异或累加器 2 1XRL direct, #data 直接寻址单元异或立即数 3 2RL A 累加器左循环移位 1 1RLC A 累加器连进位标志左循环移位 1 1RR A 累加器右循环移位 1 1RRC A 累加器连进位标志右循环移位 1 1CPL A 累加器取反 1 1CLR A 累加器清零 1 1四、控制转移类指令类ACCALL addr11 2KB范围内绝对调用 2 2AJMP addr11 2KB范围内绝对转移 2 2LCALL addr16 2KB范围内长调用 3 2LJMP addr16 2KB范围内长转移 3 2SJMP rel 相对短转移 2 2JMP @A+DPTR 相对长转移 1 2RET 子程序返回 1 2RET1 中断返回 1 2JZ rel 累加器为零转移 2 2JNZ rel 累加器非零转移 2 2CJNE A ,#data ,rel 累加器与立即数不等转移 3 2CJNE A ,direct ,rel 累加器与直接寻址单元不等转移 3 2 CJNE Rn,#data ,rel 寄存器与立即数不等转移 3 2CJNE @Ri ,#data,rel RAM单元与立即数不等转移 3 2 DJNZ Rn ,rel 寄存器减1不为零转移 2 2DJNZ direct ,rel 直接寻址单元减1不为零转移 3 2NOP 空操作 1 1五、布尔操作类指令MOV C, bit 直接寻址位送C 2 1MOV bit, C C送直接寻址位 2 1CLR C C清零 1 1CLR bit 直接寻址位清零 2 1CPL C C取反 1 1CPL bit 直接寻址位取反 2 1SETB C C置位 1 1SETB bit 直接寻址位置位 2 1ANL C, bit C逻辑与直接寻址位 2 2ANL C, /bit C逻辑与直接寻址位的反 2 2 ORL C, bit C逻辑或直接寻址位 2 2ORL C, /bit C逻辑或直接寻址位的反 2 2 JC rel C为1转移 2 2JNC rel C为零转移 2 2JB bit,rel 直接寻址位为1转移 3 2JNB bit,rel 直接寻址为0转移。
c51调汇编移位函数

C51调汇编移位函数详解引言在C51单片机编程中,移位操作是一种常见的操作。
移位操作可以将一个数的二进制表示在内部进行左移或右移,从而改变数的值。
C51提供了一些用于实现移位功能的汇编指令,如RL、RR、SL、SR等。
为了方便使用这些指令,可以编写一些特定函数来实现不同类型的移位操作。
本文将详细解释C51调汇编移位函数中的特定函数,包括函数的定义、用途和工作方式等。
函数定义在C语言中,可以使用__asm关键字来嵌入汇编代码。
通过嵌入汇编代码,可以直接调用C51提供的汇编指令。
下面是一个示例函数left_shift()的定义:void left_shift(unsigned char *data, unsigned char count) {__asmmov r0, dpl ; 将data指针中的值赋给r0寄存器mov r1, dph ; 将data指针中的高字节值赋给r1寄存器mov a, count ; 将count赋给累加器astart:rl a ; 左移累加器amovx @r0, a ; 将累加器a的值写入data指针所指向的内存inc r0 ; data指针自增1djnz r1, start ; 如果r1不为0,则跳转到start标签处继续执行__endasm;}函数用途left_shift()函数的作用是将一个字节的数据进行左移操作。
左移操作是指将一个数的二进制表示向左移动指定的位数,低位补零。
这种操作可以用来实现乘以2的幂次方运算。
例如,对于数据0b00001010,左移一位后得到0b00010100,等价于乘以2。
函数工作方式left_shift()函数使用了C51提供的汇编指令rl和movx来实现左移操作。
下面是函数工作方式的详细解释:1.将传入的指针data中存储的值分别赋给寄存器r0和r1。
寄存器r0用于访问data指针所指向的内存地址,寄存器r1用于保存data指针所指向内存地址的高字节。
C51中移位运算

在汇编中用RR RRC RL RLC就很容易实现移位,在c51中利用<<,>>就很容易的实现移出。
移入就显得比较麻烦,特别是右移入。
(1:)送数送两个单独字节的数据的程序,左送 &0x80(左移给数) ,从最高位-最低位顺序给数右送 &0x01 (右移给数),最低位-最高位给数bit out;out = low & 0x01;low >>= 1;low |= (high & 0x01)<<7;high >>= 1;( 2):取数(不管怎么移入,第一次操作之后获取的那一位数据必须在接受数据的最高位或者最低位上,从而选择是先取数还是先移位)a:如果是先接受高位后接受低位则先左移一位后接受一位数据(i2c总线)uchar i;uchar temp = 0;uchar date = 0x82;for (i = 0; i < 8; i++){temp <<= 1; //左移temp |= (bit)(date & 0x80);date <<= 1;}b:如果是先接受低位,后接受高位则先接受一位数据后循环右移一位(DS18B20)uchar i;uchar temp = 0;uchar date = 0x82;for (i = 0; i < 8; i ++){temp |= (bit)(date & 0x01);date >>= 1;temp = _cror_(temp,1);//循环右移,应用_cror_()需要包含头文件<intrins.h>}如果不用函数则for循环应该这样写for (i = 0; i < 8; i ++){temp >>= 1;temp |= (date & 0x01) << 7; date >>= 1;}(3.)任意一位的置位或者取反运算置位运算low |= 0x01; (置最低位为1)取反运算low |= ~low & 0x01;(4.)合并和拆分数据1:合并两个单字节数据为一个双字节数据 int len;uchar low;uchar high;Len |= high;Len <<= 8;Len |= low;2: 拆分一个双字节数据为两个单字节数据 int len;uchar low;uchar high;low |= len;high |= len >> 8;。
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 单片机指令的一部分,实际应用中还有更多的指令和组合使用方式。
在编程时,合理选择和运用这些指令能够实现各种复杂的功能。
比如,通过数据传送指令来初始化变量和读取外部数据;利用算术运算指令进行数值计算;借助逻辑运算指令处理逻辑关系;使用控制转移指令实现程序的分支和循环;运用位操作指令控制单个引脚的状态。
51单片机条件转移指令

51单片机条件转移指令51单片机是一种常用的单片机芯片,它的条件转移指令在编程中起着重要的作用。
条件转移指令是根据特定的条件来决定程序的执行路径,使得程序具备一定的智能性和灵活性。
下面我们来详细介绍51单片机的条件转移指令以及它们的使用方法和注意事项。
51单片机的条件转移指令主要有以下几种:条件跳转指令、循环控制指令和中断指令。
这些指令可以根据特定的条件来改变程序执行的顺序和逻辑,实现程序的分支和循环控制。
首先,我们来介绍条件跳转指令。
条件跳转指令一般用于根据某个条件来跳转到不同的程序地址。
其中比较常见的有“跳转指令”、“条件判断指令”和“条件转移指令”等。
跳转指令可以根据某个条件来跳转到指定的程序地址,比如“跳转到某个子程序”或“跳转到某个循环体”。
条件判断指令可以根据特定的条件来执行跳转或继续执行下一条指令,比如“如果某个条件成立,就跳转到某个程序地址;否则继续执行下一条指令”。
条件转移指令一般用于根据某个条件转移到不同的程序地址,比如“如果某个条件成立,就转移到某个程序地址;否则继续执行下一条指令”。
其次,我们介绍循环控制指令。
循环控制指令一般用于实现程序的循环执行,其中比较常见的有“循环指令”和“计数器指令”等。
循环指令可以通过设置循环条件来实现程序的循环执行,比如“当某个条件成立时,就一直循环执行某段程序”。
计数器指令一般通过设置一个计数器来实现程序的循环执行,比如“循环执行某段程序一定的次数”。
最后,我们介绍中断指令。
中断指令主要用于处理外部的中断事件,比如“按键中断”和“定时器中断”等。
中断指令可以在程序执行的过程中,根据外部中断事件的发生来中断当前的执行流程,执行中断服务程序,处理完中断事件后,再返回到原来的程序地址继续执行。
在使用51单片机的条件转移指令时,需要注意以下几点。
首先,要根据具体的需求选择合适的条件转移指令,合理组织程序的逻辑结构。
其次,要注意条件转移指令的执行过程中是否会对程序的性能和时序等方面造成影响。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序转移的范围是从(PC)+3为起始的+127~一128B 的单元地址。
6
可编辑ppt
例:温度控制程序
某温度控制系统,A中存温度采样值Ta,(20H)=温度下限 值T20,(30H)=温度上限值T30。若Ta>T30,程序转降温JW, 若Ta<T20,程序转升温SW,若T30≥Ta≥T20程序转FH返回主程 序。
13
可编辑ppt
例:设(PC)=0456H,标号ADR所指的单元为0123H。 执行指令∶ AJMP ADR 执行结果程序转向为(PC)=0123H。
例: 0000H 21 11 07FEH 81 10
0100H
AJMP 0111H ;转移有效
AJMP 0C10H ;当前PC值为0800H ;转移有效
10
可编辑ppt
无条件转移指令
指令 SJMP rel AJMP addr11 LJMP addrl6 JMP @A+DPTR 这类指令的功能是程序无条件地转移到各自指定 的目标地址去执行,不同的指令形成的目标地址不同。
11
可编辑ppt
1. 长转移指令
LJMP addr16
该指令提供16位地址,目标地址由指令第二字 节(高8位地址)和第三字节(低8位地址)组成。因此,程 序转向的目标地址可以包含程序存储器的整个64 KB 空间。
例:设(PC)=0123H,标号ADR所指单元地址为 3456H。
执行指令∶ LJMP ADR
执行结果为(PC)=3456H
程序转向3456H单元执行。
12
可编辑ppt
⒉ 绝对转移指令 AJMP addr11 该指令提供11位地址,目标地址由指令提供的
11位地址去取代当前PC的低11位,形成新的PC值, 即为本绝对转移地址。因此,程序的目标地址必须包 含AJMP指令后第一条指令的第一个字节(即当前PC 地址)在内的2 KB范围内(即高5位地址必须相同)。
减1条件转移指令
DJNZ Rn,rel DJNZ direct,rel 指令功能是:每执行一次本指令,先将指定的Rn或 direct的内容减1,再判别其内容是否为0。若不为0, 转向目标地址,继续执行循环程序;若为0,则结束 循环程序段,程序往下执行。
8
可编辑ppt
例:某应用系统外扩了8K字节RAM,要求把内部 RAM的20H~2FH单元内容发送到外部RAM的 800H~80FH单元中。
满足各自条件时,程序转向指定的目标地址执行(相当于执 行SJMP rel) 。当不满足各自条件时,程序顺序往下执行。
偏移量rel是用补码形式表示的带符号的8 位数,因此.程序 转移的目标地址为指令前128 B或指令后 127 B。
这些指令执行后不影响任何操作数和标志位。
4
可编辑ppt
⒉ 数值比较转移指令 CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,# data,rel CJNE @Ri,#data,rel
第三章 80C51单片机指令系统
本讲教学内容: 控制转移类指令
可编辑ppt
1
控制转移类指令
程序的顺序执行是由PC自动加1来实现的,但在 应用系统中,往往会遇到一些情况,需要强迫改变程 序执行顺序,比如调用子程序,比如根据检测值与设 定值的比较结果要求程序转移到不同的分支入口等。 要改变程序的执行顺序进行分支转向,应通过强迫修 正PC值得方法来实现,这就是控制转移类指令的基本 功能。
CJNE A,30H , LOOP
AJMP FH
;等于T30,转FH
LOOP: JNC JW
;大于T30,降温
CJNE A,20 H,LOOP1
AJMP FH
;等于T20,转FH
LOOP1:JC SW
;小于T20,升温
FH:------
;保温
JW:------
; 降温
SW:------
; 升温
7
可编辑ppt
AJMP 0B11H
;转移无效
14
80C5设有丰富的控制转移指令,可分为无条件转 移指令、条件转移指令、循环转移指令、子程序调用 和返回指令及空操作指令等。
采用助记符有:AJMP、LJMP、SJMP、JZ、 JNZ、CJNE、DJNZ、ACALL、LCALL、RET、 RETI、NOP等13种。
2
可编辑ห้องสมุดไป่ตู้pt
条件转移指令
条件转移指令仅仅在满足指令中规定的条件(如累 加器内容是否为零,两个操作数是否相等) 时才执行无 条件转移,否则程序顺序执行。
6条指令可分为累加器判零转移指令、数值比较 转移指令和减1条件转移指令。
3
可编辑ppt
⒈ 累加器判零转移指令
JZ rel
;若(A)=0,则(PC)=(PC+2)+rel
;若(A)≠0,则(PC)=(PC)+2
JNZ rel
;若(A)≠0,则(PC)= (PC+2)+rel
;若(A)=0,则(PC)=(PC)+2
其指令格式为: CJNE(操作数1),(操作数2),rel 数值比较转移指令是三字节指令,是80C51单片微机
指令系统中仅有的四条三个操作数的指令,在程序设计中非 常有用。同时具有比较转移和数值大小比较的功能。
5
可编辑ppt
比如 CJNE Rn,#data,rel指令
这组指令的功能是对指定的两操作数进行比较,即 (操作数1)-(操作数2) ,但比较结果均不改变两个操作数 的值,仅影响标志位CY。 • 若不等,程序转移到(PC)十3加上第三字节带符号 的8 位偏移量(rel)所指向的目标地址;
执行指令:
MOV
DPTR,#800H
MOV
R0,#20H
MOV
R7,#10H
AGAIN:MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,AGAIN
?:请将以上循环控制改用CJNE指令来实现 ?:请将以上循环控制改用JZ指令来实现
9
可编辑ppt
请看Keil C下演示实例,程序段如下: ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A,#01H JZ Lable1 DEC A JZ Lable2 NOP Lable1: NOP Lable2: MOV B,#0FFH END