找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
你要求的就是一个依次从大到小的地一个数值排列,这就是冒泡法了吧.
论坛上面有很多的程序,你可以在搜索栏输入冒泡两个字就可以找到很多了.
这里我也引用一下:
1、首先要将程序中的数据块DB设置为足够大的软容量,这个程序的DB必须大于80个字,即40个双字。最重要的是在执行程序之前必须下载到CPU中,否则就会报错。
2、注意这个程序是实现浮点数(32位实数)的排序。
3、转帖进行十次排序源程序:
DBD0
DBD4
…
DBD36
下面是西门子的程序
OPN???DB????1?????????????????/////打开DB1这个数据块
??????L?????10??////装载10到MB0中,因为有十个数据,要进行十次排序,9次也可以的
LL0:??T?????MB????0
??????L?????P#0.0???////装载地址指针,这是关键,不要搞错了
??????LAR1??
??????L?????9
LL1:??T?????MB????2???////内部循环,进行9次,直到把最大值排到最后
??????L?????DBD?[AR1,P#0.0]
??????L?????DBD?[AR1,P#4.0]
??????<R????
??????JC????LL2??????????////比较前后两个值,如果前面大于后面的,则前后数据交换
??????L?????DBD?[AR1,P#0.0]
??????T?????#m_temp
??????L?????DBD?[AR1,P#4.0]
??????T?????DBD?[AR1,P#0.0]
??????L?????#m_temp
??????T?????DBD?[AR1,P#4.0]
LL2:??+AR1??P#4.0?????////指针自动进行加4,因为是浮点数,所以要跳过4个字节
??????L?????MB????2
??????LOOP??LL1???????///这个指令自动的将A寄存器里的值减1
??????L?????MB????0
LOOP??LL0
回答者: 阿鸣 - 大师??第17级
?2014-12-29 13:22:15
链接:http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=122867&cid=1029
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!