第四章 dsp56800指令集与汇编语言.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 dsp56800指令集与汇编语言

第四章 DSP56800指令集与汇编语言(1) 4.1 DSP56800汇编语言 4.2 DSP56800寻址方式 4.3 数据传输指令 4.4 乘法与乘/加指令 4.5 除法指令 4.6 移位指令 第四章 DSP56800指令集与汇编语言(2) 4.7 算数与逻辑运算指令 4.8 DSP56800中的并行处理 4.9 位操作与位测试指令 4.10 跳转与返回指令 4.11 其他控制指令 4.12 规格化指令NORM 4.1.1 DSP56800汇编语言格式 汇编语言的格式是: Label Opcode operands ;注释 Label:语句标识,编译后生成程序地址入口标识。 Opcode-操作码,表示指令类型。 Operands-操作对象。 注:语句标号前面不能有空格,应以字母开头,后面 接英文、数字、美元符$和下横线_。标号不能重复定义。 4.1.2 常用汇编管理指令 汇编管理指令(伪指令) 不与任何处理器指令相对应。 提供给汇编程序的指令,没有对应的机器码生成。 1、ORG-定位伪指令 格式 : ORG 表达式 ;注释 如: ORG P:$1000 4.1.2 常用汇编管理指令 2、EQU-赋值管理指令 格式: 标号 EQU 表达式 ;注释 3、DC-定义常数 格式: (标号) DC 表达式 4、DS-保留存储器字节管理指令 格式: (标号) DC 表达式 5、END-表示汇编程序结束 格式: END (标号) 4.1.2 常用汇编管理指令 6、XDEF和XREF XDEF-在本文件中定义可以被其他文件中的程序调用的子程序; XREF-说明本子程序的定义在其他文件中。 XDEF ASM_ROUTINE XREF C_FUNCTION,BUSY_FLG ASM_ROUTINE BFSET #$0001,X:BUSY_FLG BCS BUSY JSR C_FUNCTION BFCLR #$0001,X:BUSY_FLG BUSY RTS 混合编程 1、main.c 文件中: int asmadd(int, int); 2、*.asm文件中: global Fasmadd 4.2 DSP56800的寻址方式 4.2.1 立即数寻址与绝对地址寻址 立即数寻址指的是汇编指令中的操作数是一个数值。如:MOVE #$0001,A 绝对地址寻址指的是一个绝对地址。 4.2.2 寄存器直接寻址(操作数是寄存器) MOVE.W R0,A0 ;将R0寄存器的值传送给A0 4.2.3 寄存器间接寻址(以寄存器R0、R1、R2、R3中的值为指针的寻址) MOVE.L X:$1000,A0 4.2 DSP56800的寻址方式 4.2.4 带有偏移量的寄存器间接寻址 MOVE X(R0±offset),X1 4.2.5 带事后加/减1的寄存器间接寻址 MOVE Y1,X(R0)+ 4.2.6 带事后加/减n的寄存器间接寻址 MOVE Y1,X(R0) +N 4.2.7 存储器绝对短寻址与I/O短寻址 4.3 数据传输指令 以MOVE为主,可以实现立即数向内部寄存器、数据存储器、输出设备的写入,实现寄存器之间、寄存器与数据存储器和程序存储器之间、寄存器与I/O设备之间的数据传输。 某些数据传输指令可以与算术运算指令、逻辑运算指令同时读入,并行执行。算数运算指令还可以并行地执行另外两条指令,分别通过不同的2条数据总线从存储器中并行读入数据,实现并行数据传输。 4.3 数据传输指令 MOVE #$0010,A0 MOVE X0,X:R0 MOVE X:(R0+offset),X1 MOVE X:(R0+N),X1 MOVE Y1,X:(R0)+ MOVE Y1,X:(R0)+N LEA X:(R0)+ POP R ? MOVE (SP)-,R 4.3 数据传输指令 LEA和POP指令 LEA-地址寄存器加/减1 eg: LEA X:(R0)+;将R0+1的值放入R0中 POP-从堆栈中弹出SP指向的当前值到某一寄存器R中,然后SP的值减1。 eg: POP R 4.4 乘法与乘/加指令 IMPY:整数乘法指令实现16位整数与16位整数的乘法,结果超出16位的话会出现错误,溢出标志会置位。 MAC:将两个带符号的16位源寄存器的操作数S1和S2的积与指定的36位目标累加器D进行加/减 MACR:除完成MAC功能,还实现结果四舍五入 MPY:实现16位带符号数

文档评论(0)

ajgoaw + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档