《单片机指令系统》PPT课件.ppt_第1页
《单片机指令系统》PPT课件.ppt_第2页
《单片机指令系统》PPT课件.ppt_第3页
《单片机指令系统》PPT课件.ppt_第4页
《单片机指令系统》PPT课件.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1,单片机的指令系统,. 概述 . 指令格式 . 寻址方式 . 指令说明 . 单片机的指令,试验:用单片机点亮发光二极管LED,以P1.0引脚为例: P1.0脚高电平时,LED不亮,P1.0脚低电平时,LED发亮。可见,控制P1.0 的电平即可。 让 P1.0为高电平的命令:SETB P1.0 (把口 P1 的第“0”位置为高电平) 让 P1.0为低电平的命令:CLR P1.0,指令 所有的软件,都要翻译成计算机能直接识别和执行的命令才能由计算机去执行。 计算机能直接识别和执行的命令称为指令。 一台计算机所能执行的全部指令的集合称为这台计算机的指令系统。 由指令码组成的程序称为指令程序。,助记符 指令本身是二进制代码,记忆困难。 如: 10加20 01110100 ;把10放在累加器A中; 00001010 00100100 ;A加20,结果仍在A中; 00010100 为了方便记忆,可采用指令助记符: MOV A,#0AH ADD A,#14H,返回,6,. 指令格式 方括号 表示该项是可选项,可有可无。 标号 用户设定的符号,代表该指令所在的地址。 标号由1-8个字符组成,以字母开头,其后跟字母、数字或其他特定字符,并以“:”与操作码间隔。, ; ,7,操作码 用英文(或缩写)表示的指令功能助记符。它确定了CPU运行本条指令完成什么样的操作功能。 如: ADD表示加法操作。 注释部分 为了增加程序的可读性,用户拟写的对指令或程序功能的说明,不被编译。它与操作码或操作数之间以分号“;”间隔。, ; ,8,操作数 为指令操作提供数据,它与操作码之间必须以空格分隔。 在一条语句中,若有多个操作数,各操作数之间用逗号“,”分隔。,; ,如:LOOP: ADD A , #10H ;作用是 (A)(A)+10H,返回,9,操作数在指令中直接给出,作为指令的一部分与操作码一起存放在ROM内,取指后即得到操作数本身。 立即寻址方式主要用来给寄存器或存储单元赋初值。 例如: MOV A, #70H ;A 70H,1. 立即寻址,寻址就是寻操作数的“地址”,10,在指令中直接给出操作数的地址。 指令的操作数部分直接是操作数的地址,用这个地址单元的内容作为操作数参加运算或指令的操作。 例如: MOV A,3AH 其中3AH表示直接地址,即内部RAM的3A单元。,2.直接寻址,11,操作数在工作寄存器R0R7、A、B、DPTR中,指令码内含有该操作数的工作寄存器地址。 例:MOV A,R0 其功能是将寄存器R0的内容传送到累加器A中,操作数在R0中。,3. 寄存器寻址,12,寄存器中存放的操作数的地址,即操作数是通过寄存器间接得到的。 在寄存器间接寻址方式中,在寄存器的名称前面加前缀标志“”。 例:MOV A,R0 指令以R0寄存器内容为地址,把该地址单元的内容送到累加器A。,4. 寄存器间接寻址,5、 变址寻址 以DPTR作基址寄存器,以累加器A作变址寄存器,并以两者内容相加形成的16位地址作为操作数的地址。 变址寻址方式只能对程序存储器进行寻址。 例: MOVC A,A+DPTR,6、 相对寻址 以转移指令所在地址为基地址,向前最大可转移(127+转移指令字节数)个单元,向后最大可转移(128转移指令字节数)个单元。 相对寻址方式的转移指令中,给出了地址偏移量,PC的当前值加上偏移量就构成了转移的目的地址。 PC当前值是指执行完该转移指令后的下一条指令的地,偏移量rel是一个带符号的8位二进制补码数。,7、 位寻址 位寻址方式的操作数是8位二进制数中的某一位。 在指令中给出位地址,即给出是哪个内部RAM单元的哪一位。 位地址在指令中用bit表示。,归纳: 寄存器寻址 MOV A,R1 将R1中的数值赋予A 直接寻址 MOV A,3AH 将地址3AH中的数值赋予A 立即寻址 MOV A,#3AH 将3AH数值赋予A 寄存器间址 MOV A,Ri 将 Ri中地址的数值赋予A, Ri或是R0或是R1 变址寻址 MOVC A,A+DPTR 以A中的数值为地址偏移量进行查表;变址寻址区是程序存储器ROM,而不是数据存储器RAM 相对寻址 AJMP MAIN 跳转到行号为MAIN处 位寻址 MOV C,7FH 将位地址7FH的数值赋予C,. 指令说明,(1)Rn 工作寄存器 (2) 间接寻址寄存器的前缀标志 Ri 表示寄存器间接寻址。 DPTR 表示数据指针间接寻址。 (3)# 立即寻址的前缀标志 # data 表示8位立即数。#data16 表示16位立即数。 (4)direct 直接地址 (5)bit 位地址 (6)/ 对指定位的内容取反,返回,18,数据传送类指令 逻辑运算类指令 位操作类指令 算术运算类指令 控制转移类指令,单片机指令,数据传送指令的作用是将数据从一个地方传送到另一个地方,是单片机指令中用的非常多的一类指令。 数据传送指令是对存储单元进行操作。,. 数据传送类指令,20,(1)以累加器A为目的寄存器 MOV A,Rn ; 把Rn中内容送到累加器A中 MOV A,Ri ; 把Ri所指向的单元中的内容 送到A中 MOV A,direct ; (direct)A MOV A,#data ; #dataA,1、 片内数据传送指令,(2)以Rn为目的操作数 MOV Rn,A ;ARn,n=07 MOV Rn,direct ;(direct)Rn MOV Rn,#data ;#dataRn,n=07,(3)以直接地址为目的操作数 MOV direct,A ;Adirect MOV direct,Rn ;Rndirect, MOV direct1,direct2 ;(direct 2)direct1 MOV direct,Ri ;(Ri)direct MOV direct,#data ;#datadirect,(4)以寄存器间接地址为目的操作数 MOV Ri,A ;A(Ri),i=0,1 MOV Ri,direct ;(direct)(Ri) MOV Ri,#data ;#data(Ri),习题:设片内RAM(23H)=10H,(10H)=34H,R0=00H,执行完以下每条指令后A,R0中内容分别是什么? MOV A,#50H ;A=50H MOV R0,#23H ;R0=23H MOV R0,A ;(23H)=50H MOV R0,10H ;(23H)=34H,25,(5)以直接地址为目的操作数 MOV direct, A ; direct A MOV direct, Rn ; direct Rn MOV direct2, direct1 ; direct2 (direct1) MOV direct , Ri ; direct (Ri) MOV direct, data ; direct data 功能:把指定内容送入由直接地址指出的存储单元中。,(6)数据交换 XCH A, Rn ; A Rn XCH A, direct ; A direct XCH A, Ri ; A (Ri) XCHD A, Ri ; ACC30 (Ri30) SWAP A ;累加器A高、低4位互换,2、 片外RAM数据传送,(1)读片外RAM指令 MOVX A,DPTR ;A(DPTR) MOVX A,Ri ;A(Ri) 执行读指令时 =0,(2)写片外RAM指令 MOVX DPTR,A ;A(DPTR) MOVX Ri,A ;A(Ri) 执行写指令时 =0,28,. 逻辑运算类指令 功能:对操作数按位进行“与”、“或”、 “异或”等逻辑运算,以及累加器的取反、清零、移位等操作,执行结果存放于目的操作数。,29, 逻辑与,ANL A,Rn ;A A Rn ANL A,direct ;A A ( direct ) ANL A,Ri ;A A ( Ri ) ANL A,#data ;A A data ANL direct,A ;( direct ) ( direct ) A ANL direct,#data ;( direct ) ( direct data,30,【习题】欲将A = 77H 的第0、2、5位屏蔽,应执行什么指令?,0 1 1 1 0 1 1 1 B 1 1 0 1 1 0 1 0 B 0 1 0 1 0 0 1 0 B,逻辑“与” 指令常用于屏蔽字节中某些位: 欲清除某位,用“0”和该位相与 欲保留某位,用“1”和该位相与,ANL A, #DAH ,31, 逻辑或,ORL A,Rn ;A A Rn ORL A,direct ;A A (direct) ORL A,Ri ;A A (Ri) ORL A,#data ;A A data ORL direct,A ;(direct)(direct)A ORL direct,#data ;(direct)(direct) data,32,【例】假设A = B5H,P1 = 6AH,若欲据累加器A的4-0位状态 控制P1口的4-0位状态,P1口高3位不变,执行什么指令? ANL A, #00011111B ; 屏蔽A的高3位 ANL P1, #11100000B ; 保留P1的高3位 ORL P1, A,逻辑或指令可使某个存储单元或累加器A中的数据某些位变为“1”而其他位不变。 欲置1的位,用“1” 与该位相或 欲保留的位,用“0” 与该位相或,33,逻辑非 和 累加器A清零 指令 逻辑非指令 CPL A ;A 注:逻辑非指令仅用于累加器 A。 累加器A清零指令 CLR A ;A 0,34,逻辑异或,35,【习题】已知 A = 10110101B, 执行下列指令: XRL A, #F0H ; A的高4位取反,低4位保留 MOV 30H, A ; (30H) A XRL A, 30H ; 结果为? A = 00H,逻辑异或指令可使某个存储单元或累加器A中的数据某些位变为反而其他位不变。 欲使某位取反,该位与“1”相异或 欲使某位保留,该位与“0”相异或, 移位指令 RL A ; RR A ; RLC A ; RRC A ;,ACC.7 ACC.0,ACC.7 ACC.0,ACC.7 ACC.0,CY,ACC.7 ACC.0,CY,返回,37, 加法类指令 不带进位位的加法指令 ADD A, Rn ; A A+Rn ADD A, direct ; A A+direct ADD A, #data ; A A+data 功能:把源地址所指示的操作数和累加器A中操作数相加,并把两数之和存放在累加器A中。,. 算术运算类指令,38,ADD A, R0 结果:A = 1011 0100B = B4H,0 1 0 0 1 0 0 1 B 0 1 1 0 1 0 1 1 B 1 0 1 1 0 1 0 0 B,+,1,0,1,【习题】设(A)=49H,(R0)=6BH,执行指令:,39,带进位位的加法指令 ADDC A, Rn ; A A+Rn+CY ADDC A, direct ; A A+direct+CY ADDC A, Ri ; A A+(Ri) +CY ADDC A, #data ; A A+data+CY 功能:在作加法运算时将进位位CY也加进去,结果也存放在A中。常用于作多字节加法运算。,40,1. ADDC A, R0 结果:A = 85H + 30H + 1 = 0B6H, CY = 0 2. ADDC A, 31H 结果: A = 85H + 0FFH + 1 = 85H, CY = 1 3. ADDC A, R0 结果: A = 85H + 11H + 1 = 97H, CY = 0 4. ADDC A, #85H 结果: A = 85H + 85H + 1 = 0BH, CY = 1,【习题】已知A=85H,R0=30H, (30H)=11H, (31H) = 0FFH 和 CY=1,执行下列指令后累加器A和CY的值为多少?,41,加 1 指令 INC A ; A A+1 INC Rn ; Rn Rn+1 INC direct ; (direct) (direct)+1 INC Ri ; (Ri) (Ri) +1 INC DPTR ; DPTR DPTR +1 指令功能:将二进制数加 1,用于使源地址所规定的RAM单元中内容加 1。,42,BCD码调整指令 DA A 计算机中无专门的BCD加法指令,BCD加法必须通过一条普通加法指令之后紧跟一条BCD码调整指令才能完成。,43,程序: MOV A, #65H ; A 65 ADD A, #58H ; A (A)+58 DA A ; 十进制调整,【习题】对BCD码加法 65+58=BDH 进行十进制调整。,0 1 1 0 0 1 0 1 65 + 0 1 0 1 1 0 0 0 58 1 0 1 1 1 1 0 1 BD + 0 1 1 0 0 1 1 0 调整 1 0 0 1 0 0 0 1 1,44, 减法类指令 SUBB A, Rn ; A A-Rn-CY SUBB A, direct ; A A-direct-CY SUBB A, Ri ; A A-(Ri) -CY SUBB A, #data ; A A-data-CY 功能:把累加器A中的操作数减去源操作数和指令执行前的CY值(把进位标志CY作为减法操作的借位标志),并把结果存放在累加器A中。,45,例如:设A=52H, R0=B4H,执行指令: CLR C ; CY0 SUBB A, R0 ; A AR0CY 结果为:A=9EH, CY=1,46,减 1 指令 DEC A ; A A-1 DEC Rn ; Rn Rn-1 DEC direct ; direct direct-1 DEC Ri ; (Ri) (Ri) -1 功能:把操作数内容减 1,结果仍存放在原处。,47, 乘法指令 MUL AB ; B A AB 功能:将累加器A的内容与寄存器B的内容相乘,乘积的低 8 位存放在累加器A中,高 8 位存放在寄存器B中。,除法指令 DIV AB ; 商存于A,余数存于B AB 功能:将累加器A中的8位无符号整数除以寄存器B中的8位无符号整数,所得商存放在累加器A中,余数存放在寄存器B中。,返回,48,. 位操作类指令 功能:位操作是以位(bit)为单位进行运算和操作的。,.1 位传送 位地址中的值传送给进位标志Cy MOV C,bit ;Cy(bit) 进位标志Cy的值传送到位地址中 MOV bit,C ;(bit)Cy 注:bit为位地址,C为标志Cy的助记符,.2 位置1、位清0,位置1 SETB C ;进位标志Cy置1 SETB bit ;位地址中置1 位清 0 CLR C ;进位标志Cy清0 CLR bit ;位地址中置0,.3 位逻辑运算,位“与”运算 ANL C,bit ;CyCy(bit) ANL C,/bit ;CyCy( /bit ) 位“或”运算 ORL C,bit ;CyCy(bit) ORL C,/bit ;CyCy( /bit ) 位“非”运算 CPL C ;Cy / Cy CPL bit ;bit( /bit ),51,A = P1.1P1.2 B = P1.0A C = P1.4 D = P1.3C P1.5 = BD,【习题】利用位逻辑指令模拟以下逻辑电路功能,52,源程序: MOV C, P1.1 ; CY (P1.1) ORL C, P1.2 ; CY (P1.1)(P1.2) = A ANL C, P1.0 ; CY (P1.0)A CPL C ; CY (P1.0)A =B MOV F0, C MOV C, P1.3 ; (CY) P1.3 ANL C, /P1.4 ; (CY) (P1.3)(P1.4) =D ORL C , F0 ; (CY) BD MOV P1.5, C ; 运算结果送入P1.5,53,. 控制转移类指令 控制转移类指令是通过改变程序计数器PC中内容,以控制程序的流向。 有

温馨提示

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

评论

0/150

提交评论