第3章 指令系统与程序编写.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 指令系统与程序编写

第3章 指令系统和程序编写;3.1 寻址方式;3.1.1 立即寻址;2.长立即寻址 长立即寻址方式下,指令中包含一个16位的操作数。长立即寻址方式的指令是双字指令,立即数就是第二个字。; 直接寻址是一种常用的寻址方式,可以访问64K字数据存储器。在DSP控制器中,数据存储器按页进行管理,整个64K字数据存储器分为512个数据页,由状态寄存器ST0中的9位数据页面指针(DP)值确定,例如DP值为000000011b,即当前数据每个数据页含有128个字单元。在访问数据存储器时,首先确定当前数据页(通过LDP等指令),它页为3。确定当前数据页后,该数据页128个字中的哪一个字则由指令寄存器的低7位偏移量指定DSP控制器的直接寻址指令中的直接地址就是该低7位偏移量。中央处理单元将当前DP值与偏移量拼接,就变成16位的存储器地址。 ;使用直接寻址方式访问数据存储器时,必须首先对DP进行设置,然后再书写进行某种操作的指令。步骤如下: 1)设置数据页。 将当前数据页面(0~511)装入DP。可通过LDP指令或其他能向ST0装入值的任意指令来装载DP。LDP指令仅加载DP而不影响ST0的其它位,并明确指出装入的DP值。 例:指定数据页面为31,则使用 LDP #31。 2)设置偏移量。 给出7位偏移量作为指令的一个操作数。 例:要求ADDC指令则使用当前数据页面中的3Ah单元的值 则使用指令:ADDC 3Ah ;注意:; ;例:LDP #500 ;将数据页面设置为500(地址FA00h~FA7Fh) ADDC 6h ;数据存储器地址FA06h中的内容加进位位C的值再加累加器的内容,结果存入累加器 上例中,立即数500=1F4h=111110100B装入DP,与第二条指令的操作数6h=0000110B连接成16位地址1111101000000110B=FA06h。 ;3.1.3 间接寻址;1. 辅助寄存器的选择 将数值0~7装入状态寄存器ST0的高3位 (D15~D13),该3位为辅助寄存器指针ARP,其编码值即对应8个辅助寄存器AR0~AR7。可使用LST和MAR指令装载ARP值,也可使用支持间接寻址方式的任意指令作为装置ARP的辅助操作方式。;2.间接寻址的选择;●增或减一个变址量。将AR0中的值作为变址量。指令使用当前辅助寄存器的内容作为数据存储器地址,指令执行后将当前辅助寄存器的内容增加或减去这个变址量,结果送到当前辅助寄存器。 ●按反向进位方式增或减一个变址量。将AR0中的值作为变址量。指令使用当前辅助寄存器的内容作为数据存储器地址,指令执行后将当前捕助寄存器的内容按反向进位方式增加或减去这个变址量,结果送到当前辅助寄存器,反向进位方式的加或减是从最高位开始运算,有进位(或借位)给低位。这适用于FFT算法。;选项;例: ADD *, 8 ;把当前辅助寄存器指向的数据存 储器地址的内容左移8位后加至累加器 ADD *+, 8 ;把当前辅助寄存器指向的数据存储器地址的内容左移8位后加至累加器,将当前辅助寄存器内容加1;3.间接寻址操作码格式;4. 下次使用的辅助寄存器;例:选择新的当前辅助寄存器。 MAR *, AR3 ;将3装入ARP,使AR3成为下次使用的辅助寄存器 LT *+,AR2 ;将当前辅助寄存器AR3的内容作为地址,把该地址单元的内容装入暂时寄存器(TREG)然后将AR3内容加1;再使;AR2成为下次使用的辅助寄存器 MPY * ;将AR2的内容作为地址,把该地址单元内容与TREG的内容相乘,乘积送入乘积寄存器PREG中,下次使用的辅助寄存器仍为AR2 ;5.修改辅助寄存器内容;3.2 指令系统;指令助记符:由可描述指令特征的助记符表示,它规定了指令的操作功能,不能缺省。以上7种格式基本包含了所有指令的类型。但不是所有的指令都具备这7种格式。 操作数:在操作数中定义了该句法表达式中所用的变量,以及寻址方式。 注释:为便于阅读,对指令作的说明。 此外,指令助记符与操作数之间要用空格分开,各操作数之间要用“,”号分开,操作数可缺省。 黑体字符表示在该类型的指令中必须写出的字符,其它字符为变量,指令中用数字或字符代替。;3.2.2 指令集;一、累加器、算术和逻辑运算指令;举例:;2.ADD 带移位的加法 语法:1)ADD dma [,shift ] 2)ADD dma,16 3)ADD ind [,shift [,ARn ] ] 4)ADD ind,16 [,ARn ] 5)ADD # k 6)ADD # lk [,

文档评论(0)

htfyzc + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档