版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、内容提要:3-1 汇编言语与指令系统简介汇编言语与指令系统简介3-2 数据传送类指令数据传送类指令3-3 算术运算类指令算术运算类指令3-4 逻辑运算类指令逻辑运算类指令3-5 控制转移类指令控制转移类指令3-6 位操作类指令位操作类指令高级言语高级言语:一、汇编言语程序设计的意义一、汇编言语程序设计的意义什么是程序?什么是程序?完成某项特定义务的指令的集合。完成某项特定义务的指令的集合。计算机按程序一条一条地依次执行指令,从而完成指定义务。计算机按程序一条一条地依次执行指令,从而完成指定义务。要让计算机完成各项义务,就应设计各种程序。要让计算机完成各项义务,就应设计各种程序。 汇编言语汇编言
2、语:机器言语机器言语:程序设计言语:程序设计言语:用二进制代码表示指令和数据。用二进制代码表示指令和数据。用助记符表示指令操作功能,用标号表示操作对象。用助记符表示指令操作功能,用标号表示操作对象。独立于机器独立于机器,面向过程面向过程,接近自然言语和数学表达式接近自然言语和数学表达式.汇编言语程序的每一条语句都与计算机的某一条指令对应,所汇编言语程序的每一条语句都与计算机的某一条指令对应,所以必需熟习指令系统。以必需熟习指令系统。指令指令 = 操作码操作码 + 操作数操作数操作码操作码表示了该指令所能执行的操作功能。表示了该指令所能执行的操作功能。操作数操作数表示参与操作的数的本身或操作数所
3、在的地址。表示参与操作的数的本身或操作数所在的地址。二、二、MCS-51指令格式:指令格式:标号:标号:操作码助记符操作码助记符 操作数操作数;注释;注释 标号是程序员根据编程需求给指令设定的符号地址,可有可无;标号由18个字符组成,第一个字符必需是英文字,不能是数字或其它符号;标号后必需用冒号。 操作码表示指令的操作种类,如操作码表示指令的操作种类,如MOV表示数据传送操表示数据传送操作,作,ADD表示加法操作等。表示加法操作等。 操作数或操作数地址表示参与运算的数据或数据的有操作数或操作数地址表示参与运算的数据或数据的有效地址。操作数普通有以下几种方式:没有操作数项,操效地址。操作数普通有
4、以下几种方式:没有操作数项,操作数隐含在操作码中,如作数隐含在操作码中,如RET指令;只需一个操作数,如指令;只需一个操作数,如CPL A指令;有两个操作数,如指令;有两个操作数,如MOV A,#00H指令,操作指令,操作数 之 间 以 逗 号 相 隔 ; 有 三 个 操 作 数 , 如数 之 间 以 逗 号 相 隔 ; 有 三 个 操 作 数 , 如 C J N E A,#00H,NEXT指令,操作数之间也以逗号相隔。指令,操作数之间也以逗号相隔。 注释是对指令的解释阐明,用以提高程序的可读性;注释是对指令的解释阐明,用以提高程序的可读性;注释前必需加分号。注释前必需加分号。 MCS-51M
5、CS-51系列单片机的指令系统简介系列单片机的指令系统简介111111条指令,共分五大类:条指令,共分五大类:数据传送类;数据传送类;2929条条算术运算类;算术运算类;2424条条逻辑运算类;逻辑运算类;2424条条控制转移类;控制转移类;1717条条 位操作类。位操作类。1717条条 指令中操作数的描画符号:指令中操作数的描画符号: Rn 任务存放器任务存放器R0 R7 Ri 间接寻址存放器间接寻址存放器R0、R1 Direct 直接地址,包括内部直接地址,包括内部128B RAM单元地址、单元地址、 26个个SFR地址。地址。 #data 8位常数位常数 #data 16 16位常数位常
6、数 addr 16 16位目的地址位目的地址 addr 11 11位目的地址位目的地址 rel 8位带符号的偏移地址位带符号的偏移地址 DPTR 16位外部数据指针存放器位外部数据指针存放器 bit 可直接位寻址的位可直接位寻址的位 A 累加器 B 存放器B C 进、借位标志位,或位累加器 间接存放器或基址存放器的前缀 / 指定位求反 x x中的内容 x x中的地址中的内容(间接寻址中的内容 当前指令存放的地址 三、寻址方式三、寻址方式寻觅操作数存放单元的地址的方式,共寻觅操作数存放单元的地址的方式,共7种方式。种方式。1、立刻数寻址、立刻数寻址所要找的操作数是一二进制数或十进制数,出如今指令
7、所要找的操作数是一二进制数或十进制数,出如今指令中,用中,用“#作前缀作前缀 MOV A,#3AH2、存放器寻址、存放器寻址操作数存放在任务存放器操作数存放在任务存放器R0 R7中,或存放器中,或存放器B中。中。 MOV R1,A3、直接寻址、直接寻址指令中直接给出操作数的地址。指令中直接给出操作数的地址。 MOV A,3AH MOV 30H,DPH 图图3.1 立刻数寻址表示图立刻数寻址表示图3AHA3AHMov A,#3AH图3.2 存放器寻址表示图 20H09H内部RAM20HAR101RS1 RS0Mov R1,A 图3.3 直接寻址表示图 88H3AH内部 RAM88HAMov A,
8、3AHMOV 3AH,#65HMOV R0,#3AHMOV A,R04、存放器间接寻址、存放器间接寻址指令中存放器的内容作为操作数存放的地址,该地址里面的内指令中存放器的内容作为操作数存放的地址,该地址里面的内容才是操作数,在任务上间接寻址存放器前用容才是操作数,在任务上间接寻址存放器前用“表示前缀。表示前缀。例如例如: 65H3AH内部 RAM3AHAR065H5、变址寻址、变址寻址 操作数地址操作数地址 = 变地址变地址 + 基地址基地址 基地址存放器基地址存放器 DPTR 或或 PC 变址存放器变址存放器 A 该寻址方式常用于访问程序存储器,查表。该寻址方式常用于访问程序存储器,查表。
9、如如 MOVC A,A + DPTR MOVC A, A + PC图3.5 变址寻址表示图55H程序存储区02HA0302H03HDPTR00H0302HMOVC A,A+DPTR6、相对寻址、相对寻址 把指令中给定的地址偏移量与本指令所在单元地址把指令中给定的地址偏移量与本指令所在单元地址PC内容内容相加得到真正有效的操作数所存放的地址。相加得到真正有效的操作数所存放的地址。例如例如 “李同窗李同窗20岁,张同窗比李同窗大岁,张同窗比李同窗大3岁,问张同窗多少岁?岁,问张同窗多少岁?这就是一个相对寻年龄的问题,而相对寻址与此类似。这就是一个相对寻年龄的问题,而相对寻址与此类似。 如如 JC
10、60H ;设;设PC = 2000H为基址,相对偏移量为为基址,相对偏移量为60H; ; 那么当那么当C = 1时,转移的目的地址时,转移的目的地址 = 2000H + 2 + 60H 7. 位寻址位寻址 位寻址是指按位进展的寻址操作,而上述引见的指令位寻址是指按位进展的寻址操作,而上述引见的指令都是按字节进展的寻址操作。都是按字节进展的寻址操作。MCS-51单片机中,操作数不单片机中,操作数不仅可以按字节为单位进展操作,也可以按位进展操作。当我仅可以按字节为单位进展操作,也可以按位进展操作。当我们把某一位作为操作数时,这个操作数的地址称为位地址。们把某一位作为操作数时,这个操作数的地址称为位
11、地址。 位寻址区包括专门安排在内部位寻址区包括专门安排在内部RAM中的两个区域:一中的两个区域:一是内部是内部RAM的位寻址区,地址范围是的位寻址区,地址范围是20H2FH,共,共16个个RAM单元,位地址为单元,位地址为00H7FH;二是特殊功能存放器;二是特殊功能存放器SFR中有中有11个存放器可以位寻址,参见有关章节中位地址定义。个存放器可以位寻址,参见有关章节中位地址定义。 图3.6 位寻址表示图内部RAM27H二进制 10 0 1 0 0 0 0 0SETB 3DH设内部设内部RAM 27H单元的单元的内容是内容是00H,执行,执行SETB 3DH后,由于后,由于3DH对应对应内部内
12、部RAM 27H的第的第5位,位,因此该位变为因此该位变为1,也就是,也就是27H单元的内容变为单元的内容变为20H。该指令的执行过程如图该指令的执行过程如图3.6所示。所示。 稳定新课:1、汇编言语有何种特点?指令格式?2、MCS51系列机共有多少条指令?分几类?3、MCS51系列汇编言语指令有几种寻址方式? 3.2.1 3.2.1 数据传送类指令数据传送类指令 数据传送指令是数据传送指令是MCS-MCS-5151单片机汇编言语程序设计中单片机汇编言语程序设计中运用最频繁的指令,包括内部运用最频繁的指令,包括内部 RAMRAM、存放器、外部、存放器、外部RAMRAM以及程以及程序存储器之间的
13、数据传送。序存储器之间的数据传送。 数据传送操作是指把数据传送操作是指把数据从源地址传送到目的地址,数据从源地址传送到目的地址,源地址内容不变。源地址内容不变。 数 据目的地址目的地址 源地址源地址3-2 数据传送类指令数据传送类指令一、内部一、内部RAM与与SFR数据传送类数据传送类1、普通数据传送指令、普通数据传送指令片外片外程序程序存储器存储器ROMEPROM特殊功能特殊功能存放器存放器SFR片内片内RAM128字节字节片外片外数据数据存储器存储器RAMMOVCMOVXMOV PUSHPOPXCHXCHD回想前述操作数描画符:回想前述操作数描画符:A,direct,Rn,Ri,#data
14、,DPTR等。等。经陈列组合可写出以下指令:经陈列组合可写出以下指令:MOV A,Rn ;A Rn以下类似。以下类似。MOV A,directMOV A,RiMOV A,#dataMOV Rn,AMOV Rn,directMOV Rn,#data以累加器以累加器A A为目的操作数的指令;为目的操作数的指令;以存放器以存放器RnRn为目的操作数的指令;为目的操作数的指令;MOV direct,RnMOV direct,directMOV direct,RiMOV direct,#dataMOV Ri,AMOV Ri, directMOV Ri,#dataMOV DPTR,#data16 ;独一的
15、;独一的16位数据传送指令。位数据传送指令。上述指令不影响任何标志位,但上述指令不影响任何标志位,但PSW的的P位除外。位除外。directAMOV direct,A ;以以DirectDirect为目的操作数的指令;为目的操作数的指令;以间接地址为目的操作数的指令;以间接地址为目的操作数的指令;上述指令不影响任何标志位,但上述指令不影响任何标志位,但PSW的的P位除外。位除外。留意:留意:MOV Rn,Rn MOV Ri, Ri MOV Rn, Ri MOV #data, A 等等指令是非法指令。等等指令是非法指令。 哇!好容易出错啊!教材例题 【例【例3.93.9】 假设假设R1R121H
16、21H,21H21H55H55H,执行指令,执行指令MOV AMOV A,R1R1后的结果为:后的结果为: A A=55H=55H,而,而R1R1的内容和的内容和21H21H单元的内容均单元的内容均不变不变(keil(keil软件上运转软件上运转) )【例【例3.123.12】 假设假设R1R130H30H,30H30H22H22H,A A34H34H,执行指令,执行指令MOV R1MOV R1,A A后的结果为:后的结果为:30H30H34H34H,R1R1和和A A当中的内容不变。当中的内容不变。课堂练习题1 1、假设、假设(R1)=30H,(A)=40H,(R1)=30H,(A)=40H
17、,(30H)=60H,(40H)=08H,(30H)=60H,(40H)=08H,试分试分析执行以下程序段后上述各析执行以下程序段后上述各单元内容的变化。单元内容的变化。MOV A,R1MOV A,R1MOV R1,40HMOV R1,40HMOV 40H,AMOV 40H,AMOV R1,#7FHMOV R1,#7FH2 2、假设、假设50H50H=40H,=40H,问问执行以下程序段后各个存执行以下程序段后各个存放器和内部放器和内部RAM40HRAM40H、41H41H、42H42H单元中的内容各为多单元中的内容各为多少?少?ORG 00H ORG 00H MOV A,50HMOV A,5
18、0HMOV R0,AMOV R0,AMOV A,#00HMOV A,#00HMOV R0,AMOV R0,AMOV A,#3BHMOV A,#3BHMOV 41H,AMOV 41H,AMOV 42H,41HMOV 42H,41H用用keilkeil进展调试时,进展调试时,起始地址为起始地址为00h00h二、二、 累加器累加器A A与外部与外部RAMRAM数据传送数据传送MOVX A,RiMOVX A,RiMOVX A, DPTRMOVX A, DPTRMOVX Ri, AMOVX Ri, AMOVX DPTRMOVX DPTR,A A执行过程中会使执行过程中会使/WR/WR、/RD/RD有效。
19、有效。 【例【例3.15】 把外部数据存储器把外部数据存储器2040H单单元的内容送入内部存放器元的内容送入内部存放器R2中。中。 MOV DPTR,#2040H MOVX A,DPTR MOV R2,A例例1:1:将内部将内部RAM50HRAM50H的内容传送到外部的内容传送到外部RAM40HRAM40H中。中。解:解:MOV A, 50HMOV A, 50H MOV R0, #40H MOV R0, #40H MOVX R0, A MOVX R0, A例例2、试编写一程序段,实现将外、试编写一程序段,实现将外RAM 0FAH单元中的内容传送到外单元中的内容传送到外RAM 14FFH单元中。
20、单元中。 解:解: MOV R0,#0FAH MOVX A,R0 MOV DPTR,#14FFH MOVX DPTR, A 三三 查表指令累加器查表指令累加器A A与与ROMROM之间的数据传送之间的数据传送MOVC AMOVC A,A + DPTRA + DPTRMOVC A, A + PCMOVC A, A + PC【例【例3.163.16】 设设A=35HA=35H,执行,执行1000H1000H:MOVC AMOVC A,A+PCA+PC指令后的结果:指令后的结果:首先把累加器首先把累加器A A中的内容加上本条指令执行后的中的内容加上本条指令执行后的PCPC值值1001H1001H,然
21、后将程序存储器,然后将程序存储器1036H1036H单元的内容单元的内容送入累加器送入累加器A A中,即,中,即,AA1036H1036HROMROM。 【例【例3.19】 把程序存储器把程序存储器0150H单元的内单元的内容取出送到外部容取出送到外部RAM1070H单元中。单元中。 MOV DPTR,#0150H MOV A,#00H MOVC A,ADPTR MOV DPTR,#1070H MOVX DPTR,A例例3 3、设、设A A= = 一个十进制常数一个十进制常数0 09 9,试,试用查表法获得其相应的用查表法获得其相应的ASCIIASCII码。码。 解法解法I: MOV DPTR
22、,#1000H MOVC A,A+DPTR (1000H)TAB:DB 30H DB 31H DB 32H,33H,34H,35H 解法解法II: MOVC A,A+PC TAB:DB 30H,31H,32H,33H DB 34H,35H,36H,37H 四四 字节交换指令字节交换指令XCH AXCH A,RnRnXCH AXCH A,direct direct ;整字节交换;整字节交换XCH AXCH A,RiRi低半字节交换低半字节交换XCHD AXCHD A,RiRi;SWAP A ; SWAP A ; 半字节交换半字节交换一字节一字节A内部RAM单元留意:只能是累加器留意:只能是累加器
23、A A中内容和其他源操作数中内容和其他源操作数内容交换。不影响任何内容交换。不影响任何标志位。标志位。 【例【例3.20】 假设假设A7AH,R145H,45H39H,执行指令,执行指令XCH A,R1后的结果:后的结果: A45H,R17AH; 假设假设A7AH,R145H 45H39H 执行指令执行指令XCH A,R1后的结果:后的结果: A39H,45H7AH,R145H【例【例3.21】 设设A=59H,R0=45H,45H=7AH,执行指令,执行指令XCHD A,R0结果:结果:A=5AH,R0=45H不变,不变,45H=79H五五 堆栈操作指令堆栈操作指令PUSH directPO
24、P direct不影响任何标志位。不影响任何标志位。例例5、设、设SP = 36H,DPTR= 0123H,分析:分析: 执行执行 PUSH DPL PUSH DPH 后,各单元中的内容。后,各单元中的内容。内内RAMRAM36H36H37H37H38H38HSPSP加加1 1再加再加1 1H H23H23H01H01HPOP direct 指令执行中,机器也自动进展两步操作:指令执行中,机器也自动进展两步操作:1direct SP2SP SP 1例例6、设、设SP= 4BH,4BH= 01H,4AH= 23H 执行执行 POP DPH POP DPL 后,各单元中的内容。后,各单元中的内容。
25、 内内RAMRAM49H49H4AH4AH4BH4BHSPSPH H23H23H01H01HSPSP减减1 1SPSP再减再减1 1DPHDPHDPLDPLDPTRDPTR结论:结论:1PUSH 与与 POP 操作过程刚好相反;操作过程刚好相反; 2进、出栈规那么:先进后出,后进先进、出栈规那么:先进后出,后进先出。应留意指令书写先后顺序;出。应留意指令书写先后顺序; 3可用于可用于“维护现场,恢复现场。维护现场,恢复现场。 【例【例3.23】 设设30H=51H,40H=6AH,将内部将内部RAM的这两个单元的内容交换。的这两个单元的内容交换。 PUSH 30H ;30H单元的内容进栈单元的
26、内容进栈 PUSH 40H ;40H单元的内容进栈单元的内容进栈 POP 30H ;将栈顶元素弹出,送入;将栈顶元素弹出,送入30H单单元元 POP 40H ;再将下一个元素出栈,送入;再将下一个元素出栈,送入40H单元单元 执行结果:执行结果:30H=6AH,40H=51H。小结:小结: 数据传送类指令有几种类型?数据传送类指令有几种类型? 能否影响标志位?能否影响标志位? 3.2.2 3.2.2 算术运算类指令算术运算类指令包括:加、包括:加、 减、乘、除;加一、减一。减、乘、除;加一、减一。一、加法指令一、加法指令1、不带进位的加法:、不带进位的加法:ADD A,Rn ;A A+ RnA
27、DD A,directADD A,RiADD A,#data;带符号数相加时:假设带符号数相加时:假设OV = D7c或或D6c = 1,阐明有溢出。无符号数相加时:,阐明有溢出。无符号数相加时:假设假设C = 1,阐明有进位其值,阐明有进位其值 255。【例3.24】 设A=46H,R1=5AH,试分析执行指令ADD A,R1 ;AA+R1A=0 1 0 0 0 1 1 0+)R1=0 1 0 1 1 0 1 0A+R1=1 0 1 0 0 0 0 0结果为偶数个1,P=0110有进位时,AC=101=1有溢出,OV=1无进位,Cy=0结果:结果:A=A0HA=A0H,R1=5AHR1=5A
28、H不变。不变。2 2、带进位的加法:、带进位的加法:ADDC AADDC A,Rn Rn ;A A A A+ +RnRn+ +C)C)ADDC AADDC A,directdirectADDC AADDC A,RiRiADDC A,#dataADDC A,#data 上述四条指令多用于多字节数相加。上述四条指令多用于多字节数相加。 【例【例3.25】 设设A=85H,20H=FFH,Cy=1,执行指令:,执行指令:ADDC A,20H ;AA+20H+Cy,执行情况见图,执行情况见图3-13所所示。示。结果:结果:A=85HA=85H, 20H20H=FFH=FFH不变。不变。3 3、加、加1
29、 1指令:指令:INC A INC A ;A A A A+1 +1 ,以下类同。,以下类同。INC RnINC RnINC directINC directINC RiINC RiINC DPTR INC DPTR 例例2、设、设R0= 7EH; 7EH= 40H,7FH0FFH 执行:执行: INC R0; INC R0 ; INC R0; (R0)= 7FH; (7FH)= 00H; (7EH)= 41H DA A ;二;二 十进制调整指令。十进制调整指令。执行过程中,执行过程中,CPU能根据加法运算后,累加器中的值和能根据加法运算后,累加器中的值和PSW中的中的AC及及C标志位的情况自动
30、选择一个修正值标志位的情况自动选择一个修正值00H、06H、60H、66H与原运算结果相加,进展二与原运算结果相加,进展二十进制调整。十进制调整。本条指令必需紧跟在本条指令必需紧跟在ADD指令的后面才干完成指令功能。指令的后面才干完成指令功能。比如,刚刚运算的是比如,刚刚运算的是09H01H,计算机是按照,计算机是按照16进制运算,进制运算,答案是答案是0AH,可是有时候我们需求得到可是有时候我们需求得到10进制的结果,用这条进制的结果,用这条DA A就能使结果变成就能使结果变成10H。二、减法指令二、减法指令1、带借位的减法:、带借位的减法:SUBB A,Rn ;A A-Rn-(C)SUBB
31、 A,directSUBB A,RiSUBB A,#data 例例3、(A)=0C9H,(R2)=54H,C=1, 执行指执行指令令SUBB A,R2的结果的结果 1100 1001 -(R2) 0101 0100 -C 1 0111 0100执行该指令后执行该指令后(A)=74H,AC=0,(A)=74H,AC=0,C=0,OV=1C=0,OV=1,P=0P=0留意:假设需求不带借位的减法留意:假设需求不带借位的减法之前先清零之前先清零C C。CLR CCLR C 2、减、减1指令:指令:DEC A ;A A1,以下,以下类同。类同。DEC RnDEC RiDEC direct 例例4、设、
32、设R0=7FH,在内,在内RAM中,中,7EH=00H,7FH=40H 执行:执行: DEC R0 DEC R0 ; DEC R0; 结果为结果为 :R0= 7EH,7EH=0FFH,7FH=3FH。 三、乘法和除法指令三、乘法和除法指令1、乘法:、乘法:MUL AB ;AB积的低积的低8位在位在A中,积的高中,积的高8位在位在B中;假设乘中;假设乘积大于积大于255,那么,那么OV=1, C总为总为0。 2、除法:、除法:DIV AB ;AB,商在,商在A中,余数中,余数在在B中。假设中。假设B= 0 ,那么结果不定,那么结果不定,OV= 1,C= 0。 【例【例3.29】 设设A=32H即
33、即50,B=60H即即96,执行指令,执行指令MUL AB ;BAAB 后的结后的结果:果:乘积为乘积为12C0H即即4800。A=C0H,B=12H。各标志位:各标志位:Cy=0,OV=1,P=0。 【例【例3.30】 设设A=FFH255,B=12H18,执行指令,执行指令DIV AB ;A BAB后的后的结果:结果: 商商A=0EH14,余数,余数B=03H3。 标志位:标志位:Cy=0,OV=0,P=1。小结:算术运算类指令都有哪些小结:算术运算类指令都有哪些类型?类型? 3.2.3 逻辑运算类指令逻辑运算类指令共分两大类:单字节逻辑操作,双字节逻辑操共分两大类:单字节逻辑操作,双字节
34、逻辑操作,共作,共24条。条。一、单字节逻辑操作指令一、单字节逻辑操作指令CLR A ;A 0 ; MOV A,#00HCPL A ; A中中8位按位求反。位按位求反。 循环左移、右移指令:循环左移、右移指令: RL A RLC A RR A RRC A 注:左移一位相当于乘注:左移一位相当于乘2;右移一位相当于;右移一位相当于除除2。 二、双字节逻辑操作指令二、双字节逻辑操作指令“与操作:与操作:ANL A,Rn ;A ARn,以下,以下类同。类同。ANL A,directANL A,RiANL A,#dataANL direct,AANL direct,#data例例1、P1= 35H,使
35、其高,使其高4位输出位输出0,低低4位不变。位不变。 解;解;ANL P1,#0FH 此做法称为此做法称为“屏蔽位。屏蔽位。“或操作:或操作:ORL A,Rn ;A ARn,以,以下类同。下类同。ORL A,directORL A,RiORL A,#dataORL direct,AORL direct,#data 例例2、将、将A中的低中的低3位送入位送入P1中,并且坚中,并且坚持持P1中高中高5位不变。位不变。 ANL A,#07H ANL P1,#0F8H ORL P1,A ; P1= P17P16P15P14P13A2A1A0 这称为这称为“数位组合。数位组合。 “异或操作:异或操作:X
36、RL A,Rn ; A A Rn,以下类同。以下类同。XRL A,directXRL A,RiXRL A,#dataXRL direct,AXRL direct,#data例例3、设、设P1= 0B4H = 10110100B,执行:执行: XRL P1,#00110001B 10110100B : P1= 10000101B = 85H 这称为这称为“指定位取反。指定位取反。 在上述在上述ANLANL、ORLORL、XRLXRL操作中,用于端口操操作中,用于端口操作时,无论作时,无论P0 P3P0 P3是第一,还是第二操作是第一,还是第二操作数,都遵照数,都遵照“读读修正修正写端口锁存器的写
37、端口锁存器的操作。操作。 小结:小结: 1、逻辑操作分为哪两类操作?、逻辑操作分为哪两类操作? 2、循环移位指令每执行一次,移几位?、循环移位指令每执行一次,移几位? 3、ANL、ORL、XRL指令有哪些运用技巧?指令有哪些运用技巧? 3.2.4 控制转移类指令控制转移类指令非法非法;转移有效;转移有效比较比较LJMPLJMP、AJMPAJMP、SJMPSJMP、JMPJMP转移的起点和范围转移的起点和范围: : LJMPLJMPPC64K AJMPAJMPPC+2 SJMPSJMPPC+2-128+127 JMPJMP A+DPTRPCPC+2DPTR2562K2K LCALL addr16
38、 ;长调用;长调用 ACALL addr11 ;短调用;短调用 LCALL addr16 ;转移范围;转移范围64KB,不影响标志位。执行中,不影响标志位。执行中自动完成如下过程:自动完成如下过程: PC PC + 3 SP SP+ 1 SP PC7 0, 维护断点地址低字节;维护断点地址低字节; SP SP+ 2 SP PC15 8,保管断点地址高字节;,保管断点地址高字节; PC addr16 ,目的地址送,目的地址送PC,转子程序。,转子程序。 二、调用指令二、调用指令LCALL 34H 56H MOV 执行结果:执行结果:SPSP= 09H= 09H,09H09H= 21H= 21H,
39、08H08H= 03H= 03H, PCPC= 3456H= 3456H SP07HSPSP08H09H2100H3456H外ROM内RAMPC+3PC2103HPC03H21H例例1、设、设SP= 07H,PC= 2100H,子程序首地址为,子程序首地址为3456H,执行:,执行: LCALL 3456H MOV A,20H 转移范围与转移范围与PC+ 2在同一个在同一个2KB内。不影响任何标志内。不影响任何标志位,执行中机器自动完成以下过程:位,执行中机器自动完成以下过程: PC PC+ 2 SP SP+ 1 SP PC7 0 SP SP+ 2 SP PC15 8 PC10 0 addr1
40、0 0 ACALL addr11 :三、前往指令三、前往指令从子程序前往主程序。从子程序前往主程序。 RET ;调用子程序前往;调用子程序前往; RETI ;中断子程序前往。;中断子程序前往。 PC15 8 SP SP 1 PC7 0 SP SP SP 2 其机器自动操作过程如下:其机器自动操作过程如下:比较两种前往指令含义上的异同点比较两种前往指令含义上的异同点结论:结论:RET前往地址事先知,而前往地址事先知,而RETI的前往地址在程序执行的前往地址在程序执行中产生的,不固定。不影响标志位,但中产生的,不固定。不影响标志位,但PSW不能恢复到中断不能恢复到中断前的形状。前的形状。SP例例2
41、、设、设SP= 0BH,0AH= 23H,0BH= 01H 执行:执行: RET MOV PCPC= 0123H= 0123H前往主程序前往主程序结果结果: :SPSP= 09H= 09H,01 23HSP0BHSPSP0AH09H3456H外ROM内RAMPCPC 23H01H23H01H(PC)=空操作指令空操作指令NOP ;空操作;空操作不执行任何操作,仅仅使不执行任何操作,仅仅使PC+ 1,继续执行下,继续执行下条指令,不影响标志位,在条指令,不影响标志位,在ROM中占一个字节中占一个字节,用于延时调整。用于延时调整。 小结:小结: 1、长转移与长调用指令有何区别?、长转移与长调用指令
42、有何区别? 2、长转移、短转移及相对转移的跳转范围有、长转移、短转移及相对转移的跳转范围有 什么不同?什么不同? 二、条件转移指令二、条件转移指令实现按照一定条件决议转移的方向实现按照一定条件决议转移的方向,分三类分三类: 累加器累加器A判零转移指令判零转移指令 比较不相等转移指令比较不相等转移指令 减一不为零转移指令减一不为零转移指令 JZ rel : 假设假设A= 0 ,那么转移,否那么顺,那么转移,否那么顺序执行。序执行。 JNZ rel : 假设假设A 0,那么转移,否那么顺,那么转移,否那么顺序执行。序执行。 转移目的地址转移目的地址 = PC+ 2 + rel 不影响任何标志位。不
43、影响任何标志位。 1、判零转移、判零转移 JZ rel JNZ rel例例1、将外、将外RAM的一个数据块首地址为的一个数据块首地址为DATA1传送到内部传送到内部数据数据RAM首地址为首地址为DATA2,遇到传送的数据为零时停顿,遇到传送的数据为零时停顿传送,试编程。传送,试编程。解解: MOV R0,#DATA2 MOV DPTR,#DATA1 LOOP1: MOVX A,DPTR JZ LOOP2 MOV R0,A INC R0 INC DPTR SJMP LOOP1 LOOP2: SJMP LOOP2 2、比较转移指令、比较转移指令功能:比较二个字节中的值,假设不等,那么转移。功能:比
44、较二个字节中的值,假设不等,那么转移。CJNE A,direct,relCJNE A,#data,relCJNE Ri,#data,relCJNE Rn,#data,rel 该类指令具有比较和判别双重功能,比较的本质是做减法运算,该类指令具有比较和判别双重功能,比较的本质是做减法运算,用第一操作数内容减去第二操作数内容,但差值不回存。用第一操作数内容减去第二操作数内容,但差值不回存。转移目的地址转移目的地址 = PC+ 3 + rel假设第一操作数内容小于第二操作数内容,那么假设第一操作数内容小于第二操作数内容,那么C= 1,否,否那么那么C= 0。3、循环转移指令、循环转移指令DJNZ Rn
45、,rel ;二字节指令;二字节指令DJNZ direct,rel ;三字节指令;三字节指令本指令也为双功能指令,即减本指令也为双功能指令,即减1操作和判别转移操作。操作和判别转移操作。第一操作数内容减第一操作数内容减1后,假设差值不为零,那么转移;否那么顺序后,假设差值不为零,那么转移;否那么顺序执行。执行。转移目的地址转移目的地址 = PC+ 2或或3 + rel 例例3、将、将8031内部内部RAM的的40H 4FH单元置初值单元置初值#A0H #AFH。解:解: MOV R0,#40H MOV R2,#10H MOV A,#0A0H LOOP: MOV R0,A INC R0 INC A
46、 DJNZ R2,LOOP 小结小结: 1、无条件转移指令共有几条、无条件转移指令共有几条? 2、CJNE指令与指令与DJNZ指令有何区别?指令有何区别? 3.2.5 3.2.5 位操作类指令位操作类指令包括:位传送指令、条件转移指令、位运算指令。包括:位传送指令、条件转移指令、位运算指令。位操作由单片机内布尔处置器来完成。位操作由单片机内布尔处置器来完成。位地址的四种表示:位地址的四种表示:1运用直接位地址表示;如运用直接位地址表示;如20H、30H、33H等;等;2运用位存放器名来表示;如运用位存放器名来表示;如C、OV、F0等;等;3用字节存放器名后加位数来表示;用字节存放器名后加位数来表示; 如如PSW.4、P0.5ACC.3等;等; 4字节地址加位数来表示;如字节地址加位数来表示;如20.0、30.4、50.7等。等。 一、位传送指令一、位传送指令MOV C,bit ;C bitMOV bit,C ; bit C 二、位形状控制指令二、位形状控制指令CLR bit ;bit 0SETB bit ;bit 1 CPL bit ;bit / bit CLR C ;C 0SETB C ;C 1 CPL C ;C / C例例1、编程经过、编程经过P1.0线延续输出线延续输出256个宽度为个宽度为5个机器周期长的个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/Z 184.1-2026铸铁第1部分:面向设计的材料与性能
- 2027届湖南省郴州市湘南中学九年级化学第一学期期末调研试题含解析
- 湖北大悟书生学校2027届化学九上期末教学质量检测试题含解析
- 安徽省宿州地区2027届九上化学期末经典试题含解析
- 江西省金溪县2027届九上化学期中监测模拟试题含解析
- 2027届上海市文达学校九年级物理第一学期期末学业水平测试模拟试题含解析
- 2027届北京市石景山区九上化学期中学业质量监测模拟试题含解析
- 2026中国智慧农业物联网技术应用与市场空间评估报告
- 山东省滕州市南沙河中学2027届化学九上期末统考试题含解析
- 2026汽车后市场深度调研与发展趋势及投资布局研究报告
- 2026年秋季初中开学第一课 行为规范 青春有规
- 《医疗器械经营质量管理规范》培训试题及答案
- 2026年金融科技产品推广方案
- 成都市新都区2026年社区网格员招录考试真题库及完整答案
- 城市更新项目策划与实施方案
- 湖南省长沙市望城区2027届六年级数学第一学期期末联考试题含解析
- 2026统考专升本高数:高数Ⅰ考点汇编
- 校长竞聘面试答辩题及答案(精心)
- 高一语文起始课课件
- 运行病历质量检查表(使用版)
- 口腔医院护士岗位职责课件
评论
0/150
提交评论