西門(mén)子S7-200PLC由“冒泡法”排序算法的逆向思考

發(fā)布時(shí)間:2024-02-02
在一些c語(yǔ)言資料上看到,“冒泡法”排序一般是從最后一個(gè)數(shù)據(jù)開(kāi)始,向地址小的方向相鄰兩個(gè)數(shù)據(jù)比較,并按照從小到大或者從大到小排序的一種算法。在數(shù)據(jù)比較、移動(dòng)的過(guò)程中,數(shù)據(jù)的運(yùn)動(dòng),看起來(lái)好像水中的氣泡向上運(yùn)動(dòng)。故而稱(chēng)之為“冒泡法”排序。
“冒泡法”排序,在知道數(shù)據(jù)的起始地址、數(shù)據(jù)個(gè)數(shù)、數(shù)據(jù)類(lèi)型后,需要算出最后一個(gè)數(shù)據(jù)的地址,并從最后的一個(gè)地址開(kāi)始運(yùn)算排序。我在想,為什么不能從數(shù)據(jù)的起始地址開(kāi)始排序呢,如果采用這種“下沉法”排序,還能省去計(jì)算數(shù)據(jù)的結(jié)束地址,程序應(yīng)該會(huì)更簡(jiǎn)潔。于是自己就試著寫(xiě)了一下“下沉法”排序的plc程序代碼,并測(cè)試通過(guò)。
排序環(huán)境:224cpu,從vb1000開(kāi)始連續(xù)20個(gè)整數(shù),從小到大排序?!跋鲁练ā迸判蛩惴▍⒖即a如下:
//******************給外循環(huán)體、內(nèi)循環(huán)體的循環(huán)次數(shù)賦初值***********************
ld sm0.0 //開(kāi)始執(zhí)行從小到大的排序程序
movw 19, lw2 //給外循環(huán)次數(shù)(數(shù)據(jù)個(gè)數(shù)-1)賦初值
movw 19, lw6 //給內(nèi)循環(huán)次數(shù)(數(shù)據(jù)個(gè)數(shù)-1)賦初值
//*******************建立外循環(huán)體并定義排序的其實(shí)地址*****************************
for lw0, +1, lw2 //for外循環(huán)體循執(zhí)行l(wèi)w2次
movd &vb1000, ac1 //將v區(qū)的起始地址賦給ac1,定義排序的起始地址
//**************建立內(nèi)循環(huán)體并開(kāi)始進(jìn)行相鄰的兩個(gè)數(shù)據(jù)比較、移動(dòng)****************
for lw4, +1, lw6 //for內(nèi)循環(huán)體循執(zhí)行l(wèi)w6次
movd ac1, ac2 //把當(dāng)前ac1里面的地址存儲(chǔ)到ac2里面
+d +2, ac2 //ac2當(dāng)前地址+2,存入ac2
ldw< *ac2, *ac1 //如果ac2指向的地址里面的內(nèi)容小于ac1指向的地址里面的內(nèi)容
movw *ac1, lw8 //那么將當(dāng)前兩個(gè)地址里面的內(nèi)容互換
movw *ac2, lw10 //如果ac2指向的地址里面的內(nèi)容不小于ac1指向的地址里面的內(nèi)容
movw lw8, *ac2 //那么當(dāng)前兩個(gè)地址里面的內(nèi)容保持不變
movw lw10, *ac1 //如果把小于比較指令改成大于比較指令,那么數(shù)據(jù)就是從大到小排序
ld sm0.0
+d +2, ac1 //ac1當(dāng)前地址+2,存入ac1
next //跳轉(zhuǎn)到for內(nèi)循環(huán),如果內(nèi)循環(huán)執(zhí)行結(jié)束,程序往下執(zhí)行
//*******************內(nèi)循環(huán)執(zhí)行結(jié)束,進(jìn)入外循環(huán)執(zhí)行*****************************
decw lw6 //內(nèi)循環(huán)體執(zhí)行結(jié)束,將內(nèi)循環(huán)體的循環(huán)次數(shù)減1
next //跳轉(zhuǎn)到for外循環(huán),如果外循環(huán)執(zhí)行結(jié)束,程序往下執(zhí)行
上面代碼基本采用臨時(shí)變量作運(yùn)算的,其實(shí)還可以將其封裝成一個(gè)子程序,實(shí)現(xiàn)多次調(diào)用。
上一個(gè):華為榮耀8怎么設(shè)置雙4G
下一個(gè):如何洽談工程預(yù)算與裝修合同?讓貓膩無(wú)處可藏!

surface更換硬盤(pán),微軟surface更換硬盤(pán)
抵押物能否列入破產(chǎn)財(cái)產(chǎn)
RC0100FR-071K4L,01005 1.4KΩ 1% 1/32W 電阻
洛克王國(guó)英魂?duì)幇?洛克王國(guó)英魂印記怎么獲得)
選擇感應(yīng)傳感器時(shí)(感應(yīng)傳感器的類(lèi)型有哪些)
菊花矮化病的防治方法
LRE0805-2CR0015F5,旺詮合金0805 0.0015Ω ±1% 0.5W
蘇州太湖牛仔風(fēng)情度假村好玩嗎 附游玩項(xiàng)目
四核處理器英文怎么說(shuō),和四核處理器用英語(yǔ)怎么說(shuō)
酷狗歌曲怎么傳到蘋(píng)果5s上去,怎么把酷狗等音樂(lè)軟件的歌曲傳到蘋(píng)果手機(jī)里
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos