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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle10G/11G官方下载地址集合 直接迅雷下载

    oracle10G/11G官方下载地址集合 直接迅雷下载

    2021年12月16日
    43
  • VirtualBox安装Mac OS 10.11——虚拟机安装黑苹果

    VirtualBox安装MacOS10.11,安装日期:2016/5/14用虚拟机装黑苹果本人也装了不下3次了,这次为了做这个教程还特意把virtualbox和旧版的MacOS删了,重新再装一遍。所以保证能运行,不像网上其他教程都是导出复制,还不要脸的贴个原创。VirtualBox是官网下的最新版:5.0.20forWindowshostsx

    2022年4月4日
    766
  • mqttnet 详解_MQTTnet 3.0.5学习笔记

    mqttnet 详解_MQTTnet 3.0.5学习笔记段时间在使用MQTTnet,都说这个东西比较好,可是翻了翻网上没有例子给参考一下。今天算是找到了,给高手的帖子做个宣传吧.由于GitHub上介绍的东西比较少,以我的水平真是不知道怎么用,先照葫芦画瓢,再看看怎么回事吧:功能:把订阅与发布做成一个类,还带有自动重连的功能usingSystem.Threading;usingSystem.Threading.Tasks;usingMQTTnet;usi…

    2022年6月25日
    60
  • linux 查看cpu核数、内存总容量、硬盘总容量

    linux 查看cpu核数、内存总容量、硬盘总容量一 查看 cpu 核数 cat proc cpuinfo grep physicalid sort uniq wc lcat proc cpuinfo grep process sort uniq wc l 二 查看内存总容量 cat proc meminfo 三 查看硬盘总容量 df hl 显示 文件系统容量已用可用已用 挂载点 FilesystemSi

    2025年7月14日
    3
  • Ant安装配置

    Ant安装配置先在http://ant.apache.org/下载Ant,例如我下载的是最新版的apache-ant-1.7.1-bin.zip文件,然后解压缩至E:/apache-ant-1.7.1,添加环境变量ANT_HOME=E:/apache-ant-1.7.1,在PATH变量中添加%ANT_HOME%/bin;,Ant就算是配置好了。环境:WindowsXP

    2022年7月18日
    16
  • Docker(三) 通过gitlab部署CICD「建议收藏」

    Docker(三) 通过gitlab部署CICD「建议收藏」文章目录Docker(三)docker通过gitlab部署CICD一、部署gitlab1.1拉取gitlab镜像1.2运行gitlab镜像1.3配置1.4若发生502报错二、CI2.1Runner搭建2.2注册Runner2.3样例测试2.3.1新建maven-tomcat项目2.3.2创建.gitlab-ci.yml2.3.3编写Dockerfile文件2.3.4编写docker-compose.yml文件三、CD3.1安装Jenkins3.2配置目标服务器及Gitla

    2022年5月2日
    129

发表回复

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

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