书签 分享 收藏 举报 版权申诉 / 152
上传文档赚钱

类型《凌阳十六位单片机原理及应用》课件第3章.ppt

  • 上传人(卖家):momomo
  • 文档编号:7924445
  • 上传时间:2024-09-04
  • 格式:PPT
  • 页数:152
  • 大小:650KB
  • 【下载声明】
    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寄存器,

    23、同时将SB寄存器的低n位移入Rs的高n位,结果送入Rd寄存器。假设n=1,其操作过程如图3.7所示。第3章 SPCE061A寻址方式及指令系统7474图3.7 循环右移操作过程第3章 SPCE061A寻址方式及指令系统7575【例3.27】R1=0 xF11F /移位前R1的初值为0 xF11FR1=R1 ROR 1 /R1循环右移1位后值变为 0 xF88F第3章 SPCE061A寻址方式及指令系统76765)算术右移(ASR)算术右移的基本格式为Rd=Rs ASR n,该指令对Rs进行n(可设为14)位算术右移,将Rs低n位移入SB寄存器,并对其符号位(最高位)进行扩展,结果送入Rd寄存器

    24、。该指令适合对所有有符号数的移位操作。假设n=3,其操作过程如图3.8所示。第3章 SPCE061A寻址方式及指令系统7777图3.8 算术右移操作过程第3章 SPCE061A寻址方式及指令系统7878【例3.28】第3章 SPCE061A寻址方式及指令系统7979【例3.29】第3章 SPCE061A寻址方式及指令系统80803.3.4 控制转移类指令表3.14为控制转移类指令表。第3章 SPCE061A寻址方式及指令系统81 81第3章 SPCE061A寻址方式及指令系统8282第3章 SPCE061A寻址方式及指令系统83831软件中断 软件中断为单字指令,助记符为BREAK,采用16位

    25、直接地址寻址方式,指令周期为13,不影响标志位,功能是产生软件中断请求,使CPU转到软件中断服务程序中去。软件中断服务程序的入口地址为0 x00FFF5,该地址固定,不得作其他用。第3章 SPCE061A寻址方式及指令系统84842程序转移指令程序转移指令分为近转移和远转移,又称相对转移和绝对转移。近转移时PC值只能在PC+63个字的范围内跳转(即前进或后退63个字);远转移则在页内64K个字的范围内跳转。第3章 SPCE061A寻址方式及指令系统8585【例3.30】条件转移。第3章 SPCE061A寻址方式及指令系统8686【例3.31】无条件转移。第3章 SPCE061A寻址方式及指令系

    26、统87873子程序调用和返回指令子程序调用指令用于从指定的代码段调用子程序,采用22位直接地址A22寻址方式,因此,该指令可以从整个64页代码的程序存储空间内调用任何指定的子程序。其助记符为CALL。子程序返回指令和CALL对应,表示子程序已结束,需返回主程序,同样采用22位直接地址A22寻址方式,助记符为RETF。第3章 SPCE061A寻址方式及指令系统8888 子程序返回过程:弹出调用子程序时压入的段寄存器SR和程序指针PC,使程序从调用CALL的下一条指令处开始继续执行主程序。【例3.32】第3章 SPCE061A寻址方式及指令系统89894中断返回指令从中断服务子程序返回时须用RET

    27、F或者RETI指令从栈中弹出状态寄存器SR和程序指针PC的值。由于弹栈动作发生在本指令执行之后,故弹栈后SR和PC的值应分别与进入中断服务子程序之前二者的值相同。第3章 SPCE061A寻址方式及指令系统9090【例3.33】第3章 SPCE061A寻址方式及指令系统91 915功能设置类指令1)FIR_MOV该指令用来控制允许或禁止FIR滤波器运算过程中数据的自动移动。由于这会影响到FIR滤波器运算的状态,且此状态具有全局性质,因此用在中断服务子程序时要格外小心。只有如下两条:第3章 SPCE061A寻址方式及指令系统92922)FIQ该指令用来允许或禁止快速中断请求(FIQ),只有如下两条

    28、:FIQ ON /允许FIQ中断FIQ OFF /禁止FIQ中断第3章 SPCE061A寻址方式及指令系统93933)IRQ该指令用来允许或禁止中断请求(IRQ),只有如下两条:IRQ ON /允许IRQ中断IRQ OFF /禁止IRQ中断第3章 SPCE061A寻址方式及指令系统94944)INT该指令用来设置允许或禁止FIQ和IRQ中断的标志。具体如下:第3章 SPCE061A寻址方式及指令系统95955)NOP该指令为空操作,是对CPU的控制指令,执行时机器不作任何操作,而转向下一条指令去执行,不影响任何寄存器和标志位,通常用于精确延时或等待。【例3.34】第3章 SPCE061A寻址方

    29、式及指令系统96963.3.5 伪指令阅读一些SPCE061A单片机的源程序开始段,会发现有一些特殊指令助记符,这些助记符与指令系统的助记不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令。为与汇编指令区别,伪指令前加一圆点。第3章 SPCE061A寻址方式及指令系统9797第3章 SPCE061A寻址方式及指令系统9898第3章 SPCE061A寻址方式及指令系统99991)定义类伪指令 定义类伪指令主要用于对段、程序数据性质等进行定义。(1)CODE、DATA、TEXT。第3章 SPCE061A寻址方式及指令系统100100【例3.35】.CODE.PUBLIC _MAIN;_MA

    30、IN:【例3.36】.DATA tone_table:.DW 5,8,6,9,3,8,0;第3章 SPCE061A寻址方式及指令系统101101【例3.37】.TEXT.PUBLIC _IRQ0.PUBLIC _IRQ1.PUBLIC _IRQ2 _IRQ0:/中断子程序入口 PUSH R1,R5 to SP第3章 SPCE061A寻址方式及指令系统102102(2)IRAM、ISRAM、ORAM、OSRAM、RAM、SRAM。IRAM段用来存放具有初始值的变量。此段亦不可跨bank链接,且在链接时所有与其同名或同属性的各段都会被合并在一起,将会同时被分配空间于ROM及RAM中。ISRAM段与

    31、IRAM段的性质基本相同,区别是ISRAM段在RAM中只能被分配在前面64(063)个字的数据单元。下面给出各自的定义格式。第3章 SPCE061A寻址方式及指令系统103103第3章 SPCE061A寻址方式及指令系统104104第3章 SPCE061A寻址方式及指令系统105105第3章 SPCE061A寻址方式及指令系统106106(3)MACRO、MACEXIT、ENDM。MACRO伪指令用来起始宏定义,ENDM伪指令则用来结束宏定义,二者应成对使用。从宏定义里退出是立即且无条件的,MACEXIT伪指令并非用来终止宏定义,它常与条件汇编用在一起,条件满足时从宏定义里退出,对ENDM伪指

    32、令后面的指令进行汇编;条件不满足时,继续汇编MACEXIT伪指令后的宏定义内的其它指令。不必担心从宏里退出时条件会失衡,因为MACEXIT伪指令会自动将条件恢复到原来的均衡状态。下面给出各自定义格式。第3章 SPCE061A寻址方式及指令系统107107【例3.44】Personal_info:.MACRO arg1,arg2,arg3 Name:.DW arg1 Age:.DW arg2.ENDM第3章 SPCE061A寻址方式及指令系统108108【例3.45】eserve:.MACRO arg1,arg2.VAR arg1.IF count.MACEXIT.ENDIF.VAR count

    33、 1.ENDM第3章 SPCE061A寻址方式及指令系统109109(4)PROC、ENDP、STRUCT、ENDS。PROC伪指令用于起始程序的定义,ENDP用来结束程序定义,两者成对使用;STRUCT伪指令用于起始结构的定义,ENDS用来结束结构定义,两者成对使用。下面给出各自定义格式。第3章 SPCE061A寻址方式及指令系统110110第3章 SPCE061A寻址方式及指令系统111111第3章 SPCE061A寻址方式及指令系统112112(5)DEFINE、VAR、PUBLIC、EXTERNAL、EQU、VDEF。DEFINE用来定义常量符号,给常量符号所赋之值既可以是一个已定义过

    34、的常量符号,也可以是一个表达式。切忌符号超前引用,即如果赋值引用的符号不是在引用前定义的,则会出现“非法超前引用”的错误。第3章 SPCE061A寻址方式及指令系统113113【例3.48】.DEFINE BODY 1;.DEFINE IO_PORT 0 x7016;.IFDEF BODY;R1=0 xFFFF;IO_PORT=R1;.ENDIF第3章 SPCE061A寻址方式及指令系统114114【例3.49】.RAM.VAR s1,s2,s3;/无赋初值第3章 SPCE061A寻址方式及指令系统115115第3章 SPCE061A寻址方式及指令系统116116第3章 SPCE061A寻址方

    35、式及指令系统117117【例3.52】label:.EQU 10VDEF用来为标号赋值,它可以在程序的任何部位为标号重复赋值。【例3.53】int0:.VDEF 0 x005F第3章 SPCE061A寻址方式及指令系统1181182)存储类伪指令 存储类伪指令以指定的数据类型存储数据或设定程序地址等。数据类型包括DW、DD、FLOAT、DOUBLE、END等。表3.16为各数据类型的字长及值域。第3章 SPCE061A寻址方式及指令系统119119第3章 SPCE061A寻址方式及指令系统120120(1)DW、DD、FLOAT、DOUBLE。DW用来指示以16位整型数据的形式来存储常量或变量

    36、;DD用来指示以32位长整型数据的形式存储双字常量或变量;FLOAT用来指示以单精度浮点型实数数据单元来存储实数常量或变量;DOUBLE用来指示以双精度浮点型实数数据的形式存储实数常量或变量。第3章 SPCE061A寻址方式及指令系统121121第3章 SPCE061A寻址方式及指令系统122122第3章 SPCE061A寻址方式及指令系统123123(2)END。END用来结束程序文件或结束包含文件,本伪指令用在程序文件中意味该文件结束(不可再包含其它文件)。第3章 SPCE061A寻址方式及指令系统1241243)存储定义类伪指令 DUP用来定义若干指定数据类型的数据存储单元,与DW、FL

    37、OAT、DD、DOUBLE存储类伪指令组合在一起用于存放若干个具有相同数值的常量;或者申请若干个备用的整型、单精度浮点型、长整型以及双精度浮点型数据单元。第3章 SPCE061A寻址方式及指令系统125125第3章 SPCE061A寻址方式及指令系统1261264)条件类伪指令条件类伪指令包括 IF、ELSE、ENDIF、IFMA、IFDEF、IFNDEF,共6个。IF指令引出在条件汇编结果为真时所要汇编的程序指令。ELSE引出IF伪指令设置的条件汇编结果为假时所要汇编的程序指令,它必须与IF伪指令结合使用。ENDIF用来结束条件汇编组合的定义,也必须与IF伪指令成对使用。第3章 SPCE06

    38、1A寻址方式及指令系统127127第3章 SPCE061A寻址方式及指令系统128128第3章 SPCE061A寻址方式及指令系统1291295)汇编方式类伪指令该类伪指令包括两条:INCLUDE和SECTION。INCLUDE指令的作用是在汇编文件里包含某个文件。SECTION指令的作用是用来创建用户定义段,创建段的属性参量attribute可以是以下预定义段名当中的任意一个:CODE、DATA、TEXT、RAM、SRAM、IRAM、ISRAM、ORAM、OSRAM。第3章 SPCE061A寻址方式及指令系统130130第3章 SPCE061A寻址方式及指令系统1311313.3.6 宏定义

    39、与调用1宏定义 宏(Macro)是指在源程序里将一序列的源指令行用一个简单的宏名(Macro Name)所取代。这样做的好处是使程序的可读性增强。第3章 SPCE061A寻址方式及指令系统1321322宏标号宏定义里可以用显式标号(由用户定义),亦可用隐含标号(由汇编器自动定义)。汇编器不会改变用户定义的显式标号。在宏标号后加上后缀符#则表明该标号为隐含标号,汇编器会自动生成一个后缀数字符号_X_XXXX(X表示一位数符,XXXX表示4位扩展数符)来取代这个隐含标号中的后缀符#,如例3.65所示。隐含标号中的字母字符及其后缀数符总共不能超过32个字符。第3章 SPCE061A寻址方式及指令系统

    40、133133第3章 SPCE061A寻址方式及指令系统1341343宏调用 在调用宏时,可以使用任何类型的参数:直接型、间接型、字符串型或寄存器型。只有字符串型参数才能含有空格,但必须用引号将此空格括起,即或“”(而字符串参数中的单引号,必须用双引号将其括起,即“”)。只要在宏嵌套中的形参名相同,则这些参数就可以穿过嵌套的宏使用。宏嵌套使用唯一所受的限制是内存空间的容量。宏的多个参数应以逗号隔开,参数前的空格及Tab键都将被忽略。单有一个逗号,而后面未带有任何参数时会被汇编器表示为参数丢失错误。第3章 SPCE061A寻址方式及指令系统1351354宏参数分隔符 在一个宏体中,宏参数的有效分隔

    41、为标点符号中的逗号,即“,”。5宏内字符串连接符符号(40H)是字符串连接符。注意,字符串连接只能在宏内进行。6助记符搜索顺序 通常,汇编器以表3.17列出的顺序来搜索各种助记符或符号。第3章 SPCE061A寻址方式及指令系统136136第3章 SPCE061A寻址方式及指令系统1371377宏应用举例【例3.66】数的比较。第3章 SPCE061A寻址方式及指令系统138138第3章 SPCE061A寻址方式及指令系统139139【例3.67】将标号名传入程序代码。第3章 SPCE061A寻址方式及指令系统1401403.3.7 段的定义与调用1预定义段在Xasm16里共定义有9个预定义段

    42、:CODE、DATA、TEXT、ORAM、OSRAM、RAM、IRAM、SRAM及ISRAM段。这些预定义段都分别被规定了以下内容:(1)段内存储数据类型:指令/数据、无初始值的变量/有初始值的变量;(2)存储介质类型:ROM/RAM(SRAM);(3)存储范围:零页(或零页中前64个字)或当前页/整个64页;(4)定位排放方式:合并排放/重叠排放。第3章 SPCE061A寻址方式及指令系统1411412用户定义段 为了使程序在链接时具有更大的灵活性,用户可以用伪指令.SECTION来定义段。定义的段名最多不可超过32个字符,且最多可定义4096个段,但不可嵌套使用。用户段定义的格式为:lab

    43、el:.SECTION .attribute第3章 SPCE061A寻址方式及指令系统1421423.3.8 结构的定义与调用1结构的定义结构作为一种数据构造类型在nSP汇编语言程序中也要经历定义说明使用的过程。在程序中使用结构时,首先要对结构的组成进行描述,即结构的定义。定义的一般格式如下:结构名:.STRUCT /定义结构开始数据存储类型定义.ENDS /定义结构结束 第3章 SPCE061A寻址方式及指令系统143143结构的定义以伪指令STRUCT和ENDS作为标识符。结构名由用户命名,命名原则与标号等相同。在两个伪指令之间包围的是组成该结构的各成员项数据存储类型的定义。例如:第3章

    44、SPCE061A寻址方式及指令系统1441442结构变量的定义结构的说明某个结构一经定义后,便可指明使用该结构的具体对象,这被称为结构的说明,其一般形式如下:结构变量名:.结构名 结构成员表其中结构成员表用来存放结构变量中成员的值。例如:第3章 SPCE061A寻址方式及指令系统1451453结构变量的引用结构是不同数据类型的若干数据变量的集合体。在程序中使用结构时不能把结构作为一个整体来参加数据处理,参加各种运算和操作的应是结构中各个成员项数据。结构成员项引用的一般形式为:结构变量名.成员名 第3章 SPCE061A寻址方式及指令系统146146例如:R1+=stru_var1.ad/str

    45、u_var1是一个定义过的结构变量,ad是它的一个成员第3章 SPCE061A寻址方式及指令系统1471473.3.9 过程的定义与调用1过程的定义过程的定义就是编写完成某一功能的子程序块,用伪指令PROC和ENDP作为定义的标识符。定义的一般格式如下。第3章 SPCE061A寻址方式及指令系统148148第3章 SPCE061A寻址方式及指令系统1491492过程的调用在程序中调用一个过程时,程序控制就从调用程序中转移到被调用的过程,且从其起始位置开始执行该过程的指令。在执行完过程体中的各条指令并执行到RETF指令时,程序控制就返回调用过程时原来断点位置,继续执行下面的指令。过程调用的一般格式为:CALL 过程名 第3章 SPCE061A寻址方式及指令系统150150第3章 SPCE061A寻址方式及指令系统151151图3.9 SPCE061A片内存储器映射第3章 SPCE061A寻址方式及指令系统152152 本 章 小 结本章主要对SPCE061A单片机的寻址方式和指令系统进行了阐述。由于SPCE061A采用nSP的指令系统,因此nSP的指令集完全适用于SPCE061A单片机,本章就是对nSP的指令集的介绍。寻址方式通过对几种不同方式加以介绍而展开。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《凌阳十六位单片机原理及应用》课件第3章.ppt
    链接地址:https://www.163wenku.com/p-7924445.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库