下载

2下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 单片机指令系统

单片机指令系统

单片机指令系统

橘子香水
2009-03-29 0人阅读 举报 0 0 暂无简介

简介:本文档为《单片机指令系统ppt》,可适用于高等教育领域

第3章 80C51的指令系统第3章 80C51的指令系统31 概述31 概述.1.1 机器语言、汇编语言和高级语言在计算机中所有的指令、数据都是用二进制代码来表示的。这种用二进制代码表示的指令系统称为机器语言(MachineLanguage)但是计算机不能直接识别在汇编语言中出现的各种字符需要将其转换成机器语言通常单片机原理与应用常把这一转换(翻译)工作称为汇编。汇编可以由查表的形式手工完成也可由专门的程序来进行这种程序称为汇编程序。汇编后得到的机器语言程序称为目的程序或目标程序原来的汇编语言程序称为源程序。由于汇编语言是一种面向机器的语言因此受到机器种类的限制不能在不同类型的计算机上通用这样就出现了高级语言例如BASIC、PASCAL、C语言等。高级语言是一种面向过程的语言这种语言更接近英语和数字表达式易被一般用户掌握。3.1.2 指令的格式3.1.2 指令的格式1.汇编语言指令的格式汇编语言指令的一般格式如下:[标号:]操作码助记符[操作数][注释2.机器语言指令的格式机器语言指令是一种二进制代码它包括两个基本部分:操作码和操作数。机器语言指令格式如图31所示。3.1.3 常用符号3.1.3 常用符号Rn当前选中的工作寄存器组R0~R7(n:0~7)。它在片内数据存储器中的地址由PSW中的RS1、RS0确定可以是00H~07H(第0组)、08H~0FH(第1组)、10H~17H(第2组)、18H~1FH(第3组)。Ri当前选中的工作寄存器组中可作为地址指针的2个工作寄存器R0、R1(i=0或1)。它在片内数据存储器中的地址由RS0、RSl确定分别为00H、01H08H、09H10H、11H18H、19H。#data8位立即数即包含在指令中的8位常数。#datal616位立即数即包含在指令中的16位常数。direct8位片内RAM单元(包括SFR)的直接地址。对于SFR此地址可以直接用它的名称来表示例如ACC(此时不能用A代替)、PSW、P0等。addr1111位目的地址。用于ACALL和AJMP指令中目的地址必须放在与下一条指令第1个字节同一个2KB程序存储器地址空间之内。addrl616位目的地址。用于LCALL和LJMP指令中目的地址范围在64KB程序存储器地址空间。rel补码形式的8位地址偏移量用于相对转移指令中。偏移量以下一条指令第1个字节地址为基值偏移范围为-128~+127。bit片内RAM或特殊功能寄存器的直接寻址位地址。@在间接寻址方式中表示间址寄存器的符号。/在位操作指令中表示对该位先取反再参与操作但不影响该位原值。以下符号仅出现在指令注释或功能说明中。X片内RAM的直接地址(包含位地址)或寄存器。(X)在直接寻址方式中表示直接地址X中的内容在间接寻址方式中表示由间址寄存器X指出的地址单元。((X))在间接寻址方式中表示由间址寄存器X指出的地址单元中的内容。←在指令操作流程中将箭头右边的内容送入箭头左边的单元内。32 寻址方式32 寻址方式3.2.1 立即寻址立即寻址指在该指令中直接给出参与操作的常数(称为立即数)。立即数前冠以“#”以便与直接地址相区别。3.2.2 直接寻址直接寻址就是在指令中直接给出操作数所在存储单元的地址该地址指出了参与操作的数据所在的字节地址或者是位地址。在80C51单片机中直接地址只能用来表示特殊功能寄存器、内部数据存储器和位地址空间。其中特殊功能寄存器和位地址空间只能用直接寻址方式来访问。例33 传送指令:这条指令的功能是把内部RAM30H单元的内容送入A中(注意:内部RAM地址为30H单元中的内容可以是00H~0FFH范围内的任意一个数)。指令代码为E5H、30H为双字节指令。在程序存储器中占的空间及寻址示意图如图3所示。寄存器寻址寄存器寻址在指令中指出某个寄存器中的内容作为操作数这种寻址方式称为寄存器寻址。典型特征:有ARnDPTRBCY等.2. 寄存器间接寻址.2. 寄存器间接寻址寄存器间接寻址是指把指令中指定的寄存器的内容作为操作数的地址把该地址对应单元中的内容作为操作数。这种寻址方式适于访问内部RAM和外部RAM。例35 传送指令3.2.5 变址寻址3.2.5 变址寻址变址寻址以程序计数器PC或数据指针DPTR作为基地址寄存器以累加器A作为址寄存器把二者的内容相加形成操作数的地址(16位)。这种寻址方式用于读取程序存储器中的常数表。例36 查表指令:3.2.6 相对寻址3.2.6 相对寻址相对寻址以程序计数器PC的当前值作为基地址与指令中给定的相对偏移量rel进行相加把所得之和作为程序的转移地址。这种寻址方式用于相对转移指令中。指令中的相对偏移量是一个8位带符号数用补码表示。例37 累加器A内容判零指令相对寻址示意图如图37所示。3.2.7 位寻址3.2.7 位寻址80C51单片机中设有独立的位处理器。位操作指令能对内部RAM中的位寻址区和某些有位地址的特殊功能寄存器进行位操作。也就是说可对位地址空间的每个位进行位变量传送、状态控制、逻辑运算等操作。例38 位传送指令其操作过程如图38所示33 寻址空间33 寻址空间80C51单片机指令系统一共有7种寻址方式每种寻址方式都有自己使用的变量和适用的寻址空间如表31所示。根据不同的存储器或者存储器中不同的位置可分别采用不同的寻址方式这是80C51单片机指令系统的特点34 80C51的指令系统34 80C51的指令系统80C51指令系统可分为以下5类:●数据传送指令(28条)●算术运算指令(24条)●逻辑运算指令(25条)●控制转移指令(17条)●位操作指令(17条)3.4.1 数据传送指令3.4.1 数据传送指令1.对内部RAM和SFR之间的数据传送指令80C51内部RAM和特殊功能寄存器SFR各存储单元之间的数据传送通常是通过MOV指令来实现的这类指令称为内部RAM和SFR的一般数据传送指令。如图39所示。(1)以累加器为目的操作数的指令以累加器为目的操作数的指令如表32所示。(2)以寄存器为目的操作数的指令以寄存器为目的操作数的指令如表33所示。(3)以直接地址为目的操作数的指令以直接地址为目的操作数的指令如表34所示。(4)以寄存器间接地址为目的操作数的指令以寄存器间接地址为目的操作数的指令如表35所示。2.累加器A与外部数据存储器传送指令2.累加器A与外部数据存储器传送指令CPU与外部RAM的数据传送指令其助记符为MOVX其中的X就是external(外部)的第二个字母表示访问外部RAM。这类指令共有4条如表37所示。例314 若DPTR=1020H外部RAM(1020H)=54H执行指令MOVX A@DPTR的结果为:A=54HDPTR的内容和外部RAM1020H单元的内容不变。例315 若P2=03HR1=40HA=7FH执行指令MOVX @R1A后的结果为:外部RAM(0340H)=7FHP2和R1及A中内容不变。3.累加器A与程序存储器的传送指令3.累加器A与程序存储器的传送指令例319 把外部数据存储器2042H的内容送入内部RAM的50H中。4.字节交换指令4.字节交换指令(1)字节交换指令字节交换指令如表39所示。(2)低半字节交换指令低半字节交换指令如表310所示。这条指令的功能是将累加器A的低4位与Ri间接寻址单元的低4位相互交换而各自的高4位维持不变。其操作表示为:5.堆栈操作指令5.堆栈操作指令在80C51指令系统中有两条用于数据传送的堆栈操作指令如表311所示。例323 在中断处理时堆栈指令用于保护现场和恢复现场。设SP=60H中断服务程序的一般结构如下:3.4.2 算术运算指令3.4.2 算术运算指令1.加法指令(1)不带进位的加法指令不带进位的加法指令如表312所示。例325 设A=46HR1=5AH试分析执行指令ADDAR1A←A+R1后的执行结果及对标志位的影响。(2)带进位的加法指令带进位的加法指令如表13所示。例326 设A=85H(20H)=FFHCY=1执行指令:ADDC A20HA←A+(20H)+CY执行情况为:(3)加1指令加1指令如表314所示。例328 将累加器A的内容加1有以下两种方法为2.减法指令2.减法指令(1)带借位减法指令带借位减法指令如表315所示。例329 设A=C9HR2=54HCY=1执行指令:SUBBAR2A←A-R2-CY执行情况如下:(2)减1指令减1指令如表316所示。3.乘法指令3.乘法指令乘法指令如表317所示例330 设A=32H(即50)B=60(即96)执行指令MULABBA←A×B后的结果为:乘积为12C0H(即4800)>FFH(即255)。A=C0HB=12H。各标志位:CY=0OV=1P=0。4.除法指令4.除法指令除法指令如表318所示例331 设A=FFH(255)B=12H(18)执行指令DIVABAB←A÷B后的结果为:商A=0EH(14)余数B=03H(3)。标志位:CY=0OV=0P=1。5.十进制调整指令5.十进制调整指令5.十进制调整指令3.4.3 逻辑运算指令3.4.3 逻辑运算指令1.对累加器A单独进行的逻辑操作(1)清零、取反与半字节交换指令清零、取反与半字节交换指令如表320所示。(2)循环移位指令循环移位指令如表321所示。2.逻辑与运算指令逻辑与运算指令如表322所示。3.逻辑或运算指令逻辑或运算指令如表323所示。4.逻辑异或指令逻辑异或指令如表324所示。3.4.4 控制转移指令3.4.4 控制转移指令1.无条件转移指令无条件转移指令功能是当程序执行无条件转移指令时程序就无条件地转移到该指令所提供的地址去。下面将分别介绍各种无条件转移指令的功能(表325)(1)绝对无条件转移指令AJMP addr11(2)长转移指令LJMPaddrl6(3)相对转移指令SJMPrel这是一条无条件相对转移指令转移的目标地址为(4)间接转移指令JMP @A+DPTR2.条件转移指令条件转移指令是依某种特定条件转移的指令。条件满足时转移(相当于执行一条相对转移指令)条件不满足时则按顺序执行下一条指令。(1)累加器判零转移指令累加器判零转移指令如表327所示(2)减1不为0转移指令减1不为0转移指令如表328所示。(3)比较不相等转移指令比较不相等转移指令如表329所示。3.子程序调用与返回指令子程序调用与返回指令如表330所示。4.空操作指令空操作指令如表331所示。.4.5 位操作指令.4.5 位操作指令1.位变量传送指令位变量传送指令如表332所示。2.位变量修改指令位变量修改指令如表333所示。3.位逻辑运算指令位逻辑运算指令如表334所示。4.位条件转移指令位条件转移指令如表335所示。35 伪指令35 伪指令1.起始伪指令ORG起始地址伪指令ORG是用来设定程序或数据存储区的起始地址。其格式为:[标号:] ORG 16位地址例如:ORG 0030HSTART:MOV A#30H2.汇编结束伪指令END其格式为:[标号:] END3.赋值伪指令EQU(或=)其格式为:符号名EQU表达式或符号名=表达式4.字节数据定义伪指令DB(DefineByte)其格式为:[标号:] DB 8位字节数据表5.字数据定义伪指令DW(DefineWord)其格式为:[标号:] DW 16位字节数据表其功能是从标号指定的地址单元开始在程序存储器中定义字数据。6.空间定义伪指令DS(DefineStorage)其格式为:[标号:] DS 表达式其功能是从标号指定的地址单元开始在程序存储器中保留由表达式所指定个数的存储单元作为备用的空间并均填以零值。7.数据地址赋值伪指令DATA其格式为:符号名 DATA 表达式DATA数据地址赋值伪指令功能是把由表达式指定的数据地址或代码地址赋予规定的标号。8.位地址符号定义伪指令BIT其格式为:字符名称 BIT 位地址位地址符号定义伪指令BIT其功能就是将位地址赋给指定的符号名。例如:

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/72

单片机指令系统

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利