C6000汇编语言实现乘法,C6000(四)-汇编.ppt[通俗易懂]

C6000汇编语言实现乘法,C6000(四)-汇编.ppt[通俗易懂]C6000(四)-汇编BIT/TI第四讲汇编语言初步第四讲汇编语言初步目的:用汇编语言编写简单程序学习内容汇编代码的结构汇编程序的构成编写简单算法:y=mx+b一、汇编代码的构成label:||[cond]instruction.unitoperand;comment常用伪指令二、汇编程序的构成程序=数据结构+算法汇编程序…

大家好,又见面了,我是你们的朋友全栈君。

C6000(四)-汇编

BIT/TI 第四讲 汇编语言初步 第四讲 汇编语言初步 目的:用汇编语言编写简单程序 学习内容 汇编代码的结构 汇编程序的构成 编写简单算法:y = mx+b 一、汇编代码的构成 label: || [cond] instruction .unit operand ;comment 常用伪指令 二、汇编程序的构成程序=数据结构+算法 汇编程序-数据结构 汇编程序-算法 完整的汇编程序构成 三、用汇编指令编写y=mx+b 1.数据取入寄存器:m,x,b存储器->寄存器 1a. 初始化数据指针 1b. 取数据 2.乘法 3.加法 4.存储数据:y寄存器->存储器 1a.指针初始化 指令MVK 1b.取数据 LD/ST指令 三种Load指令,对应不同长度的数据 LDW取32位字(word) LDH取16位半字(short) LDB取8位字节(byte) 对无符号数(字节、16位半字) LDBU LDHU 指令延迟:四个延迟间隙 三个存储指令 STW STH STB 指令延迟间隙 2.乘法 MPY .M1 A1, A3, A7 NOP 乘法指令 四种乘法指令 MPY(U/US/SU)16LSB×16LSB MPYH(U/US/SU) 16MSB×16MSB MPYH(U/S)L(U/S) 16MSB×16LSB MPYL(U/S)H(U/S)16LSB×16MSB 指令延迟槽:1 两个乘法单元可以在一个周期内做两次乘法 3.加法 4.存储结果 完整的y=mx+b汇编程序 程序最后是一个无限循环的跳转指令,注意跳转指令后的延迟槽。 B$ NOP5 存取指令的选择与数据类型密切相关。本例中使用的是int数据,因此相应的就使用LDW。相应的byte和short数据就使用LDB和LDH。(下页幻灯片) 指令延迟槽 LD指令需要5个周期才能完成,即LD指令后必须等待4个周期才能使用LD指令读取的数据。而在这之前相应寄存器内是旧的数据。 延迟槽就是在LD指令后,紧接着LD指令需要使用LD所取指令的下个指令前,需要插入的空操作指令NOP的个数。这里LD指令的延迟槽是4。下面是其它指令的延迟槽: * 标号:代码或 变量地址 条件寄存器 指令: 助记符(mnemonic) 伪指令(directive) 功能单元(可选) 操作数: 寄存器 常量 指针 注释 x .int 10 MPY .M1 A1, A3, A7 || ADD .L1x A2, B2, A5 在C语言里long是40位,在汇编语言里long是32位 注意 数据结构 算法 C程序的数据结构和算法实现 用汇编语言声明数据结构 用汇编语言编写算法 .sect “myData” m.int5 x.int10 b.int2 y.int0 .sect “myCode” startLD .D1 *A0,A1 . . . ST .D1 A7,*A6 endB end NOP 5 32位常量 MVK.S1m, A0 MVKH.S1m, A0; &m->A0 MVK.S1x, A2 MVKH.S1x, A2; &x->A2 MVK.S1b, A4 MVKH.S1b, A4; &b->A4 MVK把一个16位常数放入寄存器 LDH .D1*A0, A1; 取m LDH .D1*A2, A3; 取x LDH .D1*A4, A5; 取b NOP4 数据取入寄存器 后进行符号扩展 无符号扩展 延迟间隙:多周期指令所需要插入的NOP指令个数 或 或 ADD.? 应该使用哪个功能单元? ADD .?A5, A7, A7 .title “lab4.asm” /*定义数据结构*/ .sect “myData” m .short 10 x.short 5 b.short 2 y.short 0 /*算法*/ .sect “myCode” /*指针初始化*/ init:mvk .s1 m,A0;A0=&m mvkh .s1 m,A0 mvk .s1 x,A2 ;A2=&x mvkh .s1 x,A2 mvk .s1 b,A4;A4=&b mvkh .s1 b,A4 mvk .s1 y,A6 ; A6=&y mvkh .s1 y,A6 /*取数据*/ ldh .d1 *A0,A1 ; A1= m ldh .d1 *A2,A3 ; A3=x ldh .d1 *A4,

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150513.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月23日 下午7:16
下一篇 2022年6月23日 下午7:36


相关推荐

  • (授人以鱼不如授人以渔)mysql-connector-java各种版本下载地址

    (授人以鱼不如授人以渔)mysql-connector-java各种版本下载地址原文:https://blog.csdn.net/Milan__Kundera/article/details/81182757mysql-connector-java下载地址:http://mvnrepository.com/artifact/mysql/mysql-connector-java选择自己的版本:然后再点击…

    2022年7月25日
    13
  • Python 字符串格式化输出的3种方式

    Python 字符串格式化输出的3种方式1 print 我叫 s 身高 scm name height 传入的值为元组 依次填充 s 占位符 str d 十进制整数 x 十六进制 f 浮点型指定长度 5d 右对齐 不足左边补空格 5d 代表左对齐 不足右

    2026年3月19日
    2
  • Java 中线程状态有哪些?

    Java 中线程状态有哪些?写在前面本文隶属于专栏 100 个问题搞定 Java 并发 该专栏为笔者原创 引用请注明来源 不足和错误之处请在评论区帮忙指出 谢谢 本专栏目录结构和文献引用请见 100 个问题搞定 Java 并发解答线程的状态在 java 中有明确的定义 在 java lang Thread State 中有 6 种 NEW 线程被创建 未执行和运行的时候 RUNNABLE 不代表线程在跑 两种 被 cpu 执行的线程 随时可以被 cpu 执行的状态 BLOCKED 线程阻塞 处于 synchronized 同步代码块或方法中被

    2026年3月16日
    2
  • 常见的定位技术主要有哪些?

    常见的定位技术主要有哪些?目前 常见的定位技术主要有 蓝牙 RFID WIFI 超宽带 UWB 超声波等 智物达 智寻 超宽带 UWB 定位系统是一种以极低功率在短距离内高速传输数据的无线定位技术 UWB 技术超宽带 UWB 无线定位技术由于功耗低 抗多径效果好 安全性高 系统复杂度低 尤其是能提供非常精确的定位精度等优点 而成为未来无线定位技术的热点和首选 UWB 技术为一种发射功率较弱 传输速率惊人 上限达到 10

    2026年3月17日
    2
  • 人事管理系统 c语言版

    人事管理系统 c语言版

    2021年12月9日
    70
  • resnet34 pytorch_pytorch环境搭建

    resnet34 pytorch_pytorch环境搭建导师的课题需要用到图片分类;入门萌新啥也不会,只需要实现这个功能,给出初步效果,不需要花太多时间了解内部逻辑。经过一周的摸索,建好环境、pytorch,终于找到整套的代码和数据集,实现了一个小小的分类。记录一下使用方法,避免后续使用时遗忘。感谢各位大佬的开源代码和注释!找到一个大佬的视频讲解和代码开源:github:https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/data_setbilb

    2026年4月16日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号