|
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
討論:用匯編怎樣把一個(gè)二進(jìn)制數(shù)左右顛倒 |
作者:bg6nw 欄目:單片機(jī) |
我做的一個(gè)小課題,用8870解雙音頻,后送入MCS-51單片機(jī),因印板布局問(wèn)題,8870解碼輸出低位接到MCU的高位,如8870送出 #0001B ,MCU收到的是 #1000B,需要把數(shù)據(jù)左右顛倒后送入后級(jí)處理。 想了半天,想了個(gè)查表的法子,幸好從0--f才16個(gè)字,實(shí)現(xiàn)起來(lái)代碼也不多,但是我想還會(huì)有更簡(jiǎn)潔的辦法,再說(shuō),這是一個(gè)四位二進(jìn)制數(shù),要是八位的,那表格該有多么的壯觀呀。 這里我又想了一個(gè)小方法:正好我這個(gè)設(shè)計(jì)里面有多余的I2C存儲(chǔ)器空間,可以把數(shù)先低位在前寫(xiě)進(jìn)去,讀的時(shí)候高位在前讀回來(lái)。 探討一下有多少種方法來(lái)實(shí)現(xiàn)這個(gè)功能。 |
2樓: | >>參與討論 |
作者: ayb_ice 于 2007/5/7 16:49:00 發(fā)布:
寫(xiě)一個(gè)程序就可以了... |
3樓: | >>參與討論 |
作者: conwh 于 2007/5/7 17:59:00 發(fā)布:
左傳再右轉(zhuǎn) |
4樓: | >>參與討論 |
作者: every_day 于 2007/5/7 18:04:00 發(fā)布:
也不是很難啊 主要是移位就行了 |
5樓: | >>參與討論 |
作者: maychang 于 2007/5/7 19:18:00 發(fā)布:
51單片機(jī)有位操作 A、B兩個(gè)寄存器都可以位尋址。所以還能夠用這兩個(gè)寄存器以C為中介一位一位地移動(dòng)來(lái)實(shí)現(xiàn)。 |
6樓: | >>參與討論 |
作者: bg6nw 于 2007/5/7 21:02:00 發(fā)布:
是不是這樣? 設(shè)待操作數(shù)在 A 中 RLC A ;帶進(jìn)位位左移A MOV C ,B.0 ;A的高位送到B的低位 RLC A ;以此類(lèi)推。。。。。 MOV C ,B.1 RLC A MOV C ,B.2 RLC A MOV C ,B.3 RLC A MOV C ,B.4 RLC A MOV C ,B.5 RLC A MOV C ,B.6 RLC A MOV C ,B.7 MOV A ,B ;送回來(lái) 這樣行不行,我發(fā)現(xiàn)比查表簡(jiǎn)單多了,呵呵 |
7樓: | >>參與討論 |
作者: conwh 于 2007/5/7 21:09:00 發(fā)布:
正好是反了 MOV A, FORWARD RLC A MOV B。0, C AND SO ON |
8樓: | >>參與討論 |
作者: bg6nw 于 2007/5/7 21:22:00 發(fā)布:
不好意思,忘記用腦子了 反了第一個(gè),后面的是復(fù)制粘貼,再后來(lái)繆之千里了 |
9樓: | >>參與討論 |
作者: fushaobing 于 2007/5/8 21:41:00 發(fā)布:
左移再右移,左移再右移,... ;========================================================================= ; REVERSAL SUBROUTINE ;Inpiut: R2=data ;Oputput: R3=reversal data ;Affect: R2,R3,R4,A REVERSAL: MOV R4,#8 REVERSAL_0: MOV A,R2 RLC A ;Left rotate with C MOV R2,A MOV A,R3 RRC A ;Right rotate with C MOV R3,A DJNZ R4,REVERSAL_0 RET ;========================================================================= |
10樓: | >>參與討論 |
作者: dengm 于 2007/5/9 0:52:00 發(fā)布:
; 13 個(gè)周期 ;---------------------- ; 13 個(gè)周期 MOV C, ACC.1 RLC A MOV ACC.2, C ; A:65432701 MOV C, ACC.3 RLC A MOV ACC.4, C ; A:54367012 MOV C, ACC.5 RLC A MOV ACC.6, C ; A:45670123 SWAP A ; A:01234567 ;------------------------------------ ; 15 個(gè)周期 MOV B, A MOV C, B.1 RLC A MOV C, B.2 RLC A MOV C, B.3 RLC A MOV C, B.4 RLC A MOV C, B.5 RLC A MOV C, B.6 RLC A MOV C, B.7 RLC A * - 本貼最后修改時(shí)間:2007-5-9 1:19:59 修改者:dengm |
11樓: | >>參與討論 |
作者: bg6nw 于 2007/5/9 8:16:00 發(fā)布:
佩服ING 鄧大俠的13個(gè)周期的代碼真是構(gòu)思巧妙,代碼精簡(jiǎn),而且只用了很少的系統(tǒng)資源,真正讓小弟佩服的五體投地,四爪朝天。 |
|
|
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號(hào) |