第7讲单片机指令系统3.ppt_第1页
第7讲单片机指令系统3.ppt_第2页
第7讲单片机指令系统3.ppt_第3页
第7讲单片机指令系统3.ppt_第4页
第7讲单片机指令系统3.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、第7讲(2011-05-05) 10-11第2学期第10周,汽车单片机,1.指令系统简介; 2.寻址方式; 3.指令系统; 4.汇编语言程序设计; 5.程序设计实例;,第3章 MCS-51指令系统及汇编语言,复习 数据传送类指令 P5057,片内数据传送指令:MOV 片外数据传送指令:MOVX 程序存储器数据传送指令:MOVC 数据交换指令:XCH,XCHD,SWAP 堆栈操作指令:PUSH,POP,3.3.2 算术运算类指令 (24条) 单字节的加、减、乘、除法指令,都是针对8位二进制无符号数。 执行的结果对Cy、Ac、OV 三种标志位有影响。 但增1和减1指令不影响上述标志。 主要包括 (

2、1)加法(带、不带进位加法、加1、十进制调整); (2)减法(带借位、减1); (3)乘法; (4)除法;,1 加法指令,(1)不带进位加法指令,这类指令所完成的操作是把源操作数(立即数、直接地址单元内容、间接地址单元内容、工作寄存器内容)与累加器A的内容相加,将结果保存在累加器A中。,指令助记符与功能说明如下:,要注意累加器A中的运算结果对各个标志位的影响: (a)如果位7有进位,则置“1”进位标志Cy,否则清“0”Cy (b)如果位3有进位,置“1”辅助进位标志Ac,否则清“0”Ac(Ac为PSW寄存器中的一位),(c)如果位6有进位,而位7没有进位,或者位7有进位,而位6没有,则溢出标志

3、位OV置“1”,否则清“0”OV。 溢出标志位OV的状态,只有在带符号数加法运算时才有意义。当两个带符号数相加时,OV=1,表示加法运算超出了累加器A所能表示的带符号数的有效范围,例 执行指令: MOV A, #0A9H ADD A, #0B8H 对程序状态寄存器的影响如图3.6所示。,运算结果:(A)=61H,CY=1,AC=1,OV=1,P=1,(PSW)=0C5H,带进位加法指令与前述加法指令的区别仅为考虑进位位,其他与加法指令相同。,(2) 带进位加法指令,指令助记符与功能说明如下:,(3) 增1指令,INC A ;(A)(A)+1 INC direct ;(direct)(direc

4、t)+1 INC Ri ;(Ri)(Ri)+1 INC Rn ;(Rn)(Rn)+1 INC DPTR ;(DPTR)(DPTR)+1,例1 设(A)=40H,(41H)=29H,则执行下列指令: INC A;(A)40H+1H INC 41H;(41H)29H+1H 结果:(A)=41H,(41H)=2AH,例2 设(R0)=56H,片内RAM单元(56H)=0FFH,(57H)=50H,则执行下列指令: INC R0;(56H)00H INC R0;(R0)57H INC R0;(57H)51H 结果:(56H)=00H,(R0)=57H,(57H)=51H,例3 执行下述指令序列: MO

5、V DPTR,#2FFEH ;(DPTR)2FFEH INC DPTR;(DPTR)2FFFH INC DPTR;(DPTR)3000H INC DPTR;(DPTR)3001H 则(DPTR)=3001H,(4)十进制调整指令 用于对BCD码十进制数加法运算结果的内容修正。 指令格式: DA A 两个BCD码按二进制相加之后,必须经本指令的调整 才能得到正确的压缩BCD码的和数。 二进制数的加法运算原则并不能适用于十进制数的加法运算,有时会产生错误结果。例如: (a)3+6=9 0011+0101=1001 运算结果正确 (b)7+8=15 0111+1000=1111 运算结果不正确 (c

6、)9+8=17 1001+1000=00001 C=1 结果不正确,二进制数加法指令不能完全适用于BCD码十进制数的加法运算,对结果作有条件的修正 十进制调整 出错原因和调整方法: BCD码只用了了其中的10个,6个没用到的编码。 (1010,1011,1100,1101,1110,1111)为无效码 凡结果进入或者跳过无效码编码区时,其结果就是错误的。,调整的方法是把结果加6调整,即十进制调整修正。 修正方法应是: (a)累加器低4位大于9或辅助进位位Ac=1,则进行低4位加6修正。 (b)累加器高4位大于9或进位位Cy=1,则进行高4位加6修正。 (c)累加器高4位为9,低4位大于9,则高

7、4位和低4位分别加6修正。,具体是通过执行指令:DA A 来自动实现的 。 例 (A)=56H,(R5)=67H,把它们看作为两个压缩的BCD数,进行BCD数的加法。执行指令: ADD A,R5 DA A 由于高、低4位分别大于9,所以要分别加6进行十进制调整对结果进行修正。 结果为: (A)=23H,Cy=1 可见,56+67=123,结果是正确的。,2. 减法指令,(1)带借位减法指令:,(2)减1指令 DEC A;(A)-1A DEC Rn ;(Rn)-1Rn,n=07 DEC direct ;(direct)-1direct DEC Ri ;(Ri)-1(Ri),i=0,1 减1指令不

8、影响标志位。,(1) 乘法指令,例1 设(A)=67H(103),(B)=0ADH(173),执行指令: MUL AB 运算结果:乘积为459BH(17819),(A)=9BH,(B)=45H。另外:OV=1,CY=0,3 乘除运算指令,MUL AB ;(A)乘积低8位,(B)乘积高8位,教材例3-26,A 01010000 B 00110010,例3-26:A=50H, B=32H ;执行 MUL AB,00000000,01010000,01010000,00000000,00000000,01010000,00000000,00000000,000111110100000,A=A0H,

9、B=0FH,(2)除法指令,例1 设(A)=9AH,(B)=23H,执行指令: DIV AB 则(A)=04H,(B)=0EH,OV=00H,CY=00H,DIV AB ;(A)商,(B)余数,3.3.3 逻辑运算指令(24条),1. 双操作数指令,(1)逻辑与指令,逻辑与的规则定义为: 00=0 01=10=0 11=1,例1 设(A)=0C3H,(R3)=0ADH,执行指令“ANL A, R3”。 结果:(A)=81H(10000001B)。 指令执行过程如下:,ANL A,Rn ; (A)(Rn)A,n=07 ANL A,direct ; (A)(direct)A ANL A,#data

10、 ; (A)#dataA ANL A,Ri ; (A)((Ri))A,i=01 ANL direct,A ; (direct)(A)direct ANL direct,#data;(direct)#datadirect,(2)逻辑或指令,ORL A,Rn ; (A)(Rn)A,n=07 ORL A,direct ; (A)(direct)A ORL A,#data ; (A)#dataA ORL A,Ri ; (A)((Ri))A,i=01 ORL direct,A ; (direct)(A)direct ORL direct,#data;(direct)#datadirect,逻辑或的规则定

11、义为: 00=0 01=10=1 11=1,例1 设(A)=0C3H,(R3)=0ADH,执行指令“ORL A, R3”。 结果:(A)=0EFH(11101111B)。 指令执行过程如下:,(3) 逻辑异或指,逻辑异或的规则定义为: 00=11=0 10=01=1,XRL A,Rn ; (A)(Rn)A,n=07 XRL A,direct ; (A)(direct)A XRL A,#data ; (A)#dataA XRL A,Ri ; (A)((Ri))A,i=01 XRL direct,A ; (direct)(A)direct XRL direct,#data;(direct)#dat

12、adirect,例1 设(A)=0C3H,(R3)=0ADH,执行指令“XRL A, R3”。 结果:(A)=6EH(01101110B)。 指令执行过程如下:,2 单操作数逻辑运算指令,(1)累加器A清0 指令格式: CLR A 功能:将00H送入累加器A中。,(2)累加器A取反 指令格式: CPL A 功能:将累加器A中内容取反(将A中内容按位取反,即逻辑非运算)后再送回累加器A中。,(1)累加器A内容循环左移一位 指令格式: RL A 功能:将累加器A中的内容循环左移一位。 即,3 累加器A循环移位指令,例1 设(A)=10001000,则执行指令“RL A”后,结果: (A)=0001

13、0001,(2)累加器A内容带进位位CY循环左移一位,指令格式: RLC A 功能:将累加器A中的内容与进位标志位CY一起循环左移一位。即:,例1 设(A)=01010101,(CY)=1。则执行指令“RLC A”后,结果:(A)=10101011,(CY)=0。,1.指令系统简介; 2.寻址方式; 3.指令系统; 4.汇编语言程序设计; 5.程序设计实例;,第3章 MCS-51指令系统及汇编语言,3.3.4 控制转移类指令,程序的顺序执行是由PC自动递增实现的,要改变程序的执行顺序,实现分支转向,必须通过强迫改变PC值的方法来实现,这就是控制转移类指令的基本功能。 控制转移类指令可以控制程序

14、根据不同情况执行不同的程序段,使单片机具有“智能化”功能。 51单片机有17条控制转移指令,包括无条件转移指令、条件转移指令及子程序调用返回指令。,1 无条件转移指令-类似goto语句,(1)长转移指令LJMP LJMP addr16 ; PC (PC)+2 ; PC addr16 功能:指令执行后将16位地址(addr16)传送给PC,从而实现程序转移到新的地址开始运行。 说明:该指令可实现64KB范围的任意转移。,例题3-32,包括:LJMP, STMP, AJMP,JMP,功能相同,只是转移范围不同。,AJMP addr11 ;PC (PC)+2, ;PC100 addr11 功能:ad

15、dr11的11位数取代该指令执行后程序指针PC的低11位PC100,程序根据PC值转移运行。 说明: addr11为11位无符号数,程序转移最大范围为2KB。,(2)绝对转移指令AJMP,,SJMP rel ;PC (PC)+2+rel 功能:执行指令后,程序从当前位置向前或向后跳转rel个单元运行。 转移相对范围图是-128127H共256个单元;,(3)相对转移指令SJMP,例子: LOOP:SJMP LOOP 或 SJMP $ 功能:程序原地踏步。,教材错误,例题3-33,JMP A+DPTR ;PC (A)+(DPTR) 功能:由A及DPTR的内容决定程序转移的目的地址。 说明: DP

16、TR为基址寄存器,A为变址寄存器,为基址加变址寻址方式。 把DPTR值固定,赋与A不同的值,则可实现程序的多分支转移(散转)。 64K,(4)间接长转移指令JMP,2. 条件转移指令-类似if语句,(1)累加器A判0转移指令 JZ rel ;若(A)=0,转移,PC (PC)+2rel ;若(A)0,顺序执行。 JNZ rel ;若(A)0,转移,PC (PC)+2rel ;若(A) =0,顺序执行。,所谓条件转移就是程序的转移是有条件的,当指令中规定的条则满足时,程序转移,否则程序不转移, 仍顺序执行。,JZ rel (b) JNZ rel,累加器A判零转移指令的执行过程,格式为:CJNE

17、, rel CJNE A,direct,rel ;累加器A与direct单元不等转移。 CJNE A,#data,rel ;累加器A与立即数data不等转移 CJNE Rn,#data,rel ;寄存器Rn与立即数data不等转移 CJNE Ri,#data,rel ;间接寻址的片内RAM单元 与立即数data不等转移,(2)比较不相等转移指令CJNE(三状态判断),说明:数据比较转移指令为三字节指令。 利用该类指令不但可以实现程序的转移功能,也可以用以比较两数值的大小。 指令执行后进位位Cy的状态,反映了被比较数与比较数相减有无借位。,注意:1)比较按减法操作,目的操作数-源操作数; 2)影

18、响标志位,但指令执行结果不影响任何操作数。,例题3-34,DJNZ Rn,rel DJNZ direct,rel,功能:寄存器Rn或direct单元内容减1,如果结果为零,则程序顺序执行;如果还没有减到0,则程序转移。 说明:这两条指令主要用于控制程序循环,又称循环指令。预先赋值Rn或RAM单元,以控制循环次数。,(3)减1不为0转移指令DJNZ -类似for语句,例题3-35,解分析:这是一个重复操作过程,可以使用循环指令。30H7FH共50H个单元 ,循环次数为50H。 程序如下: MOV R7,#50H MOV R0,#30H NEXT:MOV R0,#0 INC R0 DJNZ R7,

19、NEXT,例 将内部RAM的30H7FH单元清0。,1)位传送指令;MOV C 2)位置位1、复位0指令;SETB,CLR 3)位逻辑指令;ANL,ORL,CPL非 4)位条件转移指令;JC,JNC,JB, JNB,JBC,3.3.5 位控制转移类指令,位操作指令,MOV C,bit ;C (bit) MOV bit,C ;bit (C),例 将20H位的内容送至50H位,并要求不改变C的状态。 解 MOV 10H,C ;保护C内容 MOV C,20H MOV 50H,C MOV C,10H ;恢复C内容,1 位传送指令MOV,说明:多数位操作指令由C参与,C称位累加器。 位操作指令寻址方式为

20、位寻址。,位置位/复位指令,1.位置位(置1)命令SETB SETB C ;C 1 SETB bit ;bit 1 2.位复位(清0)命令 CLR C ;C 0 CLR bit ;bit 0,说明:位置位/复位命令可以方便改变位空间的单个位的内容,十分灵活。,位运算指令,1.逻辑与指令ANL ANL C,bit ;C (C)(bit) ANL C,/bit ;C (C)(/bit) 2.逻辑或指令ORL ORL C,bit ;C (C)(bit) ORL C,/bit ;C (C)(/bit) 3.逻辑非(求反)指令CPL CPL bit ; bit (/bit),例1 当位地址(2AH)=1

21、,(32H)=1,同时累加器中(ACC.7)=0时,进位位C=1,否则C清0,可编程序如下: MOVC, 2AH ;(C)(2AH) ANLC, 32H ;(C)(C)(32H) ANLC, /ACC.7 ;(C)(C)(/ACC.7),例2 写出位地址(2AH)=1和(32H)=1、累加器(ACC.7)=0相或的程序: MOVC, 2AH ;(C)(2AH) ORLC, 32H ;(C)(C)(32H) ORLC, ACC.7 ;(C)(C)(ACC.7) 结果:(C)=1。,程序如下: MOV C, P0.1 ANL C, / P0.0 ORL C, / P0.2 MOV P1.7,C,例3 编程实现逻辑功能。,写出例题3-37注解,位条件转移指令,1. 判C转移指令,JCrel ;若(C)=1,则(PC)(PC)+2+rel ;若(C)=0,则(PC)(PC)+2 JNCre

温馨提示

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

评论

0/150

提交评论