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

下载本文档

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

文档简介

1、第第3 3章章 AT89C51指令系统指令系统第第3章章 AT89C51指令系统指令系统 3.1 指令系统简介指令系统简介3.2 寻址方式寻址方式 3.3 AT89C51指令系统指令系统 3.4 实验实验 习题与思考题习题与思考题 第第3 3章章 AT89C51指令系统指令系统3.1 指令编码格式及常用符号指令编码格式及常用符号 AT89C51单片机共有111条指令。其中,单字节指令49条,双字节指令45条,三字节指令17条。在111条指令中,有64条是单机器周期指令,45条双机器周期指令,两条四机器周期指令。计算机执行指令时间的长短并不取决于指令所占存储器的字节数,而是取决于所占用的机器周期

2、数。第第3 3章章 AT89C51指令系统指令系统一、机器指令1.格式 : 操作码 操作数(或操作数所在地址)操作码:用来规定指令执行的操作功能。比如:加、减、比较、传送等。2.机器指令类型分为单字节、双字节及三字节指令。(指机器码)1) 单字节指令(49条)(1)该字节只表示操作码。如: NOP 指令,机器码00H。(2)前5位表示操作码,后三位表示寄存器编码。如: MOV A,R0 机器码:1110 1000B 或 E8H 2) 双字节指令(45条)第一个字节为操作码,第二个字节为操作数或操作数所在的地址。如:MOV A,#50H 机器码:74H 50H第第3 3章章 AT89C51指令系

3、统指令系统3) 三字节指令(17条)第一个字节为操作码,后面两个字节为操作数或操作数所在的地址。如: MOV 20H,#50H 机器码:75H 20H 50H二、汇编指令(符号指令)格式汇编指令(符号指令):即用助记符来表示指令的操作功能。它比机器指令容易识别和记忆。标号 操作助记符 目的操作数 ,源操作数 ;注释第第3 3章章 AT89C51指令系统指令系统 三、符号注释 在以后章节的学习过程中,经常用到一些符号,下面逐一介绍。 (1) Rn(n=07):表示八个通用寄存器R0R7。 (2) Ri(i=0,1):表示两个寄存器R0、R1,它们常在间接寻址中作为8位地址指针。 (3) #DAT

4、A:表示8位立即数,即包含在指令中的8位常数,如#30或#00110001B。第第3 3章章 AT89C51指令系统指令系统 (4) #DATA 16:表示16位立即数,即包含在指令中的16位常数,如#2010H。 (5) direct:表示片内RAM(含特殊功能寄存器)的直接地址。 (6) addr11:表示11位目的地址。 (7) addr16:表示16位目的地址。 (8) rel:表示带符号的8位地址偏移量。 第第3 3章章 AT89C51指令系统指令系统(9) bit:表示位地址。(10) :作为寄存器的前缀,表示间接寻址。(11)$:指本条指令起始地址。如:SJMP $以下在注释中用

5、(12):表示将箭头左边内容送入箭头右边。(11)()-表示地址单元或寄存器中的内容。()-表示间接寻址,以单元或寄存器中的内容为地址的单元内容。第第3 3章章 AT89C51指令系统指令系统3.2 寻址方式寻址方式 MCS-51的基本寻址方式有7种,它与存储空间结构有关。寻址方式寻址空间寄存器寻址R0R7A ,B,C ,SP,DPTR直接寻址内部RAM的低128字节特殊功能寄存器(SFR)内部RAM中20H2FH的128个位地址特殊功能寄存器中的位地址立即寻址ROM存储器地址寄存器间接寻址内部RAM (R0,R1,SP)内部RAM的低8位地址(R0,R0)外部RAM或I/O端口地址(R0,R

6、1,DPTR)变址寻址程序存储器ROM(A+DPTR,A+PC)相对寻址程序存储器ROM位寻址内部RAM中20H2FH的128个位特殊功能寄存器中的位地址第第3 3章章 AT89C51指令系统指令系统(源操作数和目的操作数都有不同的寻址方式,通常我们源操作数和目的操作数都有不同的寻址方式,通常我们所说的所说的寻址方式一般指源操作数的寻址方式寻址方式一般指源操作数的寻址方式) 1. 立即数寻址用“#”号表立即寻址。指令中直接给出操作数。对应存储器的空间为ROM。例:MOV A ,#70H ;(A) = 70H(70H为常数)指令对应机器码:74H 70H,它们保存在ROM中。注意:在MCS-51

7、中,只有一条16位立即数指令。既 MOV DPTR,#data16 ;(DPTR) = data16 第第3 3章章 AT89C51指令系统指令系统 2直接寻址 直接寻址是指在指令中直接给出操作数所在存储单元的地址。执行指令时,从该地址中直接获取操作数。它可访问的三种存储空间:1)特殊功能寄存器;一般用符号表示 例:MOV A,P0 ; (A)=(P0)其中P0代表的直接地址为80H。2)内部RAM的128个字节;用地址表示例:MOV A,78H ;(A)=(78H)3)位地址 例:MOV C , 20H ; CY = (20H)SETB EA ; EA = 1 第第3 3章章 AT89C51

8、指令系统指令系统3AH3AHA内部RAM40H图3-1 直接寻址示意图画图举例:MOV A, 40H ; (A)= 3AH第第3 3章章 AT89C51指令系统指令系统 3寄存器寻址 寄存器寻址是指把寄存器的内容作为操作数。1)可用R0R7来寻址。例:MOV A,R0 ;(A)= (R0) 2)也可用A、B、DPTR和C。B以AB形式出现例:DIV AB ; (A)(B) , 商和余数存于A ,B中第第3 3章章 AT89C51指令系统指令系统 4寄存器间接寻址 在寄存器间接寻址中,指令中的一个操作数是加了前缀“”的寄存器,“”表示该寄存器中的内容是表示该寄存器中的内容是操作数所在的地址操作数

9、所在的地址。执行指令时,计算机根据这个地址取出操作数完成相应的操作。在AT89C51中,可用于间接寻址的寄存器是R0、R1、DPTR。其中,R0和R1用于8位地址寻址,DPTR用于16位地址寻址。第第3 3章章 AT89C51指令系统指令系统具体使用如下:1)对内部对内部RAM的的256个地址可用个地址可用Ri寻址,并采用寻址,并采用MOV指令指令。MOV A,R0 ; (A) (R0)2)外部外部RAM空间的访问,必须采用空间的访问,必须采用MOVX指令。指令。(1)外部RAM的低256个地址,可用Ri寻址低8位地址,并由P2口提供高8位地址。MOVX A,R1 ;(A ) (R1)(2)全

10、部64K的外部RAM访问,则要采用DPTR指针作间接寻址。MOVX A,DPTR ;(A) (DPTR) 3)执行)执行PUSH和和POP指令时,需用指令时,需用SP指针间接寻址。指针间接寻址。PUSH ACC ;(SP+1) (A) 第第3 3章章 AT89C51指令系统指令系统58H58HA内部RAM20H20HR0图3-2 间接寻址示意图例:已知(R0) = 20H ,(20H)=58H,则执行指令1)MOV A, R0 后,(A)= 20H2)MOV A, R0 后,(A)= 58H第第3 3章章 AT89C51指令系统指令系统注意区别:1)直接寻址与寄存器寻址的区别;例:INC A

11、(对应机器码:04) INC ACC (对应机器码:05 E0)MOV A,#30H 机器码:74 30MOV ACC,#30H 机器码:75 E0 302)寄存器寻址和寄存器间接寻址3)字节地址与位地址的区别,按数据匹配原则;例:MOV A,20H (字节地址) MOV C,20H (位地址)错误指令:MOV R0,#1000H 修改为:MOV DPTR,#1000H第第3 3章章 AT89C51指令系统指令系统 5变址寻址(基址寄存器+变址寄存器)该指令访问的空间是程序存储器程序存储器ROM;它以16位的PC指针或DPTR指针作为基址基址寄存器,以8位的累加器A作为变址变址寄存器。1)PC

12、+A类,寻址范围256B内。格式:MOVC A,A+PC ;(PC) = (PC)+1,(A) = ( (A)+(PC) ) 2)DPTR+A类;寻址范围64KB。 (要求掌握) MOVC A , A+DPTR; (A)= ( (A)+(DPTR) )第第3 3章章 AT89C51指令系统指令系统 3) JMP A+DPTR 散转指令 例如执行“MOVC A,A+DPTR ”指令时,用累加器A的内容加上DPTR的内容作为一个地址,然后从这个地址中取出操作数送入累加器中。第第3 3章章 AT89C51指令系统指令系统2000H20HADPTR指令执行前2020H47H47HAROM指令执行后图3

13、-3 变址寻址示意图例:已知(DPTR)= 2000H,(A)=20H, ROM单元 (2020H)=47H,则执行 MOVC A,A+DPTR 后,(A) = 47H第第3 3章章 AT89C51指令系统指令系统 6相对寻址 相对寻址是将程序计数器PC中的当前值与指令第二字节给出的偏移量相加,其结果作为跳转指令的转移地址。相对寻址主要用于转移类指令,寻址范围是程序存储器。 目的地址=源地址+本条转移指令字节数+rel =PC+rel 举例:SJMP MAIN JC LOOP 7位寻址 位寻址是指指令的操作数为8位二进制数的某一位,指令中给出的是操作数的位地址。可用于位寻址的区域是片内RAM

14、20H2FH单元和部分特殊功能寄存器。第第3 3章章 AT89C51指令系统指令系统1)MCS-51设有独立的位处理指令系统(17条),其操作数是一位的二进制数,指令中位地址用bit表示。如:MOV C , bit ;CY= (bit)2)位地址可有三种表示方法:(1)直接使用位地址MOV C , 20H(2)采用第几字节地址单元第几位表示MOV C , 20H.0(3)特殊功能寄存器可用寄存器名加位数表示MOV C , P1.0第第3 3章章 AT89C51指令系统指令系统课 题(章节名称)3.3 数据传送指令时间2011年3月12日星期1 3、4节 第7次课教学目的与要求掌握数据传送指令并

15、熟练应用教学重点数据传送指令的应用教学难点访问内部数据存储器的传送指令的应用教学方法讲授法教学时数2课外作业主要内容时间分配以A为目的操作数的指令以Rn为目的操作数的指令以直接地址为目的操作数的指令以间接地址为目的操作数的指令以DPTR为目的操作数的指令访问外部RAM的指令读ROM指令数据交换指令堆栈操作指令20303020课后小结第第3 3章章 AT89C51指令系统指令系统3.3 AT89C51指令系统指令系统一、数据传送类指令 数据传送指令是进行数据处理的最基本的操作,在指令系统中占的比重较大。按操作数位数分为8位和16位的传送指令,但16位的只有一条。按类型分:1)一般的传送指令,采用

16、MOV指令;2)特殊的传送指令。如:MOVC ,MOVX ,堆栈指令,交换指令。第第3 3章章 AT89C51指令系统指令系统一、访问片内RAM传送指令(即MOV指令) 片内RAM传送指令功能是将源操作数的内容传送到目的操作数,而源操作数内容不改变。1)以累加器)以累加器A为目的操作数为目的操作数(4种寻址方式) 助记符助记符 功能功能 机器码及字节数机器码及字节数MOV A,direct (A)=(direct) E5 diMOV A,Ri (A) = (Ri) E6、E7 MOV A,Rn (A) = (Rn) E8EFMOV A,#data (A)= data 74 da例如:MOV A

17、,R6MOV A,70HMOV A,R0MOV A,#70H第第3 3章章 AT89C51指令系统指令系统2) 以以Rn为目的操作数为目的操作数(3种寻址方式)MOV Rn,A(direct, #data)错误指令:错误指令:MOV R1,R2 修改:修改:MOV A,R2 MOV R1,A错误指令:错误指令: MOV R7,R13) 以以direct为目的操作数为目的操作数(5种寻址方式)MOV direct1,A(Rn,Ri,#data,direct2)例如:MOV P1,A MOV 70H,R2 MOV 0E0H,78H MOV 40H,R0 MOV 01H,#80H第第3 3章章 AT

18、89C51指令系统指令系统4) 以以Ri为目的操作数(为目的操作数(3种寻址方式)种寻址方式)MOV Ri,A(direct, #data)例如:已知(A)=77H,(R1)=20H,(20H)=88H MOV R1,A问(R1)=20H ,(20H)=77H MOV R0,70H MOV R1,#80H错误指令:错误指令:MOV R1,R2 MOV R1,R05) 16位数据传送指令位数据传送指令(只有1条)MOV DPTR,#data16;(DPH)= data16高8位,(DPL)= data16 低8位第第3 3章章 AT89C51指令系统指令系统二、访问外部RAM传送指令(MOVX指

19、令)必须采用寄存器间接寻址,且一定要同过累加器必须采用寄存器间接寻址,且一定要同过累加器A来传递数据。来传递数据。1)MOVX A,DPTRMOVX DPTR,A2)注意:16位地址的访问,也可采用P2口输出高8位地址,Ri输出低8位地址的方法MOVX A,RiMOVX Ri,A例:将片外RAM1002H单元内容送给A,写出实现要求的指令,已知片外RAM1002H单元内容为30H, 片内RAM02H单元内容为40H 。法1:MOV DPTR,#1002HMOV X A,DPTR ; (A)=30H法2:MOV P2,#10HMOV R0,#02HMOVX A,R0; (A)=30HMOV A,

20、 R0 ; (A)=40H第第3 3章章 AT89C51指令系统指令系统 例1 将片外RAM 2000H单元内容送入片内RAM 20H单元中。MOV DPTR,#2000HMOVX A,DPTR ;片外2000H单元内容累加器A MOV 20H,A ;(A)片内20H单元错误做法: MOV 20H,2000H第第3 3章章 AT89C51指令系统指令系统例2 将片外RAM 1000H单元内容送入片外RAM 3000H单元。 MOV DPTR,#1000H;地址指针指向1000H MOVX A,DPTR;将1000H单元内容送入A MOV DPTR,#3000H;地址指针指向3000H MOVX

21、 DPTR,A ;将累加器A的内容送入3000H单元错误做法:MOVX 3000H,1000H第第3 3章章 AT89C51指令系统指令系统三、访问ROM的传送指令(查表指令)MOVC查表指令是指程序存储器程序存储器内的查表指令,用来获取程序存储器数据表格中的数据,并将获取的数据送入累加器A中。1. MOVC A,A+PC (了解)(了解)2 MOVC A,A+DPTR (要求掌握)(要求掌握)注意,它们是对程序存储器进行操作,故必须采用必须采用MOVC指令指令;区分两者寻址范围大小。 前者为256B,后者为64KB。第第3 3章章 AT89C51指令系统指令系统2000H20HADPTR指令

22、执行前2020H47H47HAROM指令执行后变址寻址示意图例:已知(DPTR)= 2000H,(A)=20H, ROM单元 (2020H)=47H,则执行 MOVC A,A+DPTR 后,(A) = 47H第第3 3章章 AT89C51指令系统指令系统 例4 下面的程序从程序存储器1000H单元开始存放,写出执行下列程序后,累加器A、寄存器R0和指针DPTR的值。MOV DPTR,#1000H ;数据指针DPTR指向1000H表格首地址MOV A,#01H ;偏移量01HAMOVC A,A+DPTR ;从表格中取数MOV R0,A ;保存已知ROM单元中的内容如下表:第第3 3章章 AT89

23、C51指令系统指令系统ROM单元地址内容1000H02H1001H04H1002H06H1003H08H执行前,(A)=01H,(DPTR)=1000H则执行MOVC A,A+DPTR指令后,结果为(A)=04H, (R0)=04H, (DPTR)=1000H。第第3 3章章 AT89C51指令系统指令系统 四、堆栈指令 堆栈是在内部RAM中开辟的一端相对固定,一端活动的存储空间,活动端称为栈顶,固定端称为栈底,所有数据的存入和取出都从栈顶进行。堆栈主要用于进行数据保护。 在AT89C51中,堆栈是自底向上生成的,寄存器SP始终指向栈顶地址。复位时,SP的初值为07H,但这个初值可以通过“MO

24、V SP,#DATA”语句来修改,以确定堆栈的使用空间。通常SP的内容设定为大于等于30H。第第3 3章章 AT89C51指令系统指令系统指令格式:进栈 PUSH direct ;SP (SP)+1, (SP)(direct )出栈 POP direct ;direct (SP) , SP (SP)-1PUSH指令用于把直接寻址的一个字节数压入栈顶。执行这条指令时,先将栈顶指针SP的值加1,然后把直接寻址单元里的数存入到SP指向的单元中。 POP指令用于把栈顶的内容送入直接寻址的一个单元中,然后栈顶指针SP的值减1 。 注意:这两条指令的操作数都采用直接寻址 , 这两条指令要成对使用。第第3

25、3章章 AT89C51指令系统指令系统例5 执行下列指令,注意累加器A的变化。 1) MOV SP,#60H;设置堆栈初值2)MOV A,#17H;17H送入A3)PUSH ACC;将17H压入堆栈保存4) MOV A,# 88H ;修改A的内容5) MOV R1,A;(A)R16) POP ACC;将17H弹出并送入累加器中执行完上述程序段后,问堆栈的变化,并画图说明。堆栈的变化,并画图说明。第第3 3章章 AT89C51指令系统指令系统执行前堆栈情况(SP)=07H(R1)=00H(A)=00H地址内容07H00H08H00H09H00H执行指令1)2)后的堆栈情况,此时(A)=17H(S

26、P)=60H地址内容60H00H61H00H62H00H执行指令3)后的堆栈情况,此时(A)=17H(SP)=61H地址内容60H00H61H17H62H00H第第3 3章章 AT89C51指令系统指令系统执行指令4)5)后的堆栈情况,此时(A)=88H(R1)=88H(SP)=61H地址内容60H00H61H17H62H00H执行指令6)后的堆栈情况,此时(A)=17H (SP)=60H地址内容60H00H61H17H62H00H第第3 3章章 AT89C51指令系统指令系统 5交换指令指令格式:XCH A,Rn (direct , Ri )XCHD A, Ri SWAP A(1) XCH

27、指令是将源操作数的值与目的操作数累加器A的值全字节交换 (2) XCHD 指令是将源操作数与目的操作数累加器A低4位内容交换,而高4位不变; (3) SWAP指令是将累加器A的内容高4位和低4位互换。第第3 3章章 AT89C51指令系统指令系统例6 设(A)=47H,(R0)=58H,(58H)=36H,分别执行下列指令,写出累加器A和各寄存器的值。执行结果 XCH A,R0;(A)=58H,(R0)=47HH XCH A,R0;(A)=36H,(58H)=47H XCHD A, R0;(A)=46H,(58H)=37H SWAP A;(A)=74H第第3 3章章 AT89C51指令系统指令

28、系统课 题(章节名称)3.4 算术运算指令时间2011年3月19日星期4 1、2节 第8次课教学目的与要求掌握算术运算指令并熟练应用教学重点加、减法指令教学难点PSW标志位的变化教学方法讲授法教学时数2课外作业主要内容时间分配加法指令减法指令乘法指令除法指令补充内容3015101020课后小结第第3 3章章 AT89C51指令系统指令系统 3.4 算术运算类指令算术运算类指令 算术运算指令(24条)可以完成加、减、乘、除、增1和减1运算操作。 这类指令大多数都同时以这类指令大多数都同时以A为源操作数之一为源操作数之一,同时又将同时又将A作为目的操作为目的操作数,暂时保存运算结果。作数,暂时保存

29、运算结果。 算术运算操作将影响程序状态字算术运算操作将影响程序状态字PSW中的标志位中的标志位。具体见表3.4。 标志位加减法指令ADD,ADDC,SUBB十进制调整指令DA乘除法指令MUL,DIVCY0ACOVP表3.4 算术指令对状态标志位的影响第第3 3章章 AT89C51指令系统指令系统一、加法指令 1不带进位加法指令 ADD是不带进位的加法运算指令,其功能是将累加器A的内容与源操作数的内容相加,结果送入累加器A中,源操作数指定单元的内容不变。该指令执行结果影该指令执行结果影响标志位响标志位CY、OV、AC、P。第第3 3章章 AT89C51指令系统指令系统 加法指令对加法指令对PSW

30、标志位的影响及判断方法:标志位的影响及判断方法: 1) 进位标志CY: 和的D7位有进位时,CY=1;否则,CY=0。 2) 半进位标志AC:和的D3位有进位时,AC=1;否则,AC=0。 3) 溢出标志溢出标志OV:和的:和的D7,D6位只有一个有进位时位只有一个有进位时,OV=1;和的;和的D7, D6位同时有进位或同时无进位时,位同时有进位或同时无进位时,OV=0。 若是两个有符号数相加,因为符号位要参加运算,就有可能产生溢出现象,即超出单字节数所能表示的有符号数的最大范围(-128+127)。比如两个负数相加,结果为正数,显然不对,这就是溢出。 编程者使用时,首先要确定参与运算的数据是

31、无符号数还是有符号数,然后再根据结果的状态标志进行判断:对于无符号数用JNC或JC,对于有符号数用JNB或JB。 4)奇偶标志位P:当结果中1的个数为奇数时,P=1;结果中1的个数为偶数时,P=0.第第3 3章章 AT89C51指令系统指令系统例:已知2个无符号数无符号数,(A) = 84H,(30H) = 8DH,试分析执行 ADD A, 30H 后的结果。 由于是无符号数相加,只需考察进位标志CY即可。 如果和不大于如果和不大于255,则用8位的存储单元即可存放结果;如果和大于如果和大于255,则要用多字节多字节形式表示。例:已知2个有符号数有符号数,(A) = 84H,(30H) = 8

32、DH,试分析执行 ADD A, 30H 后的结果。 由于是有符号数加法,只需考察溢出标志即可。若OV=1 ,则结果超出有符号数表示范围,结果不正确。第第3 3章章 AT89C51指令系统指令系统结果: (A)=11H,CY= 1,AC= 1,OV1(D7有进位,D6无进位), P0。 第第3 3章章 AT89C51指令系统指令系统 2带进位的加法指令带进位的加法指令ADDC A , #data ( direct , Ri , Rn ) ; A = (A) + data + (CY) 与ADD一样,影响程序状态字PSW。注意:这里所加的进位标志注意:这里所加的进位标志CY的值是在该指令执行之前已

33、经存在的的值是在该指令执行之前已经存在的进位标志的值,而不是执行该指令过程中产生的进位。进位标志的值,而不是执行该指令过程中产生的进位。 ADDC指令一般用于多字节加法运算,在多字节加法运算中,低字节加法结果可能产生进位,用ADDC指令可使高字节相加的同时加上低字节的进位。该指令执行结果影响标志位CY、OV、AC、P。第第3 3章章 AT89C51指令系统指令系统例:编程实现两个数 24A5H + 1396H。结果存于片内RAM单元30H和31H。分析:该题属于2个多字节数相加。低字节相(即A5H+96H)加时,一般用ADD指令。从第2个字节(即24H+13H)开始需使用ADDC指令,把低字节

34、的进位加进来。第第3 3章章 AT89C51指令系统指令系统采用顺序结构的程序如下: MOV A,#0A5H ADD A, #96H ;取两个数的低字节相加 MOV 30H, A ;存低字节的和 MOV A, #24H ADDC A,#13H ;取两个数的高字节相加,同时把进位位加上 MOV 31H,A ;存高字节的和第第3 3章章 AT89C51指令系统指令系统 3加1指令 INC A (direct , Ri , Rn , DPTR ) ; A (A) + 1 该指令用于将操作数的内容加1。该指令除影响奇偶标志位P外,不会对其他任何标志位产生影响。 INC指令通常用在循环程序中,用来修改地

35、址指针。使指针指向下一个要取的数据所在的地址。例: INC R0 INC R1 INC DPTR 第第3 3章章 AT89C51指令系统指令系统4. 十进制调整指令 DA A ;调整A的内容为正确的BCD码 该指令的功能是对A中刚进行的两个BCD码的加法的结果作十进制调整。影响进位标志影响进位标志CY。 十进制调整指令是一条对累加器A中的BCD码进行调整的指令。应用时必须跟在ADD或ADDC指令后面。因为当两个压缩的BCD码按二进制作加法运算时,其结果不一定是压缩的BCD码,所以必须用DA指令进行 加加6 调整。例: 若(A)= 69BCD ,(R2)= 58BCD 。执行指令 ADD A ,

36、R2 DA A即可自动对结果进行调整。第第3 3章章 AT89C51指令系统指令系统二、减法指令 1. 带借位减法指令 SUBB A , #data ( direct , Ri , Rn ) ; A (A) - data -(CY) SUBB指令功能是将累加器A中内容减去源操作数的内容及进位CY的值,结果送入累加器A中。该指令对标志位CY、OV、AC、P的影响类似加法指令。 由于没有不带借位的减法指令,故由于没有不带借位的减法指令,故要完成不带借位的减要完成不带借位的减法,只需先将法,只需先将CY清清0”即可。即可。 第第3 3章章 AT89C51指令系统指令系统例:若(A)=C9H,(R2)

37、=54H,(CY)=1,试分析执行指令 SUBB A,R2 后,累加器A的内容及PSW标志位的状态。解: (A)=1100 1001-(R2)=0101 0100 0111 0101-(CY) -1 0111 0100结果:(A)=74H,(CY)=0,(AC)=0,(OV)=1(D6位有借位,D7无借位),(P)=0.第第3 3章章 AT89C51指令系统指令系统2减1指令DEC A (direct , Ri , Rn ) ; A (A) 1 该指令用于将操作数的内容减1。与INC指令相同,仅影响奇偶标志位P。 (注意:相比INC 指令,少了操作数DPTR)第第3 3章章 AT89C51指令

38、系统指令系统三、 乘法指令 MUL AB ;(A) (B) , A 乘积的低8位 , B 乘积高8位 乘法指令功能是将累加器A的内容和寄存器B的内容相乘,结果是16位二进制数。其中高8位保存在寄存器B中,低8位保存在累加器A中。两个乘数均为无符号无符号8位位二进制数二进制数。 若乘积大于0FFH,溢出标志OV=1,否则为0。例:设(A)=C5H,(B)=08H,则执行指令“MUL AB”后,结果为(B)=03H,(A)=28H,表示积(BA)=0328H,OV=1。第第3 3章章 AT89C51指令系统指令系统 四、除法指令 DIV AB ;(A) (B) , A 商, B 余数 除法指令功能

39、是用累加器A的内容(被除数)除以寄存器B的内容(除数)。 指令执行后,商保存在累加器A中,余数保存在寄存器B中。除数和被除数均为8位无符号无符号数 对PSW的影响:相除之后,标志位CY一定为0, OV只是在除数B=0时为1,其他情况下都为0。例:若(A)FBH(251),(B)12H(18),执行指令DIV AB之后,(A)0DH,(B)11H,OV0,C0 。第第3 3章章 AT89C51指令系统指令系统课 题(章节名称)3-5逻辑与循环指令逻辑与循环指令时间2011年3月26日星期1 1、2节 第10次课教学目的与要求掌握逻辑与循环指令并熟练应用教学重点逻辑与循环指令教学难点逻辑与循环指令

40、的应用教学方法讲授法教学时数2课外作业主要内容时间分配一、两个操作数的逻辑指令一、两个操作数的逻辑指令1.逻辑与指令2.逻辑或指令3.逻辑异或指令二、累加器二、累加器A的逻辑操作指令的逻辑操作指令(1)清0与取反指令(2)循环移位指令举例303020课后小结第第3 3章章 AT89C51指令系统指令系统3.5 逻辑操作与移位指令逻辑操作与移位指令 这类指令主要包括与、或、异或、求反、清零、移位等操作指令。 当以累加器当以累加器A为目的操作数时,对为目的操作数时,对P标志位有影响标志位有影响;循环指令是对累加器A的循环位移操作,带进位的循环带进位的循环移位对移位对CY和和P标志位有影响标志位有影

41、响;累加器清累加器清0指令对指令对P标志标志有影响。有影响。 第第3 3章章 AT89C51指令系统指令系统 一、逻辑与指令 ANL “与”指令是将源操作数与目的操作数按位进行逻辑与按位进行逻辑与操作,其结果送入目的操作数中 ANL A,Rn (direct,Ri,#data) ;A (A) (Rn) ANL direct , A (#data)例1:若(A) =C3H , (R0)=0AAH ,执行指令 ANL A, R0 ; (A) = 82H“与与”指令指令可以将操作数可以将操作数某些位清某些位清0(也叫屏蔽(也叫屏蔽),),其他位保持不变其他位保持不变。例2:若要屏蔽R1的高4位,保留

42、低4位,则指令为: MOV A, R1 ;取R1的值 ANL A,#0FH (即 #0000 1111B) ;屏蔽高4位,保留低4位 MOV R1,A ;返回给R1 第第3 3章章 AT89C51指令系统指令系统二、逻辑或指令ORL “或”指令是将源操作数与目的操作数按位相或,其结果送入目的操作数中。 ORL A,Rn (direct,Ri,#data) ; A (A)V (R0) ORL direct , A (#data)例3: 若(A) =C3H , (R0)=55H ,执行指令 ORL A, R0 ; (A) = D7H“或或”指令指令可以使操作数可以使操作数某些位置某些位置1(也叫置

43、位),其他位保持不变。(也叫置位),其他位保持不变。 例4:将P1的高4位置为1,其他位不变。则指令为: ORL P1 , #1111 0000B 第第3 3章章 AT89C51指令系统指令系统 三、逻辑异或指令 “异或”指令是将源操作数与目的操作数按位相异或,即不同为1,相同为0,其结果送入目的操作数。 XRL A,Rn (direct,Ri,#data) ; A (A) (R0) XRL direct , A (#data) 例5: 若 (A) = C3H , (R0) = 0AAH ,执行指令 XRL A, R0 ; (A) = 69H“异或异或”指令指令可以使操作数可以使操作数某些位取

44、反,其他位保持不变。某些位取反,其他位保持不变。 例6:若(P1) = 59H ,将P1的第1,3,5位取反,其他位不变。则指令为: XRL P1 , #0001 0101B ;(A) = 0100 1100 B = 4CH 第第3 3章章 AT89C51指令系统指令系统四、累加器清零与取反指令 1. CLR A ;A 0 2. CPL A ;A (A)取反 CLR A指令功能是将累加器A的内容清零。CPL A指令功能是将累加器A的内容按位取反,即累加器A中各位1变0,0变1。 例7: 若 (A) = 36H ,执行指令 : CPL A ; (A) =0C9H第第3 3章章 AT89C51指令

45、系统指令系统 五、移位指令 AT89C51移位指令有四种,都是对累加器都是对累加器A进行操作进行操作。这组移位指令每次只能对操作数移一位每次只能对操作数移一位,若要移多位,则要通过编写程序完成。1.左环移指令 RL A ; (A71) A60 , (A0) A7 指令功能是将累加器A的内容左循环移位。 如图3-4所示,累加器A的最高位移入最低位,同时其他各位依次左移。第第3 3章章 AT89C51指令系统指令系统A7A0 图3-4 左循环移位指令示意图 例8: 若(A)= C5H ,执行指令 RL A 后,(A) = 8BH。第第3 3章章 AT89C51指令系统指令系统A7A0CY图3-5

46、带进位左循环移位指令示意图 2. 带进位左循环移位 RLC A指令功能是将累加器将累加器A的内容和进位标志的内容和进位标志一起左循环移位。如图3-5所示,累加器A的最高位移入进位位CY,同时其他各位依次左移,CY位移入累加器A的最低位。例9: 若(A) = 45H ,(CY) =1 ,执行指令 RLC A ;(A) = 8BH , (CY) =0 第第3 3章章 AT89C51指令系统指令系统 3. 右环移指令 RR A 指令功能是将累加器A的内容右循环移位。 如图3-6所示,累加器A的最低位移入最高位,同时其他各位依次右移。A7A0图3-6 右循环移位指令示意图第第3 3章章 AT89C51

47、指令系统指令系统A7A0CY 图3-7 带进位右循环移位指令示意图4. RRC A 指令功能是将累加器将累加器A的内容和进位标志的内容和进位标志一起右循环移位。 如图3-7所示,累加器A的最低位移入进位位CY,同时其他各位依次右移,CY位移入累加器A的最高位。第第3 3章章 AT89C51指令系统指令系统注意: 1)左移指令在某些情况下,可实现乘2运算。2)右移指令在某些情况下,可实现除2运算。3) 移位指令和半字节交换指令,只能对A进行操作,若要对其他对象擦操作,可先将他们送到A,再操作。举例:1)若已知(R1) = 01H, 请写出将R1中的内容乘2 的指令。MOV A,R1RL AMOV

48、 R1,A ;(R1) = 02H 2)若已知(R1) = 01H,将R1中的内容高低四位互换。MOV A,R1SWAP AMOV R1,A ; (R1) = 10H 第第3 3章章 AT89C51指令系统指令系统拼字程序拼字程序课本67页17编程:将R1中的低4位与R2中的高4位合并,并存于R1中(其中R2中的高4位放在R1的高4位)。源程序:MOV A,R1ANL A,#0000 1111B ;屏蔽R1的高4位MOV R3,A ;暂存于R3MOV A,R2ANL A,#1111 0000B ;屏蔽R2的低4位ORL A,R3 ;合并MOV R1,A ;结果存在指定单元 第第3 3章章 AT

49、89C51指令系统指令系统课 题(章节名称)3-6控制转移指令控制转移指令时间2011年3月28日星期4 3、4节 第11次课教学目的与要求掌握无条件转移、条件转移及子程序调用与返回指令指令并熟练应用教学重点条件转移及子程序调用与返回指令教学难点子程序调用指令教学方法讲授法教学时数2课外作业主要内容时间分配一、无条件转移指令二、条件转移指令三、调用和返回指令四、空操作指令1535305课后小结第第3 3章章 AT89C51指令系统指令系统 3.6 控制转移类指令控制转移类指令 通常情况下,程序的执行是按顺序进行的,但也可以根据需要改变程序的执行顺序,这种情况称作程序转移。 控制转移类指令主要以

50、改变程序计数器PC内容为目标,用来控制程序执行的流向。它主要分为以下几类,如表3-4所示。第第3 3章章 AT89C51指令系统指令系统表3-4 控制转移类指令第第3 3章章 AT89C51指令系统指令系统第第3 3章章 AT89C51指令系统指令系统一、无条件转移指令 无条件转移指令是指当程序执行到这条指令时,程序将无条件地转移到指令指向的地址单元取指运行。1. 短跳转指令 AJMP addr11(实际使用时为标号)操作: PC (PC)+2 PC100 addr100 PC1511不变 它可转移的地址范围为: 2KB。第第3 3章章 AT89C51指令系统指令系统例3-42 若标号“NEW

51、ADD”表示转移目标地址0123H,PC的当前值为0345H。执行指令 AJMP NEWADD . ORG 0123H NEWADD : MOV A,#88H 指令提供的低11位地址为001 0010 0011B,组合成新的有效地址为“0000 0001 0010 0011B”。即程序将转向目标地址0123H处执行。第第3 3章章 AT89C51指令系统指令系统2. 长跳转指令LJMP addr16 ;PC= addr16 机器码:02H a15-a8 a7-a0它是一条3字节指令,执行时把16位的地址装入PC指针。可在64K范围内转移 。例:若标号“LOOP”表示转移目标地址为1234H,则

52、执行 LJMP LOOP ORG 1234HLOOP: MOV R0,#99H后,(PC) = 1234H第第3 3章章 AT89C51指令系统指令系统3. 相对转移指令SJMP rel ;PC (PC)2,PC (PC)rel 机器码: 80H rel它是一条双字节指令。转移的目的地址为: 目的地址=源地址+2+relrel是8位有符号数,故相对转移的范围为256个单元。使用相对转移指令很方便,特别是在修改程序时。 第第3 3章章 AT89C51指令系统指令系统4. 散转指令 (基址加变址间接转移指令)JMP A+DPTR ;PC (PC)1,PC (A)(DPTR) 机器码:73H1) 转

53、移地址是A的内容和DPTR的内容之和。2) 它是一条多分支选择指令:由DPTR决定多分支程序的首地址,由A的不同值实现多分支转移。 第第3 3章章 AT89C51指令系统指令系统例如:如果R1中放有待处理命令编号(07),程序存储器中存放着标号为TAB的转移表,则执行下面的程序,将根据R1的内容转向相应的命令处理程序。解:MOV A,R1 RL A ;(A)2 (A) 调整 MOV DPTR,#TABLE ;转移表首地址 (DPTR) JMP A+DPTRTABLE:AJMP ROUT0 ;程序段ROUT 0入口 AJMP ROUT1 ;程序段ROUT 1入口 AJMP ROUT2 ;程序段R

54、OUT 2入口 第第3 3章章 AT89C51指令系统指令系统二、有条件转移指令 有条件转移指令是指根据指令中给出的条件进行判断,若条件成立,则程序转向指定的目的地址执行,若条件成立,则程序转向指定的目的地址执行,否则顺序执行程序。否则顺序执行程序。 有条件转移指令的目标地址都在相对于该指令的下一条指令为-128+127的区域内。第第3 3章章 AT89C51指令系统指令系统1.测试条件符合转移指令1) A判0转移 指令 转移条件JZ rel ; (A)=0,转移,否则顺序执行JNZ rel ; (A)不等于0,转移,否则顺序执行【例3-46 】若A原始内容为00H,则执行:JNZ Ll ;由

55、于A的内容为00H,所以程序往下执行INC A ;(A) = 01HJNZ L2 ;由于A的内容已不为0,所以程序转向L2处执行第第3 3章章 AT89C51指令系统指令系统 2)位条件转移 指令 转移条件JC rel ; C=1,转移JNC rel ; C=0,转移JB bit, rel ; (bit)=1,转移JNB bit , rel ; (bit )=0,转移JBC bit , rel ; (bit)=1转移, 且(bit)=0 第第3 3章章 AT89C51指令系统指令系统 2.比较不相等转移指令 CJNE A, direct , rel ;若(A)(direct),则转移 PC=P

56、C)+3 relCJNE A, #data, rel ;若(A)data,则转移CJNE Rn, #data, rel;若(Rn)data,则转移CJNE Ri, #data ,rel;若(Ri)data,则转移 该组指令通常用于分支程序中。 第第3 3章章 AT89C51指令系统指令系统1)这组指令的功能是比较两个操作数的大小。再根据比较情况进行不同的操作。如不相等则转移;相等则顺序执行。转移目标地址=当前的PC值加3后,再加指令的第三字节偏移量rel;2)注意:该指令还影响)注意:该指令还影响CY标志。若标志。若目的操作数目的操作数大于大于源源操作数操作数,则,则CY=0;若目的操作数小于

57、源操作数,则;若目的操作数小于源操作数,则CY=1。如再用。如再用CY作为条件,则可实现进一步的分支作为条件,则可实现进一步的分支转移。转移。第第3 3章章 AT89C51指令系统指令系统例: 某程序段如下:.CJNE A , #50H , NEQ ;(A) 50H转移到NEQ处执行MOV R0,A ;(A)=50H,则把(A)送R0NEQ: MOV R1,A ; (A) 50H,则把(A)送R1第第3 3章章 AT89C51指令系统指令系统3.减1不为0转移指令 1) DJNZ Rn,rel ;先执行(先执行(Rn) (Rn)-1 ;若(Rn)不等于0,继续循环 ;若(Rn)= 0,则循环结

58、束,顺序执行后面的指令 2) DJNZ direct,rel ;先执行先执行(direct)(direct)-1;若(direct)不等于0,继续循环;若(direct)= 0,则则循环结束 【这组指令每执行一次,便将目的操作数的循环控制单元的内容这组指令每执行一次,便将目的操作数的循环控制单元的内容减减1,并判断其是否为,并判断其是否为0。若不为。若不为0,则转移到目标地址继续循环;则转移到目标地址继续循环;若为若为0,则结束循环,程序往下执行。则结束循环,程序往下执行。】 这组指令这组指令通常用于循环程序通常用于循环程序中中 。第第3 3章章 AT89C51指令系统指令系统【例3-48】有

59、一段程序如下:(累加程序)MOV 23H,0AHCLR ALOOPX:ADD A,23HDJNZ 23H,LOOPXSJMP $该程序执行后,(A)=1098765432137H 第第3 3章章 AT89C51指令系统指令系统 三、调用与返回指令1. 调用指令1) 短调用指令ACALL addr11 ;PC (PC)+2 ;PC内容送堆栈 SP (SP)1,(SP) (PC7-0);SP (SP)1,(SP) (PC15-8) ;PC100 addr11 其转移范围为2KB。 ACALL指令的目标地址是11位。在调用子程序时,该指令与AJMP指令类似,要求调用子程序的入口地址与ACALL指令后

60、面指令的第一个字节在同一个2 K页面的程序存储器区域中。 第第3 3章章 AT89C51指令系统指令系统2) 长调用指令LCALL addr16 ;PC (PC)+3 ; PC内容送堆栈 ;PC addr16转移范围为64KB。 LCALL指令的目标地址是 16位。可在64 K程序存储器区域范围内调用任何一个子程序。 第第3 3章章 AT89C51指令系统指令系统3) 返回指令功能:从堆栈中取出断点地址,送PC。(1)子程序返回指令 RET ;PC15-8 (SP),SP (SP)-1 ;PC7-0 (SP),SP (SP)-1 ,断点地址送PC 用于子程序的结束。 【RET指令的功能是从堆栈

温馨提示

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

评论

0/150

提交评论