首页 > 其他分享 >200 Smart的一些关于寄存器和地址相关的用法实例

200 Smart的一些关于寄存器和地址相关的用法实例

时间:2024-04-19 14:35:42浏览次数:22  
标签:200 LD Network 累加器 地址 AC2 AC1 寄存器 Smart

  1. 累加器
    • 200smart 有AC0 AC1 AC2 AC3四个累加器,不能作为位访问
    • 累加器大小均是32位
    • 累加器的数值不会自动清零,中断会保持并重新装载累加器(进入中断时先把原来的值保存起来,退出中断程序后恢复原程序)
    • 只有AC1/AC2/AC3可以用作指针
    • AC0不用作指针,不用作间接寻址
LD     SM0.0 //Always_On
MOVD   &VB0, AC1 //把从VB的起始的地址存入到AC1中,传地址用的DWORD
MOVW   *AC1, VW2 //*,把AC1地址所指向的内容给到VW2,值本身用的WORD
  1. 指针
    • 指针的目的,实现数据寻址
//一个案例,实现VW0,VW2,VW4,VW6累加
//Network 1
LD     SM0.0
MOVD   &VB0, AC1 //把起始地址给累加器1

//Network 2
LD     M0.0 //启动信号,启动循环
EU         //上升沿
FOR    VW100, 1, 4 //for循环,VW100只是用来装当前循环次数的容器,不需要赋值。对应成SCL表示为`for VW100:=1 to 4 by 1 do`

//Network 3
LD     SM0.0
MOVD   AC1, LD0 //自己新建了一个地址是LD0的DWORDL区变量,用来存地址
+D     2, LD0 //把LD的地址+2,结果存在LD中,表示AC1的下一个地址
+I     *AC1, *LD0 //把两个地址对应的数据相加,结果存在*LD0里面
+D     2, AC1 //把AC1的地址+2,开始下一次循环

//Network 4
NEXT //FOR..NEXT
注意:
`+D`/`+I`/`MOVD`等指令,它的计算结果放在第二个数里面,比如`<+D     2, LD0>`,运算结果存回LDO中。
  1. 冒泡排序里面应用累加器&
    • 原理:比较相邻的两个元素,如果第一个比第二个大,则交换位置;一轮结束后,最后一个元素将会是最大的数,针对所有元素重复上述循环
//子程序开始,表示一些块信息,标识符:<SUBROUTINE_BLOCK>
SUBROUTINE_BLOCK 冒泡排序:SBR0 
TITLE=子程序注释

//符号表内容,标识符:<VAR_INPUT..END_VAR>
VAR_INPUT
start:BOOL;
Data_Ptr:DWORD;	// 双字地址指针
Count:INT;	// 长度
END_VAR

//变量表内容,标识符:<VAR..END_VAR>
VAR
Index:INT;	// For循环使用变量
Middle:INT;	// 中间变量
END_VAR

//程序段正式开始,标识符:<BEGIN..END_SUBROUTINE_BLOCK>
BEGIN
Network 1 
// 创建指针地址
LD     SM0.0
MOVD   LD1, AC1 //这里的LD1指的是Data_Ptr,要排序的数的首地址
Network 2 
LD     L0.0 //表示start,开始排序触发
FOR    LW7, 2, LW5 //for循环,LW7表示index,LW5表示Count
Network 3 
LD     SM0.0
LPS //逻辑进栈,STL自动生成。表示并联梯形图扫描的先后
MOVD   AC1, AC2
+D     +2, AC2 //AC2=AC1+2
AW>    *AC1, *AC2 //比较指令,*AC1是否大于*AC2
MOVW   *AC1, LW9 //LW9,定义的一个中间变量
MOVW   *AC2, *AC1
MOVW   LW9, *AC2
LPP //逻辑出栈,STL自动生成。开始读另一个分支
+D     2, AC1
Network 4 
NEXT
END_SUBROUTINE_BLOCK

标签:200,LD,Network,累加器,地址,AC2,AC1,寄存器,Smart
From: https://www.cnblogs.com/xiacuncun/p/18145817

相关文章

  • 洛谷题单指南-动态规划1-P1049 [NOIP2001 普及组] 装箱问题
    原题链接:https://www.luogu.com.cn/problem/P1049题意解读:装尽可能多的物品,使得总体积越大越好,即剩余空间最小,还是一个01背包问题,物品的体积就是其价值。解题思路:01背包模版题,物品体积、价值相同,直接采用一维dp。100分代码:#include<bits/stdc++.h>usingnamespacestd;co......
  • 什么是智慧城市(Smart City)?
    SmartCity是一个常见的概念,但是这个东西,这个名词到底指代的是什么却一直搞不太清,于是就查了查资料,有了这篇blog。参考:https://baijiahao.baidu.com/s?id=1755347170326841404智慧城市趋势华为就曾发表全球产业展望2025白皮书(GlobalIndustryVision),内容提及利用大数据......
  • DP10RF001一款200MHz~960MHz 低功耗(G)FSK/OOK无线收发芯片应用无线遥控工控设备无线
    产品概述.DP10RF001是一款工作于200MHz~960MHz范围内的低功耗、高性能、单片集成的(G)FSK/OOK无线收发机芯片。内部集成完整的射频接收机、射频发射机、频率综合器、调制解调器,只需配备简单、低成本的外围器件就可以获得良好的收发性能。芯片支持灵活可设的数据包格式,支持自动应......
  • 洛谷题单指南-动态规划1-P1434 [SHOI2002] 滑雪
    原题链接:https://www.luogu.com.cn/problem/P1434题意解读:计算能滑行的最长距离。解题思路:设dp(i,j)表示从i,j可以滑行的最大距离对于4个方向i,j可以到达的点,ni,nj,如果可以滑过去(ni,ni所在点高度更低)则dp(i,j)=max(dp(i,j),1+dp(ni,nj))为了便于搜索4个方向的各条路径,......
  • MBR20200FCT-ASEMI肖特基二极管MBR20200FCT
    编辑:llMBR20200FCT-ASEMI肖特基二极管MBR20200FCT型号:MBR20200FCT品牌:ASEMI封装:TO-220最大平均正向电流(IF):20A最大循环峰值反向电压(VRRM):200V最大正向电压(VF):0.90V工作温度:-65°C~175°C反向恢复时间:5ns芯片个数:2芯片尺寸:130mil引脚数量:3正向浪涌电流(IFMS):200A包装方式:5......
  • POI2009SLO-Elephants
    #POI#Year2009#贪心#数学建图,对于每个环,有两种可行的方案,是这个环内部操作,需要的代价为\(mi\times(cnt-2)\),\(mi\)为这个环中的最小值,\(cnt\)为这个环的长度还可以用环外的一个点,需要的代价为\(mn\times(cnt+1)+mi\)直接贪心即可//Author:xiaruizeconsti......
  • POI2009LYZ-Ice Skates
    POI#Year2009#线段树#Hall定理考虑实际上是一个二分图匹配问题,那么这个二分图存在匹配当且仅对于\(L\)的任何子集右侧的度数和\(\geq\)左侧的然后线段树维护左侧的区间最大和//Author:xiaruizeconstintN=2e5+10;intn,m,k,d;structsegment_tree{#de......
  • POI2009GAS-Fire Extinguishers
    POI#Year2009#贪心贪心的把灭火器放到深度较小的点上,对于每个点,维护两个数组,记录距离当前点为\(x\)没有覆盖的点有\(a_x\)个,距离当前点\(y\)的灭火器有\(b_y\)个然后在每个点上,合并长度为\(len\)或者\(len-1\)的路径,因为这些路径不能延伸到父节点,所以要在这个点解决......
  • P2161 [SHOI2009] 会场预约
    原题链接题解找出右端点大于等于当前区间的左端点且左端点小于等于当前区间的右端点的所有区间,由于查询前这样的区间具有单调性,所以可以用二分,但是怎么快速删除呢?欸stl大法来了,用set存储区间,查找和删除和添加都是\(logn\)级的code#include<bits/stdc++.h>usingnamespace......
  • 【题解】P4307 [JSOI2009] 球队收益 / 球队预算
    P4307[JSOI2009]球队收益/球队预算题解题目传送门题意简述一共有\(n\)个球队比赛,输了赢了都会有相应的支出,现在让你安排\(m\)场比赛的输赢,是总支出最少。思路首先看到最小支出,状态不好定义,直接费用流,启动!。后文如果没有特殊说明,边的费用均为\(0\)。考虑建图,其......