单片机初级基础第4章0608_第1页
单片机初级基础第4章0608_第2页
单片机初级基础第4章0608_第3页
单片机初级基础第4章0608_第4页
单片机初级基础第4章0608_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。教学重点:1.80C51系列单片机寻址方式所对应 的寻址空间; 2.80C51系列单片机指令功能。教学难点:1.数据传送类指令中对不同的存储空 间应采用的传送指令及寻址方式。 2.间接寻址方式第4章80C51系列指令系统

●一台计算机所能执行的全部的指令集合§4.1指令系统概述指令是计算机中具有特定功能的操作命令●程序与程序设计按预定要求编排的指令序列称为程序。编排的过程称为程序设计●指令系统一种机器的指令系统是机器本身固有的决定了机器的性能用户无法改变,必须继承、学习、掌握、应用机器语言:二进制代码,是机器唯一能直接识别、执行的语言。汇编语言(也称符号语言):为了记忆和阅读方便,制造商对指令系统每一条指令,都给出了指令助记符。用助记符,操作数,标号编写的程序称为汇编语言源程序。一、汇编语言汇编语言必须翻译成机器语言才能被机器执行●程序设计语言汇编语言:高级语言:完成由汇编语言到机器代码的过程叫汇编汇编的方法有两种:自动汇编、手工汇编由机器代码到汇编语言的过程叫反汇编汇编语言源程序机器语言汇编反汇编交叉汇编二、汇编语言的格式[标号:]操作码[操作数][;注释]其中除操作码部分是必须的,括号内的区段是任选项。1、标号标号是该指令的符号地址,可根据需要设定必须以字母开始,以“

:”结束,长度不超过8个字符系统中的保留字符不能作标号,如:SFR名、ADD等标号可被其他语句的操作数直接引用源程序中,一个标号只能定义一个语句,不能相重名字一个汇编语句分为四个区段操作码操作码操作码2、操作码由指令系统的助记符、伪指令助记符组成。操作码是每一句汇编语言所必须的操作码和操作数之间用空格分开3、操作数可为二进制数(B),十进制数(D),十六进制数(H)数字大于9,则数字应以“0”开头可以是操作数地址、立即数、标号、表达式如M+3目的操作数和源操作数之间用“,”分开可以是寄存器名如A、B、R、DPTRM标号被定义过的BinaryDecimalHexadecimal指出该语句的操作性质4、注释以“;”开头,是程序员对指令操作的解释,以帮助阅读、理解程序的意义可有可无汇编时对这部分不予处理,不译成任何机器代码可用英语或某种简洁的方式解释指令,或打印程序清单

1.汇编指令格式 助记符目的操作数,源操作数;(注释) 例如:MOV A,#40H ;把40H送累加器A2.指令代码格式 指令代码在程序存储器中存放的数据形式。 例如上条指令的指令代码为:74H.40H,其中74H为操作码,表达了指令的操作功能,40H为操作数。 根据代码长度,80C51单片机的指令有单字节、双字节和三字节指令。 按照指令执行速度又可分为单周期、双周期和四周期指令。80C51在基本时钟为12MHz时,单周期指令执行速度为1MIPS。4.2寻址方式

指令系统的寻址方式规定了操作数的访问方式。80C51指令系统有寄存器寻址、直接寻址、间接寻址、立即寻址、基址变址寻址和相对寻址等七种寻址方式。4.2.1汇编指令中的符号约定Rn(n=0~7)--当前选中的8个工作寄存器R0~R7,它在片内数据存储器中的地址由PSW中RSl、RS0确定;Ri(i=0或1)--当前选中的用于间接寻址的工作寄存器R0、R1,它在片内数据存储器中的地址由RS0、RS1确定;direct--8位直接地址,可以是片内RAM单元地址或SFR地址;#data8--8位常数;#datal6--16位常数;

addrl6--

16位目的地址,寻址空间64K字节程序存储器;addr11--11位目的地址;rel--补码形式的8位地址偏移量,用于相对转移指令中bit--位地址,片内RAM或SFR的可寻址位的位地址;@--间接寻址寄存器的前缀;/--位操作数的取反操作前缀。以下符号仅出现在指令注释或功能说明中。X--片内RAM的直接地址(包含位地址)或寄存器。(X)--在直接寻址方式中,表示直接地址X中的内容;在间接寻址方式中,表示由间址寄存器X指出的地址单元。((X))--在间接寻址方式中,表示由间址寄存器X指出的地址单元中的内容。--指令操作流程,将箭头左边内容送入箭头右边的单元内。

1.立即数寻址方式 立即数(指令中的常数)直接参与指令操作。立即数前必须加“#”标记。指令中的立即数有8位立即数#data8和16位立即数#data16。例1MOV A,#3AH ;立即数3AH送累加器A图4-1MOVA,#3AH执行示意图

2.直接寻址方式在这种寻址方式中,操作数项给出的是参加运算的操作数的地址。可寻址空间有特殊功能寄存器、内部数据存储器以及位地址。其中特殊功能寄存器和位地址空间只能用直接寻址方式来访问。

例1MOV A,3AH ;把3AH单元的内容送A。

例2MOV P1,#10H ;将立即数10H送P1口。

注意:例2中的目的操作数P1是直接寻址方式,这里用符号P1代替了直接地址90H。图4-2MOVA,3AH执行示意图

3.寄存器寻址方式

寄存器寻址是对选定的工作寄存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR和进位CY中的数进行操作。 例1.MOVA,R2 ;将当前工作寄存器的内容 送累加器A。(指令代码为1字节EA〕

注意R2在片内RAM的位置,它由RS0、RS1决定。如PSW中RS1、RS0的值分别为1、0,则现在的R2属于第二组工作寄存器,那么它的地址为12H。现已知12H中存放着数值4AH,则执行该指令后,4AH就被送到A累加器中。

图4-2MOVA,R2执行示意图4.寄存器间接寻址方式

在这种寻址方式中,操作数所指定的寄存器中存放的不是操作数本身,而是操作数的地址。这种寻址方式用于访问片内数据存储器或片外数据存储器。间接寻址寄存器:Ri(8位地址指针)和DPTR(16位地址指针),间接寻址寄存器前加@表示间址操作。例1MOV R0,#50H MOV A,@R0例2MOV DPTR,#2760H MOVX @DPTR,A图4-3MOVA,@R0执行示意图5.变址寻址(基址寄存器+变址寄存器的间接寻址) 变址寻址方式中使用DPTR或PC作基址寄存器,累加器A作变址寄存器。 采用变址寻址的指令只有三条: MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR 前两条用于程序存储器的查表操作,后一条用于程序的分支散转。

注:只用于对程序存储器(ROM)的访问,不能访问RAM用于访问ROM时,常用于读表格中的数据,又称查表指令A,DPTR访问前可以人为赋值,而PC不能人为改变,所以MOVC A,@A+DPTR可以访问64KB,MOVC A,@A+PC只能访问当前起始地址的256个字节范围。

例1现假设MOVCA,@A+DPTR指令存放在70H单元,ACC中原存放值为E0H,DPTR中值为2000H,则A+DPTR形成的地址为20E0H。20E0H单元中内容为47H,则执行该指令后,ACC中原E0H被47H代替。该指令执行过程示于图4-4。图4-4MOVCA,@A+DPTR执行示意图6.相对寻址方式 相对寻址是将程序转移到相对地址的转移指令。 是将程序计数器PC中的当前内容(转移指令的下一条指令地址)与转移指令第二字节所给出的偏移量相加,其结果作为跳转指令的转移地址。偏移量为带符号的数,其范围为+127~-128。程序设计中,相对地址可以用指令标号或直接地址偏移量数值,但要注意,相对转移地址的偏移量不得超过+127~-128。例1JC03H ;若进位C=0,则程序顺序执行, 即不跳转,PC=PC+2;若进位C= 1,则以PC中的当前内容为基地址, 加上偏移量03H后所得到的结果为该 转移指令的目的地址。

图4-5JC03H指令执行示意图注:①rel偏移量是个8位有符号数,-128~127

②通常我们并不直接写偏移量,而是将其作为标号③这类指令的跳转范围有限7.位寻址方式 位寻址空间:片内RAM的位寻址区(20H~2FH单元的128位)和SFR中的可位寻址的位单元。 位累加器:在进行位操作时,借助于进位位C作为操作累加器。

位地址与字节直接寻址中的字节地址形式完全一样,主要由操作码来区分,使用时需予以注意。例1SETB3DH ;将片内RAM位地址3DH即27H 单元的第5位置“1”。例2ANLC,3DH;将3DH的位状态与进位位C 相与,结果保留在C中。寻址方式寻址空间寄存器寻址工作寄存器R0R7、A、B、CY、DPTR直接寻址片内RAM和特殊功能寄存器SFR间接寻址片内RAM,片外RAM位寻址片内RAM的位寻址区和SFR中的可位寻址的位单元立即数寻址程序存储器基址变址寻址

程序存储器(@A+PC,@A+DPTR)相对寻址在程序存储器256字节范围内转移操作数寻址方式与寻址空间80C51指令按功能分类(5类)⑴数据传送(29条)⑵算术运算(24条)⑶逻辑运算(24条)⑷控制转移(17条)⑸位操作(17条)共111条指令4.3指令系统分类介绍4.3.1数据传送类(29条)用到的指令助记符有5种:片内传送MOV片外传送MOVX查表传送MOVC累加器交换XCH、XCHD、SWAP堆栈操作PUSH、POP1、片内RAM数据(MOV类)传送指令格式:MOV〈目的操作数〉,〈源操作数〉功能:把源字节内容送目的字节,源字节内容不变以累加器A为目的字节的传送:⑴立即数送累加器MOVA,#data74H立即数机器码;立即数#data送累加器A双字节指令,机器码的第一字节为74H,第二字节为立即数⑵寄存器内容送累加器MOVA,Rn(n=0~7)单字节指令,机器码相应为E8H、E9H、…、EFH工作寄存器组的选择由状态字中的RS0、RS1确定⑶内RAM或SFR内容送累加器E8H~EFH机器码MOVA,direct双字节指令,机器码的第一字节为E5H,第二字节为直接寻址字节的直接地址E5H直接地址机器码;Rn的内容送累加器A;以direct为地址的单元的内容送累加器A⑷内RAM内容送累加器MOVA,@Ri(i=0、1)单字节指令,机器码相应为E6H、E7H;以Ri内容为地址单元中的数送累加器AE6H~E7H机器码以Rn为目的字节的传送:⑸立即数送寄存器MOVRn,#data(n=0~7)78H~7FH立即数机器码;立即数#data送累加器

Rn双字节指令,机器码的第一字节为78H~7FH,第二字节为立即数⑹累加器内容送寄存器RnMOVRn,A(n=0~7);累加器A的内容送Rn单字节指令,机器码相应为F8H~FFHF8H~FFH机器码⑺内RAM或SFR内容送寄存器RnMOVRn,direct(n=0~7)双字节指令A8H~AFH直接地址机器码;以direct为地址的单元的内容送寄存器Rn⑻立即数送内RAM或SFRMOVdirect,#data;立即数#data送以direct为地址的单元三字节指令直接地址立即数75H机器码⑼累加器内容送内RAM或SFRMOVdirect,A;累加器送以direct为地址的单元F5H直接地址机器码二字节指令直接地址为目的字节的传送:⑽寄存器内容送内RAM或SFRMOVdirect,Rn(n=0~7);寄存器Rn内容送以direct为地址的单元二字节指令88H~8FH直接地址机器码⑾内RAM或SFR之间直接传送MOVdirect1,direct2源地址目的地址85H机器码;内RAM或SFR任意两个单元之间传送数据三字节指令⑿内RAM数据送内RAM或SFRMOVdirect,@Ri(i=0、1)二字节指令86H~87H直接地址机器码;以Ri内容为地址单元中的数送内RAM或SFR⒀立即数送内RAMMOV@Ri,#data(i=0、1);立即数#data送以Ri内容为地址的单元76H~77H立即数机器码二字节指令直接地址为目的字节的传送:⒁累加器内容送内RAMMOV@Ri,A(i=0、1);累加器内容送以Ri内容为地址的单元单字节指令F6H~F7H机器码⒂内RAM或SFR数据送内RAMMOV@Ri,direct(i=0、1)二字节指令A6H~A7H直接地址机器码;以direct为地址的单元内容送Ri内容为地址的单元⒃16位立即数传送指令MOVDPTR,#data16;16位立即数送DPTR中,设置地址指针。三字节指令立即数高8位立即数低8位90H机器码MOV类传送指令小结MOVA,#data立即数送累加器MOVA,Rn寄存器内容送累加器MOVA,direct直接地址内容送累加器MOVA,@Ri内RAM内容送累加器MOVRn,#data立即数送寄存器MOVRn,A累加器内容送寄存器RnMOVRn,direct直接地址内容送寄存器Rn指令助记符说明字节2121212MOV片内传送指令

MOV类传送指令小结MOVdirect1,direct2内RAM或SFR之间直接传送MOVdirect,@Ri内RAM数据送内RAM或SFRMOVdirect,#data立即数送内RAM或SFRMOVdirect,A累加器内容送内RAM或SFRMOVdirect,Rn寄存器内容送内RAM或SFR指令助记符说明字节32232MOV@Ri,#data立即数送内RAMMOV@Ri,A累加器内容送内RAMMOV@Ri,direct内RAM数据送内RAM或SFRMOVDPTR,#data1616位立即数传送指令2123MOV片内传送指令2、片外数据(MOVX)类传送指令累加器A与外部RAM传送数据用MOVX⑴外部RAM送累加器AMOVXA,@Ri(i=0、1)单字节指令,机器码相应为E2H、E3H;以Ri内容为外部RAM地址的单元中的数送AE2H~E3H机器码⑵累加器内容送外RAMMOVX@Ri,A(i=0、1);累加器内容送以Ri内容为地址的外部RAM单元单字节指令F2H~F3H机器码RDWR⑶外部RAM送累加器AMOVXA,@DPTR单字节指令,机器码相应为E0H;以DPTR内容为地址的外部RAM单元中的数送AE0H机器码⑷累加器内容送外RAMMOVX@DPTR,A;累加器内容送以DPTR内容为地址的外部RAM单元单字节指令,机器码相应为F0HF0H机器码RDWRMOVX类传送指令小结指令助记符说明字节1111MOVXA,@Ri外部RAM送累加器AMOVX@Ri,A累加器内容送外RAMMOVXA,@DPTR外部RAM送累加器AMOVX@DPTR,A累加器内容送外RAMMOVX片外传送指令例:将片外RAM120H单元的内容传送到片外RAM

地址为78H的单元。MOVDPTR,#0120HMOVXA,@DPTRMOVR0,#78HMOVX@R0,A例:将片内RAM12H单元的内容传送到片内RAM

地址为78H的单元。MOV78H,12H;外部RAM送累加器A;累加器内容送外RAM3、查表(MOVC)类传送指令MOVC类传送指令,均为基址加变址寄存器寻址:MOVCA,@A+DPTR;以DPTR作基址寄存器,A作变址寄存器,两者;相加形成ROM地址,将该单元内容读入A单字节指令,机器码相应为93H93H机器码⑴以DPTR作基址加变址寻址长查表指令16位MOVCA,@A+PC单字节指令,机器码相应为83H83H机器码⑵以PC作基址加变址寻址;取指后PC增“1”,以当前PC作基址,A作变址,两者;相加形成ROM地址,将该单元内容读入A短查表指令MOVC类传送指令小结指令助记符说明字节11MOVCA,@A+DPTRMOVCA,@A+PC以DPTR作基址加变址寻址以PC作基址加变址寻址MOVDPTR,#2000HMOVCA,@A+DPTR2004H2003H2002H2001H2000H2008H2009H2005H2006H2007H存储器00H01H04H09H10H19H24H31H40H51H例:在外部ROM中存放0~9的平方值。根据累加器

A中的数(0~9),查找对应的平方值。用DPTR作基址寄存器指向表格的首地址用A作变址寄存器实际上A中的值是表格中的第几项表格首址操作码PCPCDPTR2000HA

03H09HMOVCA,@A+DPTR93HROM……00H2000H01H04H09H2001H2002H2003H…;设(A)=03H,查“3”的平方ALU用PC作基址寄存器,它并不指向表格首址;是PC当前值与所查表格首址之间的距离;即(PC)+#dataTABBEL表格首址设(A)=03H,是表格中的第3项;单字节指令,设指令在ROM中的地址为1FF0HADDA,#dataMOVCA,@A+PC2000H1FF1H-000FH;#data是变址调整值#dataPC当前值表格首址TABBEL:DB00HDB01HDB04H…DB09H2000H12HA……PCPC2003HTABBELPCPC操作码MOVCA,@A+PC93HROM……00H2000H01H04H09H2001H2002H2003H…1FF0H1FF1H(PC)=1FF1HA12H09H;查“3”的平方ALUTABBEL4、交换(XCH、XCHD、SWAP类)传送指令⑴寄存器内容与累加器内容交换XCHA,Rn(n=0~7)C8H~CFH机器码;(A)(Rn)单字节指令⑵内RAM或SFR内容与累加器内容交换XCHA,direct(n=0~7);(A)(direct)双字节指令C5H直接地址机器码⑶内RAM内容与累加器内容交换XCHA,@Ri(i=0,1);(A)((Ri))单字节指令C6H~C7H机器码⑷内RAM内容低4位与累加器低4位内容交换XCHDA,@Ri(i=0,1);(A3~0)((Ri)3~0)单字节指令D6H~D7H机器码A(Ri)⑸累加器A高4位与低4位交换SWAPA;(A3~0)(A7~4)单字节指令C4H机器码A交换类传送指令小结指令助记符说明字节12111XCHA,RnXCHA,direct寄存器内容与累加器内容交换直接地址内容与累加器内容交换XCHA,@RiXCHDA,@Ri内RAM内容与累加器内容交换内RAM内容低4位与累加器低4位交换SWAPA累加器A高4位与低4位交换5、堆栈操作指令⑴进栈指令PUSHdirectC0H直接地址机器码;SP自动增“1”,(SP)(SP)

+1;direct地址单元的内容压入SP指向的单元双字节指令⑵出栈指令POPdirectD0H直接地址机器码;SP自动减“1”,(SP)(SP)

-1;SP指向的单元内容弹出到以direct为地址的单元双字节指令SPSP例:堆栈操作设(A)=55H,(B)=3FH’建立堆栈’压入操作’弹出操作

60H61H62H63H64H55H3FHSPMOVSP,#60HPUSHAPUSHBPOPPSWSP结果:PSW的内容3FH,SP的内容为61HPSW3FH传送指令应用举例例1A=5BH,R1=10H,R2=20H,R3=30H,(30H〕=4FH,执行指令: MOVR1,A;A送R1 MOVR2,30H;(30H)送R2MOVR3,#83H;83H送R3 执行后,R1=5BH,R2=4FH,R3=83H

例2已知片内RAM50H单元中存放数值为AAH,设堆栈指针为30H,把此数值压入堆栈,然后再弹出到40H单元中。MOVSP,#30H;30HSPPUSH50H;(SP)+1SP, (50H)31HPOP40H;(31H)40H, (SP)-1SP例3已知当前PC值为2010H,请用两种方法将程序存储器20F0H中的常数送入累加器A中。

解:方法一、使用查表指令MOVCA,@A+PC MOV A,#0DFH MOVCA,@A+PC

方法二、使用查表指令MOVCA,@A+DPTR MOV DPTR,#20F0H CLR A MOVCA,@A+DPTR

4.3.2算术运算类指令(共24条)

1..算术运算类指令分类 算术运算类指令主要是对8位无符号数据进行算术操作,其中包括加(ADD)、带进位加(ADDC)、带借位减法(SUBB)、乘(MUL)、除(DIV)、加1(INC)、减1(DEC)指令;借助溢出标志,可对有符号数进行补码运算;借助进位标志,可进行多精度加、减运算;也可以对压缩BCD数进行加法运算。

ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data8 MUL AB DIV ABINC A INC @Ri INC direct INC DPTRDA A算术运算操作对PSW中标志位的影响指令PSW中的标志位COVACADD∨∨∨ADDC∨∨∨SUBB∨∨∨MUL0∨-DIV0∨-

2.算术运算指令应用举例例1已知A=DBH,R4=73H,CY=1,执行指令“SUBBA,R4”则结果如下:A=67H,CY=0,OV=1 4.3.3逻辑运算类指令(共25条)

逻辑运算类指令主要用于对两个操作数按位进行逻辑操作,操作结果送到A累加器或直接寻址单元,若直接地址为I/O端口,则为“读-改-写”操作。这类指令执行的操作主要有“与”(ANL)、“或”(ORL)、“异或”(XRL)以及累加器自身的循环移位、取反(CPL)、清除(CLR)等。 这些指令执行时一般不影响程序状态字寄存器PSW,仅当目的操作数为ACC时对奇偶标志位有影响。1.逻辑“与”指令ANLA,RnANLA,#dataANL A,direct ANL A,@Ri ANL direct,AANLdirect,#dataCLR A CPL ARLC A ;带进位位的循环左移 RL A ;循环左移2.逻辑运算指令举例例1已知A=1AH,R0=45H,(45H)=39H,执行指令ORLA,@R0,则操作如下:00011010(1AH)+)00ll1001(39H)00111011(3BH)

结果:A=3BH,R0=45H,(45H)=39H,P=14.3.4转移操作类指令(共17条) 这类指令的功能主要是控制程序从原顺序执行地址转移到其它指令地址上。包括跳转、调用、散转、返回及空操作等操作。1.转移操作类指令分类

跳转:

LJMP addr16 ;addrl6PC AJMP addr11 ;PC+2PC,addr11PC.10PC.0 SJMP rel ;PC+2+relPC,rel是带符号的8位偏 移量

调用和返回:

LCALL addr16 ;PC+3PC,SP+1SP, PC.7~PC.0(SP),SP+1SP, PC.15~PC.8(SP),addr16PC ACALLaddr11;PC+2PC,SP+1SP, PC.7~PC.0(SP),SP+1SP, PC.15~PC.8(SP), addr11PC.10~PC.0

RET ;(SP)PC.15~PC.8,SP-1SP,(SP)PC.7~PC.0,SP-1SP

RETI ;除具有RET指令的功能外,还能将优 先级状态触发器清除。

散转:JMP@A+DPTR;A+DPTRPC,根据A中数值的不同,程序实现不同的分支转移空操作:NOP

条件转移JZrel ;A=0:PC+2+relPC A≠0:PC+2PCJNZrel ;A≠0:PC+2+relPCA=0:PC+2PCDJNZRn,re1 ;Rn-1Rn,Rn≠0:PC+2+relPCRn=0:PC+2PCDJNZdirect,rel ;(direct)-1(direct),(direct)≠0:PC+3+relPC(direct)=0:PC+3PCCJNEA,direct,rel ;A=(direct):PC+3PC,0CA>(direct):PC+3+relPC,0CA<(direct):PC+3+re1PC,1CCJNEA,#data,rel ;A=data:PC+3PC,0CA>data:PC+3+relPC,0CA<data:PC+3+relPC,1CCJNERn,#data,rel;Rn=data:PC+3PC,0CRn>data:PC+3+relPC,0CRn<data:PC+3+relPC,1CCJNE@Ri,#data,rel;(Ri)=data:PC+3PC,0C(Ri)>data:PC+3+relPC,0C(Ri)<data:PC+3+relPC,1C2.转移指令应用举例例1、根据R7的内容,转向各个操作程序。R7=0, 转入OPR0R7=1, 转入OPR1

R7=n, 转入OPRn解:JUMP1:MOVDPTR,#JPTAB1;跳转表首地址送数据指针MOVA,R7 ;R72A(修正变址值)ADDA,R7JNCNOAD ;判有否进位INCDPH ;有进位则加到高字节地址 NOAD:JMP@A+DPTR;转向形成的散转地址入口JPTAB1:AJMPOPR0;直接转移地址表AJMPOPR1

AJMPOPRn例2某子程序SUB1入口地址是340BH,调用指令LCALLSUB1地址为2042H,该段程序调用过程中PC及SP的变化如下:地址指令注释2040HMOVSP,#20H ;设置堆栈指针,20HSP2042HLCALLSUB1 ;调用子程序,2045HPC,21HSP,45H(21H), 22HSP,20H(22H),340BHPC340BHSUB1:MOVA,R03412HRET ;(22H)PCH,(21H)PCL,此时PC=2045H,SP=20H例3、根据A中数值,置相应的标志位。

当#dataL≤A≤#dataH,标志位F0清零;否则F0置1。

解: ORG 2000H ST: CLR F0 CJNE A,#dataH,HCNT RET HCNT:JC LC SF0: SETB F0 RET LC: CJNE A,#dataL,LCNT RET LCNT:JC SF0 RET

4.3.5位操作类指令(共17条) 包括位变量传送、逻辑运算、控制程序转移等指令。在进行位操作时,位累加器C为进位标志CY。在汇编语言中位地址的表达方式有如下几种:(l)直接(位)地址方式:如D4H;(2)点操作符号方式:如PSW.4,(D0H).4;(3)位名称方式:如RS1;(4)用户定义名方式:如用伪指令bit定义下式: SUB.REGbitRS1经定义后,指令中可以用SUB.REG代替RS1。

上面4种方式都可表达PSW(D0H)中第4位,它的位地址是D4H,名称为RS1,用户定义为SUB.REG。

1.位操作指令分类位数据传送指令:

MOVC,bit;bitCMOVbit,C;Cbit,对端口操作时,是“读-改-写”指令。位逻辑运算指令

ANLC,bit;CbitCANLC,/bit;C/bitC ORLC,bit;CbitCORLC,/bit;C/bitC位修正指令

CLR C ;0CCLR bit

温馨提示

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

评论

0/150

提交评论