第03章 指令系统-02_第1页
第03章 指令系统-02_第2页
第03章 指令系统-02_第3页
第03章 指令系统-02_第4页
第03章 指令系统-02_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023/2/51第3章 指令系统

《单片机原理与应用系统设计》

电子工业出版社,2009.72023/2/52

本章主要内容MCS-51单片机指令概述

7种寻址方式分类介绍89S51单片机的指令系统

2023/2/53

3.1MCS-51单片机指令概述

指令格式

符号说明

2023/2/54

3.1.1指令格式指令的基本格式

例如,工作寄存器向累加器传送数据指令

汇编语言指令为:MOVA,Rn;A为目的操作数,Rn为源操作数

机器码指令为:11101rrr ;rrr=000~111,分别表示R0~R7

2023/2/55

3.1.2符号说明在编写汇编语言源程序时,字母符号是不区分大小写的。在本书中,汇编语言源程序一般采用大写字母。汇编语言源程序符号说明

请参见教材第42页。2023/2/56

3.2寻址方式

寻找操作数或指令的地址的方式称为寻址方式。

寄存器寻址方式直接寻址方式寄存器间接寻址方式立即寻址方式变址寻址方式相对寻址方式位寻址方式2023/2/57

3.2.1寄存器寻址方式寄存器寻址时,指令中的操作数为某一寄存器的内容,指定了寄存器,也就指定了操作数。

寄存器包括:

⑴工作寄存器R0~R7

⑵部分特殊功能寄存器,A、B、DPTR等

例如, MOVA,Rn;A←(Rn),n=0~7

2023/2/58

3.2.2直接寻址方式1.操作数直接以单元地址的形式给出:

MOVA,30H

;A←(30H)

2.寻址范围只限于片内RAM

⑴低128个存储单元,8-bit二进制数表示地址。

⑵特殊功能寄存器,用直接地址或称号表示。

例如:MOVA,80H与MOVA,P0是等价的。2023/2/59

3.2.3寄存器间接寻址方式

寄存器中存放的是操作数的地址在寄存器的名称前面加前缀标志“@”

访问内部RAM或外部数据存储器的低256个字节时,只能采用R0或R1作为间址寄存器。例如:

MOVR1,#40HMOVA,@R1;把内部RAM中地址为40H单元内容送A。2023/2/510

寻址范围:(1)访问内部RAM区,51系列128个字节,52系列256个字节,用R0或R1间接寻址,其通用形式为:

MOVA,@Ri(2)访问片外数据存储器的低256字节,用R0或R1间接寻址,其通用形式为:

MOVXA,@Ri(3)对片外数据存储器的64K字节的间接寻址,用DPTR作间址寄存器。例如:

MOVXA,@DPTR(4)堆栈区堆栈操作指令PUSH(压栈)和POP(出栈)使用堆栈指针(SP)作间址寄存器2023/2/511

3.2.4立即寻址方式

操作数在指令中直接给出,需在操作数前面加前缀“#”,若立即数的首位为A~F,前面还要加零。例如:

MOVA,#40HMOVA,#0FFH

MOVDPTR,#5678H

;DPH←#56H,DPL←#78H2023/2/512

3.2.5变址寻址方式1.变址寻址方式是以程序计数器PC或数据指针DPTR作为基址寄存器,以累加器A作为变址寄存器,它们两者内容之和为有效地址。

数据地址=基地址+偏移量。2.寻址范围:

程序存储器空间。

3.变址寻址方式的指令只有3条:

⑴MOVCA,@A+DPTR ;查表指令

⑵MOVCA,@A+PC ;查表指令

⑶JMP @A+DPTR ;散转指令2023/2/513

3.2.6相对寻址方式

在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址:

目的地址=转移指令所在的地址+转移指令的字节数+rel

偏移量rel是一带符号的8位二进制数补码数。范围是:–128~+1272023/2/514

3.2.7位寻址方式

51系列单片机有位处理功能,可以对数据位进行操作,例如:MOVC,40H;把位40H的值送到位累加器C。寻址范围包括:(1)内部RAM中的位寻址区。(2)特殊功能寄存器中的可寻址位。2023/2/515

特殊功能寄存器可寻址位在指令中有如下4种的表示方法:

a.直接使用位地址

SETB0D5Hb.位名称的表示方法

SETBF0c.特殊功能寄存器符号加位数的表示方法

SETBPSW.5d.单元地址加位数的表示方法

SETB(0D0H).52023/2/516

操作数寻址方式和有关空间2023/2/517

符号注释Rn(n=0-7):当前选中的工作寄存器组R0-R7。Ri(I=0,1):作为地址指针的两个工作寄存器R0,R1。#data:8位立即数。#data16:16位立即数。direct:8位片内RAM单元(包括SFR)的直接地址。addr11:11位目的地址,用于ACALL和AJMP指令中。addr16:16位目的地址。用于LCALL和LJMP指令中。rel:补码表示的8位地址偏移量。范围:-128-+127D。bit:片内RAM或SFR的直接寻址位地址。@:间接寄存器的符号。/:位操作指令中对该位先取反再参与操作,不影响原值。(×):×中的内容。((×)):×指出的地址单元中的内容。→:指令操作流程方向。2023/2/5183.389S51单片机的指令系统按操作功能分类:

1.数据传送类指令(29条)

2.算术运算类指令(24条)

3.逻辑运算及移位类指令(24条)

4.控制转移类指令(17条)

5.位操作类指令(17条)按指令字节分类:

1.单字节指令(49条)

2.双字节指令(45条)

3.三字节指令(17条)

按指令执行时间分类:

1.单周期指令(64条)

2.双周期指令(45条)

3.四周期指令(2条)

2023/2/519

指令学习要点了解指令的操作了解指令的寻址方式了解指令对程序状态字的影响合理使用指令2023/2/520

3.3.1数据传送类指令语句格式:

MOV<目的操作数>,<源操作数>

属“复制”性质,而不是“搬家”

在传送指令中,有从右向左传送数据的约定,即指令的右边操作数是源操作数,表达的是数据的来源,而左边的操作数是目的操作数,表达的是传送数据的目的地址。源操作数:累加器A、工作寄存器Rn、直接地址direct、间址寄存器、立即数。目的操作数:累加器A、工作寄存器Rn、直接地址direct、间址寄存器。

除了奇偶标志位P外,数据传送类指令一般不影响程序状态字PSW的其他标志位,当然,直接访问PSW的指令除外。2023/2/521

8位传送

#data不能用作目的字节;源字节与目的字节不相同(除direct外);寄存器与寄存器、寄存器间址之间不相互传送。传送关系目的源操作数AARnRndirectdirect@Ri@Ri#data一般传送指令2023/2/522

片内数据存储器的数据传送示意图2023/2/523

以A为目的

例:若(R1)=20H,(20H)=55H

执行

MOVA,@R1MOVA,Rndirect@Ri#data结果:(A)=55H。2023/2/524

以Rn

为目的

例:若(50H)=40H

执行

MOVR6,50H

MOVRn,Adirect#data结果:(R6)=40H。2023/2/525

以direct

为目的

例:若(R1)=50H,(50H)=18H

执行MOV40H,@R1

结果:(40H)=18H。

MOVdirect,Rndirect1@Ri#dataAdirect指的是内部RAM或SFR的地址2023/2/526

以@Ri为目的

例:若(R1)=30H,(A)=20H

执行MOV@R1,A结果:(30H)=20HMOV@Ri,Adirect#data2023/2/527

16位传送

将源操作数data16(通常是地址常数)送入目的操作数DPTR中。例如:

MOVDPTR,#1234H

结果为:

(DPH)=12H,(DPL)=34H。2023/2/528

例:MOVA,#30H MOV4FH,A MOVR0,#20H MOV@R0,4FH MOV21H,20H习题:用两种寻址方式实现,将片内RAM60H单元的数据传送给累加器A。解:MOVA,#60H(×)MOVR0,#60H(√)

MOVA,@R0;A=30H;(4FH)=30H;R0=20H;(20H)=30H;(21H)=30HMOVR0,60HMOVA,@R0

(×)

解:MOVA,60H

(√)

结果A=32H顺序执行下列指令序列,求每一步执行结果。2023/2/529

说明:

只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。1.一条指令中不能同时出现两个工作寄存器:

非法指令: MOVR1,R2

MOVR2,@R02.间址寄存器只能使用R0、R1。

非法指令:MOVA,@R23.SFR区只能直接寻址,不能用寄存器间接寻址。

非法指令:MOVR0,#80H

MOVA,@R04.指令表(P309):B:指令字节数,M:机器周期数2023/2/530

ROM查表

2.MOVCA,@A+PC

以PC的当前值与偏移量之和作为程序存储器地址,将该地址单元的内容传送到A。指令执行后PC的内容不变。

特殊传送指令1.MOVCA,@A+DPTR

以DPTR与偏移量之和作为程序存储器地址,将该地址单元的内容传送到A。指令执行后DPTR的内容不变。2023/2/531

程序存储器数据传送示意图2023/2/532

【例1】:(A)=30H,执行地址1000H处的指令1000H:MOVCA,@A+PC

本指令占用一个字节,执行结果将程序存储器中1031H的内容送入A。缺点:表格只能存放在该条查表指令后面的256个单元之内,表格的大小受到限制,且表格只能被一段程序所利用。【例2】:(DPTR)=8100H(A)=40H执行指令MOVCA,@A+DPTR

本指令的执行结果只和指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关,因此表格的大小和位置可以在64K程序存储器中任意安排,一个表格可以为各个程序块公用。2023/2/533

片外数据存储器数据传送示意图2023/2/534

读写片外RAM

1.读片外RAMMOVXA,@DPTRMOVXA,@Ri2.写片外RAM

MOVX@DPTR,AMOVX@Ri,A2023/2/535

例:实现片外数据存储器数据传送(2000H)®(2100H)。

MOVDPTR,#2000H MOVXA,@DPTR MOVDPTR,#2100H MOVX@DPTR,A习题:将片外RAM0000H单元的数据传送到片内RAM的60H单元。

;DPTR=2000H

;A=X

;DPTR=2100H

;(2100H)=X片外数据存储器不能直接寻址。下列为非法指令:

MOVXA,2000HMOVX2100H,2000HDPTRX2023/2/536

堆栈操作3.操作

PUSHdirectPOPdirect1.原则:向地址高端生长,后进先出2.SP:指向栈顶(活动端),复位值07H例:若(SP)=07H,(40H)=88H

执行PUSH40H结果:(SP)=08H,(08H)=88H。2023/2/537

[例1]:当(SP)=60H,(A)=30H,(B)=70H时,执行:PUSHACC;(SP)+1=61H→SP,(A)→61HPUSHB;(SP)+1=62H→SP,(B)→62H

结果:(61H)=30H,(62H)=70H,(SP)=62H[例2]:当(SP)=62H,(62H)=70H,(61H)=30H,执行:POPDPH;((SP))→DPH,(SP)-1→SPPOPDPL;((SP))→DPL,(SP)-1→SP

结果:(DPTR)=7030H,(SP)=60H2023/2/538

数据交换例:若(R0)=80H,(A)=20H。 执行XCHA,R0交换类指令,传送是双向的1.字节交换XCHA,Rndirect@Ri结果:(A)=80H,(R0)=20H。2023/2/539

2.半字节交换

例1:若(R0)=30H,(30H)=67H,(A)=20H。执行XCHDA,@R0后,(A)=27H,(30H)=60H。XCHDA,@RiSWAPA例2:若(A)=30H,执行SWAPA后,(A)=03H。2023/2/540

3.3.2算术运算类指令89S51指令系统具有较强的加、减、乘、除四则运算功能,但只有8bits数据运算指令,没有16bits数据运算指令。共有24条算术运算类指令。2023/2/541

算术运算类指令分类不带进位加法指令带进位加法指令带借位减法指令加1指令减1指令二-十进制调整指令2023/2/542

与数据传送指令不同,多数算术运算指令会影响标志位的状态,即CPU执行算术运算指令后,根据数据操作情况自动设置标志位的状态。

MCS-51的程序状态字寄存器PSW

为标志寄存器。其格式如下:字节地址为D0H位序B7B6B5B4B3B2B1B0位符号CYACF0RS1RS0OVF1P2023/2/543

1.标志位(自动设置状态):1)Cy:进位标志位 保存运算后最高位的进位/借位状态,当有进位/借位,Cy=1,否则Cy=0。2)AC:辅助进位标志位 保存低半字节的进位/借位状态,当D3产生进位/借位,AC=1,否则AC=0。用于十进制调整。3)OV:溢出标志位

OV=Cy7ÅCy6,补码运算产生溢出OV=1,否则OV=0。4)P:奇偶标志位 反映累加器A中数据的奇偶性。当1的个数为奇数,P=1,否则P=0。2023/2/544

2.用户选择位(编程设置状态)1)F0、F1:用户自定义标志位。

2)RS1、RS0:

工作寄存器区选择位。

复位时,PSW=00H例:复位后,设置使用工作寄存器3区,其余标志位不变。解:MOVPSW,#18H位序B7B6B5B4B3B2B1B0位符号CYACF0RS1RS0OVF1P2023/2/545

1.加法类指令

不带进位加一个加数总是来自累加器A,而另一个加数可由不同的寻址方式得到。结果总是放在A中。影响:PSW的Cy、AC、OV、PADDA,Rndirect@Ri#data2023/2/546

使用加法指令时,要注意累加器A中的运算结果对各个标志位的影响:(1)如果位7有进位,则置“1”进位标志Cy,否则清“0”Cy(2)如果位3有进位,置“1”辅助进位标志Ac,否则清“0”Ac(Ac为PSW寄存器中的一位)(3)如果位6有进位,而位7没有进位,或者位7有进位,而位6没有,则溢出标志位OV置“1”,否则清“0”OV。2023/2/547

【例1】(A)=53H,(R0)=FCH,执行指令ADDA,R0结果:(A)=4FH,Cy=1,Ac=0,OV=0,

P=1(A中结果1的位数为奇数)注意:上面的运算中,由于位6和位7同时有进位,所以标志位OV=0。2023/2/548

【例2】(A)=85H,(R0)=20H,(20H)=AFH,执行指令:ADDA,@R0结果:(A)=34H,Cy=1,Ac=1,OV=1,P=1注意:由于位7有进位,而位6无进位,所以标志位OV=12023/2/549

【例3.2】片内RAM单元40H、41H中分别存放被加数、加数,相加结果存放到41H、40H单元。程序如下:

MOV R0,#40H ;设置地址指针

MOV A,@R0 ;取被加数

INC R0 ADD A,@R0 ;两数相加

DEC R0 MOV @R0,A ;存放和的低8位

INC R0 JC CARRY MOV @R0,#0 ;相加结果无进位

RETCARRY:MOV @R0,#1 ;相加结果有进位

RET2023/2/550

带进位加

注释:

1.源操作数与A的内容相加再与Cy相加,结果送入目的操作数A中。ADDCA,Rndirect@Ri#data2.Cy是在该指令执行之前已存在的值。2023/2/551

【例1】(A)=85H,(20H)=FFH,Cy=1执行指令:

ADDCA,20H结果:(A)=85H,Cy=1,Ac=1,OV=0,P=1注意:上面的运算中,由于位6和位7同时有进位,所以标志位OV=0。2023/2/552

十进制调整指令

注释:

1.当A中低4位数出现了非BCD码或低4位产生进位(AC=1),则在低4位加6。2.当A中高4位数出现了非BCD码或高4位产生进位(Cy=1),则在高4位加6。

对A中刚进行的2个BCD码加法的结果调整。

DAA3.调整后,Cy表示结果的百位值。

2023/2/553

适应条件:(1)该指令执行前,一般有一条加法指令。(2)加法指令中的两个加数,应该是用压缩BCD码表示的十进制数,和存放在A中。(3)执行完DA指令后,A中存放的数是两个加数的十进制和,也使用压缩BCD码表示。

若(A)=56h(R5)=67hADDA,R5DAA

结果(A)=23;Cy=12023/2/554

十进制加法指令:仅对加法结果进行调整 ADDA,源操作数

DAA带进位十进制加1法指令:

ADDCA,源操作数

DAA作业:BCD码加法编程。 设X、Y为4位压缩BCD码,求Z=X+Y。BCD调整指令:BCD:Binary-Coded-Decimal(二进制编码的十进制)

DAA ;把A中按二进制相加后的结果

调整成按BCD数相加的结果调整原因:1、相加结果大于9,进入无效编码区;

2、相加结果有进位,跳过无效编码区。调整方法:进行加“6”修正。2023/2/555

【例3.3】试编写4位BCD码加法程序。设被加数存放在片内RAM单元40H、41H中,加数存放在42H、43H单元中,相加后结果存放到分别存放被加数、加数,相加结果存放到40H、41H单元中(假定数据是高位在前,低位在后,且假定相加的结果仍为4位BCD码)。程序如下:

MOV R0,#41H ;设置地址指针R0 MOV R1,#43H ;设置地址指针R1 MOV A,@R0 ADD A,@R1 ;十位、个位数相加

DA A ;十进制调整

MOV @R0,A DEC R0 ;修改地址指针 DEC R1 MOV A,@R0ADDC A,@R1 ;千位、百位数相加

DA A ;十进制调整

MOV @R0,A RET2023/2/556

2.减法类指令带借位减法影响:PSW的Cy、AC、OV、P注:D7、D6位只有一个有借位时,(OV)=1。如要用此组指令完成不带借位减法,只需先清“0”标志位Cy。SUBBA,Rndirect@Ri#data2023/2/557

【例1】(A)=C9H,(R2)=54H,Cy=1执行指令:

SUBBA,R2结果:(A)=74H,Cy=0,Ac=0,OV=1,P=0注意:上面的运算中,由于位6向位7借位,位7没有借位,所以标志位OV=1。2023/2/558

加1指令

源操作数的内容加1,结果再送回原单元。这些指令中仅INCA影响P标志。若原变量中内容为FFH,则程序执行后变量变为00H。INC

Rndirect@RiDPTRA2023/2/559

减1指令

源操作数的内容减1,结果再送回原单元。这些指令中仅DECA影响P标志。若原变量中内容为00H,则程序执行后变量变为FFH。DEC

Rndirect@RiA2023/2/560

INC单操作数

如: INCR2

;R2←R2+1DEC单操作数

如:DECR2

;R2←R2-1

INCDPTR

;DPTR←DPTR+1

不影响标志位状态。注意:没有指令DECDPTR

可用指令DECDPL代替2023/2/561

3.乘法MULAB

例:若(A)=50H,(B)=A0H,执行指令MULAB之后,(A)=00H,(B)=32H,(OV)=1,(Cy)=0。

当乘积大于FFH时,溢出标志位(OV)=1。标志Cy总是被清“0”。X

ABAB乘数被乘数积2023/2/562

4.除法例:若(A)=FBH(251),(B)=12H(18),执行指令DIVAB之后,(A)=0DH,(B)=11H,(OV)=0,(Cy)=0。DIVAB

除数为0,商的A和B内容不确定,且(OV)=1。标志Cy总是被清0。X

ABAB除数被除数整数部分商

余数部分2023/2/563

3.3.3逻辑运算及移位类指令

逻辑运算:与、或、异或、清“0”和取反

对A循环移位1.方向:左、右2.Cy:带、不带

共24条指令。

2023/2/564

逻辑与

源操作数与直接地址单元内容相与

例:若(A)=C3H,(R0)=AAH,执行指令ANLA,R0之后,(A)=82H。ANLdirect,A#dataANLA,Rndirect@Ri#data

源操作数与累加器A的内容相与2023/2/565

逻辑或

源操作数与直接地址单元内容相或

例:若(A)=C3H,(R0)=55H,执行指令ORLA,R0之后,(A)=D7H。ORLdirect,A#dataORLA,Rndirect@Ri#data

源操作数与累加器A的内容相或2023/2/566

逻辑异或

源操作数与直接地址单元内容相异或

例若(A)=C3H,(R0)=AAH,执行指令XRLA,R0之后,(A)=69H。XRLdirect,A#dataXRLA,Rndirect@Ri#data

源操作数与累加器A的内容相异或2023/2/567

累加器清“0”和取反

把A的内容取反,结果仍在A中。CPLACLRA例若(A)=A5H,执行指令CLRA之后,(A)=00H。

把A的内容清“0”

,结果仍在A中。2023/2/568

累加器循环移位

2023/2/569

3.3.4控制转移类指令(17条)

程序执行是顺序的,改变程序执行顺序,称作程序转移。

控制程序转移采用转移指令1.无条件转移2.条件转移3.子程序调用与返回2023/2/570

1.无条件转移指令

长转移指令

LJMPaddr16指令第二、三字节地址码分别装入PC的高8位和低8位中。可转到64KB的ROM空间的任何单元。例:若“NEWADD”表示转移目标地址1234H。执行LJMPNEWADD时,目标地址将装入PC中,程序转向地址1234H处运行。2023/2/571

1.无条件转移指令

绝对转移指令

AJMPaddr11

注释:1.PC先指向AJMP的下一条指令,再把11位地址码传送到PC10~0,PC15~11不变。2.当前PC值(下条指令地址)高5位,可确定32个2KB段之一。因此,AJMP转移范围为包含AJMP下条指令在内的2KB区间。2023/2/572

1.无条件转移指令

短转移指令

SJMPrelrel是目标地址的标号,由汇编程序自动计算,并填入指令代码中。第二字节为rel,(补码),00H~7FH为正向转移,80H~FFH(-128~-1)反向转移。2023/2/573

1.无条件转移指令

变址寻址转移指令JMP@A+DPTR转移地址由DPTR和A相加形成。例程: MOVDPTR,#TABLE JMP@A+DPTRTABLE: AJMPROUT0;(A)=00H时

AJMPROUT1;(A)=02H时

AJMPROUT2;(A)=04H时

AJMPROUT3;(A)=06H时2023/2/574

2.条件转移指令累加器判0转移例: 若A原来为00H,则

JNZL1;程序往下执行

INCA;

JNZL2;程序转向L2处执行

JZrelA的内容为0转移JNZrelA的内容不为0转移2023/2/575

2.条件转移指令

比较不相等转移

对前面两个操作数进行比较,不相等则转移比较时影响进位标志Cy,不影响操作数本身。

若左操作数=右操作数,Cy=0,程序顺序执行;若左操作数>右操作数,Cy=0,程序转移;若左操作数<右操作数,Cy=1,程序转移;CJNEA,direct,relCJNE

ARn@Ri,#data,rel2023/2/576

2.条件转移指令

减1不为0转移

每执行一次,循环控制单元减1,并判其是否为0

不为0,则转移到目标地址继续循环;为0,则结束循环,程序往下执行。DJNZRn,relDJNZdirect,rel2023/2/577

【例3.4】将片外RAM的1100H~11FFH的256个单元清0。程序如下:

MOV R7,#00H ;设置计数初值

CLR A MOV DPTR,#1100H;设置片外RAM单元首址LOOP:MOVX @DPTR,A INC DPTR DJNZ R7,LOOP RET2023/2/578

3.调用与返回指令

子程序调用指令

子程序的短调用和长调用目标地址形成方式与AJMP和LJMP相似不影响任何标志

ACALLaddr11LCALLaddr162023/2/579

3.调用与返回指令

返回指令

RET从堆栈中弹出压入堆栈保护的断点地址,并送入指令计数器PC,返回到断点处继续执行。

RETI专用于中断服务程序返回,除返回中断断点处执行主程序以外,并有清除内部相应的中断状态寄存器(以保证正确的中断逻辑)的功能。RETRETI

2023/2/580

4.空操作指令NOP1.不产生任何控制操作,但:

PC的内容加1

消耗1个机器周期程序空间上占用一个字节2.常用来实现较短时间的延时。2023/2/581

3.3.5位操作类指令

以位为单位进行的各种操作。位地址形式:(表示PSW中的位5

)直接位地址(如,0D5H)点操作符(如,0D0H.5、PSW.5等)位名称(如,F0)伪指令定义(如,MYFLAGBITF0)位操作指令中,位累加器要用字符“C”表示。注:在位操作指令中Cy与具体的直接位地址D7H对应。

2023/2/582

位传送指令

MOVbit,C MOVC,bit

指定位地址中内容与Cy的内容的相互传送

例:若(Cy)=1,(P3)=11000101B,(P1)=00110101B。执行以下指令:

MOVP1.3,C MOVC,P3.3 MOVP1.2,C

结果:(Cy)=0,P3的内容未变,P1的内容变为00111001B。2023/2/583

位清“0”指令

位累加器Cy清“0”

例:若(P1)=10011101B。执行指令CLRP1.3后,结果为:(P1)=10010101B。CLRC

CLRbit

位地址内容清“0”2023/2/584

位置“1”指令

例若(P1)=10011100B。执行指令SETBP1.0后,(P1)=10011101B。

位累加器Cy置“1”SETBC

SETBbit

位地址内容置“1”2023/2/585

位逻辑与指令

例:若(P1)=10011100B,(Cy)=1。执行指令ANLC,P1.0后,结果为:P1内容不变,而(Cy)=0。位地址单元内容与位累加器内容“与”ANLC,bit

位地址单元内容取反后的值与位累加器内容“与”ANLC,/bit2023/2/586

位逻辑或指令

位地址单元内容取反后的值与位累加器内容“或”

位地址单元内容与位累加器内容“或”ORLC,bitORLC,/bit

位取反CPLCCPLbit2023/2/587

判Cy转移指令

当(Cy)=1,转向PC当前值与rel之和的目标地址执行,否则程序顺序执行。

JCrel

JNCrel当(Cy)=0,转向PC当前值与rel之和的目标地址去执行,否则程序顺序执行。

2023/2/588

判位bit转移指令

JBbit,rel

JBCbit,relJNBbit,rel当(bit)=1,转向PC当前值与rel之和的目标地址执行,否则程序顺序执行。

当(bit)=0,转向PC当前值与rel之和的目标地址执行,否则程序顺序执行。

与上面指令相同,但还有将该位清0功能。

2023/2/589

3.5思考题与习题什么是寻址方式?89S51指令系统有哪些寻址方式?相应的寻址空间在何处?访问片外数据存储器、程序存储器,可以使用哪些指令来实现?请举例说明。要访问特殊功能寄存器和片内数据存储器,应采用哪些寻址方式?说明下列指令中源操作数采用的寻址方式。

MOV55H,R7

MOVA,55H

MOVA,#55H

JMP@A+DPTR

MOV30H,C MOVA,@R0 MOVXA,@R02023/2/590

3.5思考题与习题请判断下列的单片机指令的书写格式是否有错,若有,请说明错误原因。 MOVR0,R3 MOVR0,@R3 MOVC A,@R0+DPTR ADDR0,R1 MULAR0试编写一个子程序,其功能是将PSW中的用户标志位F0、F1中的内容进行“异或”逻辑运算,将运算结果存放到进位标志Cy。2023/2/591

3.5思考题与习题写出实现下列要求的指令或程序片段。 ⑴将R0的内容传送到R1; ⑵片内RAM20H单元的内容传送到寄存器R1; ⑶片内RAM20H单元的位D7和D3清0,其他位保持不变; ⑷片外RAM1000H单元的内容传送到片内RAM60H单元中; ⑸片外RAM1080H单元的内容传送到寄存器R7中。 ⑹累加器A的高4位清0,其他位保持

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论