《凌阳十六位单片机原理及应用》课件第3章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《凌阳十六位单片机原理及应用》课件第3章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 凌阳十六位单片机原理及应用 十六位 单片机 原理 应用 课件
- 资源描述:
-
1、第3章 SPCE061A寻址方式及指令系统1 1第第 3 3 章章 SPCE061ASPCE061A寻址方式寻址方式及指令系统及指令系统3.1 基本概念3.2 寻址方式3.3 指令系统本章小结第3章 SPCE061A寻址方式及指令系统2 23.1 基 本 概 念3.1.1 常用指令符号 为了方便阅读程序,在介绍寻址方式之前,先统一约定常用的指令符号,见表3.1。第3章 SPCE061A寻址方式及指令系统3 3第3章 SPCE061A寻址方式及指令系统4 4第3章 SPCE061A寻址方式及指令系统5 53.1.2 汇编语言格式 用户要计算机完成各项任务,就要设计各种应用程序。程序设计常有三种:
2、机器语言、汇编语言和高级语言。机器语言是计算机惟一能识别的语言,它由一组0、1二进制数组成,人们不便识别、记忆,因此很难用它来进行程序设计。高级语言是面向问题和计算过程的语言,可通用于各种不同的计算机,用户编程时不必仔细了解计算机的具体性能和指令系统。用汇编语言设计的程序具有针对性,不同的微处理器有不同的指令系统。第3章 SPCE061A寻址方式及指令系统6 63.2 寻 址 方 式3.2.1 立即数寻址 立即数寻址直接包含操作数,操作数是一个6位或16位的常数,也叫立即数。6位立即数用IM6表示,范围是0 x000 x3F;16位立即数用IM16表示,范围是0 x00000 xFFFF。【例
3、3.1】第3章 SPCE061A寻址方式及指令系统7 73.2.2 直接寻址16位地址直接寻址此寻址方式指令中给出的地址为6位有效地址A6,由于只给出6位有效地址,所以只能用于第0页存储器(SPCE061A只用到第0页)的前64个字存储单元范围内寻址,指令周期短。【例3.2】第3章 SPCE061A寻址方式及指令系统8 8216位地址直接寻址此寻址方式指令中给出的地址为16位有效地址A16,指令周期较6位地址直接寻址强。由于给出的是16位有效地址,所以只用于第0页存储器的64K字存储单元范围内寻址。【例3.3】第3章 SPCE061A寻址方式及指令系统9 9322位地址直接寻址此寻址方式指令中
4、给出的地址为16位有效地址A16,它是将CS代码段作为高6位地址和页内16位地址拼接而成的。其可在4MB的存储单元范围内寻址,主要用于程序的调用与返回。第3章 SPCE061A寻址方式及指令系统10 103.2.3 寄存器直接寻址寄存器直接寻址是操作数存放在某个寄存器中,寄存器名称由指令指出。【例3.4】R2=R1+0 x2000第3章 SPCE061A寻址方式及指令系统11 113.2.4 寄存器间接寻址 寄存器间接寻址是操作数的地址由寄存器给出,寄存器需用“”括起来,其格式为D:Rs。省略D,Rs指向0页存储器单元;不省略D,由寄存器Rs和段寄存器SR中的数据段DS共同指向存储单元。DS的
5、值确定存储器的页码,然后再根据Rs的值寻址。由于SPCE061A地址只涉及到0页,故以后省略D。【例3.5】第3章 SPCE061A寻址方式及指令系统12 121寄存器前置增量间接寻址【例3.6】R1=+R3 假设执行指令前R3中的内容为0 x1000,该指令是先将R3的内容加1,即0 x1000加1,得0 x1001,再把0 x1001地址中的内容存放到R1中。指令执行完后,R3的值变为0 x1001。第3章 SPCE061A寻址方式及指令系统13 132寄存器后置增量间接寻址【例3.7】R1=R3+同样假设执行指令前R3中的内容为0 x1000,该指令是先将0 x1000地址中的内容存放到
6、R1中,再把R3的内容加1,即0 x1000加1,得0 x1001。指令执行完后,R3的值变为0 x1001。第3章 SPCE061A寻址方式及指令系统14 143寄存器后置减量间接寻址【例3.8】R1=R3-同样假设执行指令前R3中的内容为0 x1000,该指令是先将0 x1000地址中的内容存放到R1中,再把R3的内容减1,即0 x1000减1,得0 x0FFF。指令执行完后,R3的值变为0 x0FFF。第3章 SPCE061A寻址方式及指令系统15 153.2.5 变址寻址【例3.9】R1=BP+0 x30 若BP的内容为0 x1000,该指令执行的操作是将0页存储器0 x1030的内容
7、存放到寄存器R1中。第3章 SPCE061A寻址方式及指令系统16 163.2.6 PC相对寻址PC相对寻址主要用于跳转指令中,并且是短跳转。根据寄存器SR中标志段的4个标志位(NZSC)来作为程序跳转的条件。若条件满足则跳转到相关的地址上,其跳转范围是根据6位的相对偏移量来决定的,因此跳转范围限制在PC+63个字,往前往后均最多跳63个字。第3章 SPCE061A寻址方式及指令系统17 173.3 指 令 系 统3.3.1 数据传送类指令 数据传送类指令是把源操作数传送到指令所指定的目标地址。数据传送操作属复制性质,而不是搬家性质。指令执行后,源操作数不变,目的操作数被源操作数代替。通用格式
8、是:=第3章 SPCE061A寻址方式及指令系统18 18第3章 SPCE061A寻址方式及指令系统19 191立即数寻址立即数寻址分6位和16位立即数寻址,格式:Rd=IM6和Rd=IM16,执行后将6位或16位立即数存入目的寄存器Rd中。【例3.10】R1=0 x20 /将6位的立即数0 x20送入寄存器R1R1=0 x1FFF /将16位立即数0 x1FFF送入寄存器R1第3章 SPCE061A寻址方式及指令系统20202寄存器直接寻址寄存器直接寻址的格式为Rd=Rs,将源寄存器Rs中的内容存入目的寄存器Rd中。【例3.11】R1=R2 若执行前R2=0 x2000,执行后将此数据存入R
9、1,R1=0 x2000。第3章 SPCE061A寻址方式及指令系统21 213寄存器间接寻址寄存器间接寻址格式为Rd=Rs,将Rs的数据存入到以Rd的值作为地址的单元中。【例3.12】+R3=R1第3章 SPCE061A寻址方式及指令系统22224直接地址寻址该寻址方式有6位和16位两种。例如:第3章 SPCE061A寻址方式及指令系统23235变址寻址该寻址方式有两种寻址格式:第3章 SPCE061A寻址方式及指令系统24246堆栈操作 堆栈操作也属于一种特殊的数据传送指令,其通过两条指令PUSH和POP来完成压栈与出栈操作。第3章 SPCE061A寻址方式及指令系统2525将多个寄存器同
10、时压栈时,总是序号最高的寄存器先压栈,然后依次压入序号较低的寄存器,直到序号最低的寄存器最后入栈。所以,执行指令“PUSH R1,R4 TO SP”与指令“PUSH R4,R1 TO SP”是等效的,都是先压入R4,再依次R3、R2、R1。堆栈指令格式为:PUSH Rx,Ry TO SPPOP Rx,Ry FROM SPPUSH Rx TO SPPOP Rx FROM SP第3章 SPCE061A寻址方式及指令系统2626【例3.13】PUSH R2,PC TO SP第3章 SPCE061A寻址方式及指令系统2727图3.1 PUSH R2,PC TO SP执行过程示意图第3章 SPCE061
11、A寻址方式及指令系统2828【例3.14】POP R2,PC FROM SP第3章 SPCE061A寻址方式及指令系统2929图3.2 POP R2,PC FROM SP执行过程示意图第3章 SPCE061A寻址方式及指令系统30303.3.2 算术运算类指令1不带进位的加法指令ADD加法运算中,被加数X可以是目的寄存器或源寄存器,加数Y可以是6种寻址方式中的任何一种,其运算结果存放到目的寄存器Rd中。表3.3是ADD运算的指令表。第3章 SPCE061A寻址方式及指令系统31 31第3章 SPCE061A寻址方式及指令系统3232【例3.15】R1+=+R3 该指令功能是先将R3加1,然后R
12、1中的数据与R3中的内容作为地址所指向的单元中的数据相加,结果存放到R1中。第3章 SPCE061A寻址方式及指令系统33332带进位的加法指令ADC带进位的加法指令与不带进位的加法指令的唯一区别是执行加法时进位标志也参与加法运算,即Rd=X+Y+C,其余完全相同。第3章 SPCE061A寻址方式及指令系统3434第3章 SPCE061A寻址方式及指令系统35353减法指令SUB与SBC减法运算中,被减数X可以是目的寄存器或源寄存器,减数Y可以是6种寻址方式中的任何一种,其运算结果X-Y的差存放到目的寄存器Rd中。减法运算有不带进位的减法和带进位的减法两种,两者唯一的差别只是是否有进位参与运算
13、。表3.5和3.6是这两种减法的指令表。第3章 SPCE061A寻址方式及指令系统3636第3章 SPCE061A寻址方式及指令系统3737第3章 SPCE061A寻址方式及指令系统3838【例3.16】R1-=R4-这是一条不带进位的减法指令,先将寄存器R1中的数据减去由R4中的值作为地址所指向的单元中的数据,结果存放于R1中,然后寄存器R4中的值再减1,即(R4)-1(R4)。第3章 SPCE061A寻址方式及指令系统3939【例3.17】求0 x1000、0 x1001单元数据的差值(不考虑进位C),结果存放于R1中。R2=0 x1000 /地址指针R1=R2+/取0 x1001单元的数
14、据R1-=R2 /求差,结果存放到R1内第3章 SPCE061A寻址方式及指令系统4040【例3.18】R2=R1-0 x1000,Carry这是一条带进位的减法指令,执行(R1)-(0 x1000)-C,所得结果存放到R2内。第3章 SPCE061A寻址方式及指令系统41 414求补指令求补指令为NEG,求一个数的补码相当于执行(-X)+1操作,即将被求数据X进行取反后加1运算,操作结果存放于目的寄存器Rd中。求补指令可以采用6种寻址方式中的任何一种,表3.7给出了所有求补指令。第3章 SPCE061A寻址方式及指令系统4242第3章 SPCE061A寻址方式及指令系统4343【例3.19】
15、求-600 与 0 x06FF单元的数据差,结果存放到R1中。R1=-600BP=0 x06FF /地址指针R2=-BP /求0 x06FF的补码R1+=R2 /相加,结果送入R1第3章 SPCE061A寻址方式及指令系统44445乘法运算指令MUL乘法运算分为有符号数乘法和无符号数乘法两种,乘法指令只能采用寄存器寻址,且Rd、Rs只能采用R1R4、BP(R5),不采用SP、SR、PC,是为了避免误用,以及提供弹性给新版指令集作扩充。表3.8给出了有符号数乘法和无符号数乘法运算的指令格式、指令周期等。第3章 SPCE061A寻址方式及指令系统4545第3章 SPCE061A寻址方式及指令系统4
16、6461)有符号数乘法MR=Rd*Rs,ss 2)无符号数和有符号数乘法MR=Rd*Rs,ss第3章 SPCE061A寻址方式及指令系统4747【例3.20】计算一年(365天)共有多少小时,结果存放到R4(高位)R3(低位)中。第3章 SPCE061A寻址方式及指令系统48486n项内积指令MULS SPCE061A除了提供乘法指令外,还提供速度较快的n项内积指令MULS,使得其具有一定的数字信号处理(DSP)功能。表3.9列出了内积指令的格式。第3章 SPCE061A寻址方式及指令系统4949第3章 SPCE061A寻址方式及指令系统50501)有符号内积MR=Rd*Rs,ss,n第3章
17、SPCE061A寻址方式及指令系统51 51图3.3 内积运算操作过程示意图第3章 SPCE061A寻址方式及指令系统5252 【例3.21】第3章 SPCE061A寻址方式及指令系统53532)无符号内积MR=Rd*Rs,us,n第3章 SPCE061A寻址方式及指令系统54547比较指令比较指令是两个数进行比较的指令。比较运算执行两数的减法操作,不存储运算结果,只影响标志位N、Z、S、C。比较指令主要用于判断,然后实现条件转移。表3.10为比较指令格式表。第3章 SPCE061A寻址方式及指令系统5555第3章 SPCE061A寻址方式及指令系统5656【例3.22】CMP R1,BP+0
18、 x08/比较 R1,BP+IM6JE Label_1 /若R1=BP+0 x08,则跳转 到Label_1第3章 SPCE061A寻址方式及指令系统57573.3.3 逻辑运算与移位类指令1逻辑与、或、异或指令这三条指令的语法格式、指令周期以及影响的标志位完全相同,在此一起介绍,表3.11为三者的指令格式。第3章 SPCE061A寻址方式及指令系统5858第3章 SPCE061A寻址方式及指令系统5959【例3.23】假设开始时的标志位为:N=0,Z=1,S=0,C=1。第3章 SPCE061A寻址方式及指令系统60602测试指令 测试指令(TEST)对两个操作数进行逻辑与操作,即X&Y,不
19、改变X、Y的值,结果不写入寄存器,仅影响N、Z标志位。测试的数X、Y一个是寄存器(目的寄存器Rd或源寄存器Rs),另一个可是六种寻址方式中的任一种。表3.12为所有测试指令。第3章 SPCE061A寻址方式及指令系统61 61第3章 SPCE061A寻址方式及指令系统6262【例3.24】假设开始时的标志位为:N=0,Z=1,S=0,C=1。第3章 SPCE061A寻址方式及指令系统63633移位指令SPCE061A的移位运算包括逻辑左移(LSL)、逻辑右移(LSR)、循环左移(ROL)、循环右移(ROR)、算术右移(ASR)等操作。在移位的同时还可进行其他运算,如加、减、求补、与、或、异或、
20、测试,指令长度为1,指令周期为3/8。由于硬件原因,对于移位操作,每条指令可以移14位。表3.13为其指令格式。第3章 SPCE061A寻址方式及指令系统6464第3章 SPCE061A寻址方式及指令系统65651)逻辑左移(LSL)逻辑左移的基本格式为Rd=Rs LSL n,该指令对Rs进行n(可设为14)位逻辑左移,将Rs高n位移入SB寄存器,同时Rs的低n(14)位用0补足,结果送入Rd寄存器。假设n=3,其操作过程如图3.4所示。第3章 SPCE061A寻址方式及指令系统6666图3.4 逻辑左移操作过程第3章 SPCE061A寻址方式及指令系统6767【例3.25】R1=0 xF11
21、F /移位前R1的初值为0 xF11FR1=R1 LSL 3 /R1逻辑左移3位后值变为 0 x88F8第3章 SPCE061A寻址方式及指令系统68682)逻辑右移(LSR)逻辑右移的基本格式为Rd=Rs LSR n,该指令对Rs进行n(可设为14)位逻辑右移,将Rs低n位移入SB寄存器,同时Rs的高n(14)位用0补足,结果送入Rd寄存器。假设n=3,其操作过程如图3.5所示。第3章 SPCE061A寻址方式及指令系统6969图3.5 逻辑右移操作过程第3章 SPCE061A寻址方式及指令系统70703)循环左移(ROL)循环左移的基本格式为Rd=Rs ROL n,该指令对Rs进行n(可设
22、为14)位循环左移,将Rs高n位移入SB寄存器,同时将SB寄存器的高n位移入Rs的低n位,结果送入Rd寄存器。假设n=1,其操作过程如图3.6所示。第3章 SPCE061A寻址方式及指令系统71 71图3.6 循环左移操作过程第3章 SPCE061A寻址方式及指令系统7272【例3.26】R1=0 xF11F /移位前R1的初值为0 xF11FR1=R1 ROL 1 /R1循环左移1位后值变为 0 xE23F第3章 SPCE061A寻址方式及指令系统73734)循环右移(ROR)循环右移的基本格式为Rd=Rs ROR n,该指令对Rs进行n(可设为14)位循环右移,将Rs低n位移入SB寄存器,
展开阅读全文