通过编程求解y=(ax^2-bx+c)/(dx+e),将商和余数分别放在数
据存储器1000H和1001H单元。
(1)已知a=8,b=6,c=10,d=7,e=9,x=5,求y。
(2)已知a=0.9,b=0.1,c=0.5,d=0.4,e=0.2,x=0.8,求y。

        .title  "division.asm".mmregs
Y       .usect  "Y",10H     ;若程序中要使用堆栈,必须先进行设置X       .usect  "X",1       .data         ; 使用伪指令.sect,.text或.data改变段
table:  .word   8,6,10,7,9;分别将a,b,c,d,e放入堆栈
tal:    .word   5;独立开辟空间放X的值.def    start
start:      STM     #Y,AR2  RPT     #4MVPD    table,*AR2+     ;先开辟一个较大的堆栈区,用已知数充填STM     #X,AR3  MVPD    tal,*AR3    ; 从程序存储器到数据存储器LD      #0,ALD      #0,B;累加器清0STM     #Y,AR3;将数据段的首地址给ARxSTM     #X,AR2SQURA   *AR2,A               ;A=(*AR2)^2STL     A,*AR4          ;将累加器的低字节赋值给AR4指向的空间MAC     *AR4,*AR3+,B      ;B=aX^2计算后AR3指向下一个地址STL     B,*(0201H)LD      #0,A      ;累加器初始化MAC     *AR2,*AR3+,A          ;A = A+bXSTL     A,*AR4  SUB     *AR4,B     ;B=B-*AR4  =>   B=aX^2-bXADD     *AR3+,B        ;B=aX^2-bX+cSTL     B,*(0201H)LD      #0,AMAC     *AR2,*AR3+,A ADD     *AR3,A;A=dX+eSTM     #0203h,AR4STM     #0204h,AR5STL     A,*AR4STL     B,*AR5  ;验证答案RPT     #15SUBC    *AR4,B  ;除法STL     B,*(1000H) ;商STH     B,*(1001H)  ;余
end:        B       end.end.title  "vectors.asm".ref    start.sect   ".vectors"B   start.enddivision.obj
vectors.obj
-o  division.out
-m  division.map
-estart
MEMORY
{
PAGE    0:EPROM:  org=0e000h  len = 0100hVECT:   org=0ff80h  len = 0004h
PAGE    1:SPRAM:  org=0060h   len = 0020hDARAM1: org=0100h   len = 0010hDARAM2: org=0080h   len = 0002h
}
SECTIONS
{.text   :>EPROM     PAGE    0.data   :>EPROM     PAGE    0X   :>DARAM1    PAGE    1Y   :>DARAM2    PAGE    1.vectors:>VECT      PAGE    0}
;cmd脚本文件,定义空间位置
        .title  "division.asm".mmregs                 ;将寄存器符号设置为全局可用.bss   a,6.bss   b,1.data
table1:     .word   8*32768/10,9*32768/10,1*32768/10,5*32768/10,4*32768/10,2*32768/10
table2:     .word   8*32768/10.def    start   ;.def表示某符号在本文件定义,可为其他文件引用.text
start:      SSBX    FRCTSTM     #a,AR2RPT #6MVPD    table1,*AR2+STM     #b,AR3MVPD    table2,*AR3LD      #0,ALD      #0,BSTM     #a,AR2STM     #b,AR3MPY     *AR3,*AR2+,A   ;乘法  等同SQURA *AR3,A 得出值      假如为005F7A**** ;即00 0101 1111 0111 1010*****=2^(-1)+2^(-3)+……
如果不是特别要求可以省略低字节数据STH     A,*AR4STH     A,*(0200H)      ;     A=X^2的值存储在0200HMAC     *AR4,*AR2+,BSTH     B,*(0201H)       ;B=aX^2将值存储在0201HLD      #0,AMAC     *AR3,*AR2+,ASTH     A,*AR4  SUB     *AR4,16,BADD     *AR2+,16,B  STH     B,*(0202H)      ;B=aX^2-bX+c的值存储在0202HLD      #0,AMAC     *AR3,*AR2+,AADD     *AR2,16,A          ;A=dX+eSTM     #0203H,AR4        STH     A,*AR4           ;*AR4=dX+e;A=dX+e的值存储在0203HSTM     #0204h,AR5  STH     B,*AR5       ;B=aX^2-bX+cLD      #0,BLD      *AR5,BRPT     #15SUBC    *AR4,B;XC     1,BLT;NEG        ASTL     B,*(1000H)STH     B,*(1001H)end:        B       end.end.title  "vectors.asm".ref    start.sect   ".vectors"B   start.enddivision.obj
vectors.obj
-o  division.out
-m  division.map
-estart
MEMORY
{
PAGE    0:EPROM:  org=0e000h  len = 0100hVECT:   org=0ff80h  len = 0004h
PAGE    1:SPRAM:  org=0060h   len = 0020hDARAM1: org=0100h   len = 0010hDARAM2: org=0080h   len = 0002h
}
SECTIONS
{.text   :>EPROM     PAGE    0.data   :>EPROM     PAGE    0.bss    :>SPRAM     PAGE    1.vectors:>VECT      PAGE    0}

DSP ccs2 C5000编译SUBC指令实现除法相关推荐

  1. 版本为2.5的OpenMP规范中的编译制导指令汇总

    OpenMP的所有编译制导指令是以#pragma omp开始 #pragmaomp指令 [子句[,子句]„] 版本为2.5的OpenMP规范中的指令有以下这些: parallel:用在一个结构块之前, ...

  2. fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾

    问题:drawhouse1.cpp(17) : fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾 解决: 方法1.cpp文件添加引用#include "Stdaf ...

  3. DSP的EALLOW和EDIS指令

    DSP的EALLOW和EDIS指令      在看DSP初始化程序的时候,经常会看到      void DisableDog(void)      {          EALLOW;       ...

  4. C/C++编译预处理指令

    众所周知,你的程序编译前要做的事就是扫描源代码,对其做初步的转换,产生新的源代码提供给编译器,这个过程就叫编译预处理.这个处理过程由预处理器来完成,预处理器是在程序真正运行前由编译器调用的预处理程序. ...

  5. DSP C2000汇编语言,DSPC2000汇编指令

    值.XT寄存器的低16位部分是TL寄存器.该寄存器能装载一个16位有符号数,能自动对该数进行符号扩展,然后将其送人32位XT寄存器.XT寄存器的高16位部分是T寄存器.该寄存器主要用来存储16位乘法操 ...

  6. android 编译make指令

    一.编译指令 1.make -jX X表示数字,这个命令将编译Android系统并生成镜像,XX表示可以使用到的CPU核数, 2.make snod 这条命令将重新生成镜像,消耗的时间很少,类似Win ...

  7. c语言编译预处理指令大全,C语言预处理指令

    「今天是学习C语言第 32 天」 当你选择了一种语言,意味着你还选择了一组技术.一个社区.--Joshua Bloch # 预处理 C语言源程序先经过预处理器进行预处理,之后经过编译器编译成二进制可执 ...

  8. android 几个快速编译images指令

    Android比较重要的image: 0.make update-api //修改framework公共api后,更新api 1.make bootimage – boot.img 2.make sy ...

  9. 【编译制导指令】#pragma pack - 字节数基准对齐

    #pragma pack(1) struct {char c;int i; }S; int main() {cout<<sizeof(S)<<endl; } 那么,结果为: $ ...

最新文章

  1. 从 k8s 上卸载 KubeSphere
  2. 8.12-14 df 、mkswap、swapon、swapoff、sync
  3. Java基础(39)Arrays.binarySearch方法
  4. 隔离型RS232串口电路
  5. [Leetcode 376]摇摆序列 Wiggle Subsequence
  6. java 接口 print_Java-接口练习
  7. MaxCompute - ODPS重装上阵 第五弹 - SELECT TRANSFORM
  8. Python文档阅读笔记-OpenCV中Match Shapes
  9. vue调用手机相机相册_移动端vue调用照相机及相册
  10. 计算机编程结束进程代码,M代码如何停止CNC编程的程序
  11. Android.mk中call all-subdir-makefiles和call all-makefiles-under,$(LOCAL_PATH)的区别
  12. SQL群集多实例卸载、安装
  13. Oracle常见索引扫描方式总结
  14. 第二章 信息化规划与组织
  15. android studio透明背景,使用Android Studio时出现黑色的PNG透明背景
  16. Android-系统服务-ClipboardManager
  17. 基于51单片机的LED彩灯控制器设计
  18. HTML5之帆布(canvas)(三)
  19. 【渝粤题库】广东开放大学 经济法实务 形成性考核
  20. (wps)表格下拉选择多个选项

热门文章

  1. 黄淮学院计算机类专业属于几本,黄淮学院是几本院校
  2. git pull 时显示Filename too long的解决办法
  3. PCB应用:Protel 99SE 向 AD16 应用转换的过程( 一 )
  4. 神仙技巧-应急响应的神兵利器
  5. Featured Domains
  6. android编辑框最大字数,(转)Android中EditText的输入字数限制
  7. 计算机网络基础——应用层(上云必看)
  8. 重来之大学版|卸负篇——破除光环效应,学长学姐、教授老师真的有这么厉害吗?
  9. 使用thymeleaf对数据库取出的数据进行渲染时所踩的”坑“
  10. 雅虎都沦落到卖核心资产,为何马云孙正义巴菲特还抢着买