|
|||||||||||
| 技術(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 |
一段匯編代碼指教(急) |
| 作者:li_bo123 欄目:單片機(jī) |
請(qǐng)教一下,下面這段匯編代碼完成的是什么功能?在NBD0函數(shù)中是不是將數(shù)組rdbuf的低5字節(jié)全部清空了?謝謝各位分析一下,我實(shí)在是不能明白這段代碼是什么意思。 MOV R0,#rdbuf MOV R1,#rdbuf+4 MOV R7,#04H NIBTD: CLR EA MOV A,R0 MOV R5,A MOV A,R1 MOV R6,A MOV A,R7 INC A MOV R3,A NBD0: MOV @R1,#00H INC R1 DJNZ R3,NBD0 MOV A,R7 MOV B,#08H MUL AB MOV R3,A ;R3=32 NBD4: MOV A,R5 MOV R0,A MOV A,R7 MOV R2,A CLR C NBD1: MOV A,@R0 RLC A MOV @R0,A INC R0 DJNZ R2,NBD1 MOV A,R6 MOV R1,A MOV A,R7 MOV R2,A INC R2 NBD3: MOV A,@R1 ADDC A,@R1 DA A MOV @R1,A INC R1 DJNZ R2,NBD3 DJNZ R3,NBD4 SETB EA RET |
| 2樓: | >>參與討論 |
| 作者: li_bo123 于 2005/6/16 15:24:00 發(fā)布:
為什么只有人看,沒(méi)有人指點(diǎn)一下? |
|
| 3樓: | >>參與討論 |
| 作者: li_bo123 于 2005/6/16 18:45:00 發(fā)布:
oh,My God,why nobody help me? |
|
| 4樓: | >>參與討論 |
| 作者: 阿豬 于 2005/6/16 21:22:00 發(fā)布:
哥們,自己用心看 我看是從rdbuff(有4個(gè)元素,因?yàn)閞dbuff+4是新存儲(chǔ)區(qū))讀數(shù)組,先做每個(gè)元素乘2(rlc a),后面的算法偶沒(méi)仔細(xì)想了,有點(diǎn)象BCD碼轉(zhuǎn)換之類的 程序沒(méi)有注釋,不好亂猜了 |
|
| 5樓: | >>參與討論 |
| 作者: nidget 于 2005/6/16 22:22:00 發(fā)布:
是啊,自己好好看吧 不過(guò),程序有點(diǎn)怪 如果第35行是: ADDC A,#0 的話,那它是統(tǒng)計(jì)rdbuf的數(shù)據(jù)各個(gè)位中1的個(gè)數(shù),并以十進(jìn)制保存在rdbuf+4中 但不是,就有點(diǎn)復(fù)雜了 沒(méi)有解釋,又只是一段,自己理解吧 |
|
| 6樓: | >>參與討論 |
| 作者: wenbinjj 于 2005/6/17 1:59:00 發(fā)布:
用來(lái)干嘛的? 寫(xiě)來(lái)干嘛的? |
|
| 7樓: | >>參與討論 |
| 作者: dengm 于 2005/6/17 7:22:00 發(fā)布:
bin to bcd |
|
| 8樓: | >>參與討論 |
| 作者: gbchang 于 2005/6/17 8:46:00 發(fā)布:
加上注釋... MOV R0,#rdbuf ; R0作為入口,bin首地址 MOV R1,#rdbuf+4 ; R1作為出口,bcd首地址 MOV R7,#04H ; bin共4byte,bcd也4byte夠用嗎? NIBTD: CLR EA MOV A,R0 MOV R5,A ; R5保存bin首地址 MOV A,R1 MOV R6,A ; R6保存bcd首地址 MOV A,R7 INC A MOV R3,A NBD0: MOV @R1,#00H INC R1 DJNZ R3,NBD0 ; bcd先置全部0 MOV A,R7 MOV B,#08H MUL AB MOV R3,A ; R3=32(4BYTE二進(jìn)制共32BIT) NBD4: MOV A,R5 MOV R0,A MOV A,R7 MOV R2,A CLR C NBD1: MOV A,@R0 ; 取出BIN RLC A MOV @R0,A INC R0 DJNZ R2,NBD1 ; 得到4BYTE中最高(左邊的)位,保存在C中 MOV A,R6 MOV R1,A MOV A,R7 MOV R2,A INC R2 NBD3: MOV A,@R1 ADDC A,@R1 ; 第一次循環(huán)將原BCD形式的數(shù)X2,再+上面得到的那個(gè)最高位(C) DA A ; BIN TO BCD,如果沒(méi)有這個(gè),就又回去了(BIN TO BIN?哈哈!) MOV @R1,A ; 寫(xiě)入BCD區(qū) INC R1 DJNZ R2,NBD3 ; 4BYTE DJNZ R3,NBD4 ; 32位完成 SETB EA RET |
|
| 9樓: | >>參與討論 |
| 作者: gbchang 于 2005/6/17 11:44:00 發(fā)布:
這個(gè)BIN2BCD是編譯器編譯出來(lái)的嗎? |
|
| 10樓: | >>參與討論 |
| 作者: li_bo123 于 2005/6/18 8:45:00 發(fā)布:
謝謝各位阿,不是編譯器編出來(lái)的。 |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |