|
|||||||||||
| 技術(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 |
大蝦請(qǐng)指教: ------請(qǐng)教51系列中多字節(jié)的算術(shù)運(yùn)算問題... |
| 作者:stonelei 欄目:單片機(jī) |
其中A,B,C都是三字節(jié)二進(jìn)制無符號(hào)整數(shù), 請(qǐng)教各位如何用匯編實(shí)現(xiàn)這個(gè)運(yùn)算??? |
| 2樓: | >>參與討論 |
| 作者: lwq 于 2003/7/25 18:39:00 發(fā)布:
乘法好做,除法通過移位來做。 |
|
| 3樓: | >>參與討論 |
| 作者: fly_pcb 于 2003/7/25 21:05:00 發(fā)布:
#define uLONG unsigned LONG void TEST(void) { uLONG x,y,z,x1; x1=x*y/z; } |
|
| 4樓: | >>參與討論 |
| 作者: VICKYGREEN 于 2003/7/25 21:18:00 發(fā)布:
用C來編的話。。就是這么簡(jiǎn)單嗎`/1??????? |
|
| 5樓: | >>參與討論 |
| 作者: chinttgq 于 2003/7/25 21:38:00 發(fā)布:
yes |
|
| 6樓: | >>參與討論 |
| 作者: VICKYGREEN 于 2003/7/25 22:39:00 發(fā)布:
用C可以剩了那么多是時(shí)間跟空間啊。。。。。。。! |
|
| 7樓: | >>參與討論 |
| 作者: aibxyz 于 2003/7/25 23:38:00 發(fā)布:
做計(jì)算C不錯(cuò)的。 |
|
| 8樓: | >>參與討論 |
| 作者: stonelei 于 2003/7/27 19:56:00 發(fā)布:
謝謝各位大俠的幫忙。 用C來寫是很簡(jiǎn)單,但是現(xiàn)在條件只能用匯編來寫。 我的思路是: 1。先把三字節(jié)二進(jìn)制整數(shù)轉(zhuǎn)換成三字節(jié)浮點(diǎn)數(shù), 2。調(diào)用浮點(diǎn)數(shù)計(jì)算子程序。 3。運(yùn)算結(jié)果轉(zhuǎn)換成二進(jìn)制整數(shù)。 不知道各位大俠認(rèn)為如何?? |
|
| 9樓: | >>參與討論 |
| 作者: 永遠(yuǎn)的新手 于 2003/7/28 9:56:00 發(fā)布:
有現(xiàn)成的子程序調(diào)用啊?纯础秵纹瑱C(jī)應(yīng)用文集》吧。 |
|
| 10樓: | >>參與討論 |
| 作者: lzj_987306 于 2003/7/28 10:48:00 發(fā)布:
麻煩你COPY過來好嗎,我沒有那書。但我想知道。 |
|
| 11樓: | >>參與討論 |
| 作者: 永遠(yuǎn)的新手 于 2003/7/28 11:00:00 發(fā)布:
好的。這是個(gè)乘法子程序。入口:乘數(shù)R0,被乘數(shù)R1,字節(jié)數(shù)R7,結(jié)果在R0 MULN: LCALL N2N ;多字節(jié)十六進(jìn)制乘法 RLC A RLC A MOV R3,A MULN1: MOV A,R5 MOV R0,A CLR C LCALL RLCN JNC MULN2 LCALL ADDN MULN2: DJNZ R3,MULN1 N1N: MOV A,R1 ADD A,R7 MOV R0,A MOV A,R7 CLR C RRC A MOV R7,A MOV R2,A ADD A,R1 MOV R1,A MULN3: DEC R0 DEC R1 MOV A,@R0 MOV @R1,A DJNZ R2,MULN3 MOV A,R5 MOV R0,A RET ; RLCN: MOV A,R7 ;多字節(jié)二進(jìn)制無符號(hào)數(shù)左移一位 RLCN1: MOV R2,A PUSH PSW ADD A,R0 MOV R0,A POP PSW RLCN2: DEC R0 MOV A,@R0 RLC A MOV @R0,A DJNZ R2,RLCN2 RET ; N2N: MOV A,R7 MOV R2,A ADD A,R0 MOV R6,A MOV A,R0 MOV R5,A MOV A,R1 MOV R4,A ADD A,R7 MOV R0,A N2N1: MOV A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R2,N2N1 MOV A,R6 MOV R0,A LCALL CLRN MOV A,R4 MOV R0,A LCALL CLRN MOV A,R4 MOV R1,A MOV A,R5 MOV R0,A MOV A,R7 ADD A,R7 MOV R7,A RET ; ADDN: MOV A,R7 MOV R2,A ADD A,R0 MOV R0,A MOV A,R7 ADD A,R1 MOV R1,A CLR C ADN1: DEC R0 DEC R1 MOV A,@R1 ADDC A,@R0 MOV @R0,A DJNZ R2,ADN1 RET ; CLRN: MOV A,R7 MOV R2,A ADD A,R0 MOV R0,A CLR A CLRN1: DEC R0 MOV @R0,A DJNZ R2,CLRN1 RET ; |
|
| 12樓: | >>參與討論 |
| 作者: 永遠(yuǎn)的新手 于 2003/7/28 11:01:00 發(fā)布:
好的。這是個(gè)乘法子程序。入口:乘數(shù)R0,被乘數(shù)R1,字節(jié)數(shù)R7,結(jié)果在R0 MULN: LCALL N2N ;多字節(jié)十六進(jìn)制乘法 RLC A RLC A MOV R3,A MULN1: MOV A,R5 MOV R0,A CLR C LCALL RLCN JNC MULN2 LCALL ADDN MULN2: DJNZ R3,MULN1 N1N: MOV A,R1 ADD A,R7 MOV R0,A MOV A,R7 CLR C RRC A MOV R7,A MOV R2,A ADD A,R1 MOV R1,A MULN3: DEC R0 DEC R1 MOV A,@R0 MOV @R1,A DJNZ R2,MULN3 MOV A,R5 MOV R0,A RET ; RLCN: MOV A,R7 ;多字節(jié)二進(jìn)制無符號(hào)數(shù)左移一位 RLCN1: MOV R2,A PUSH PSW ADD A,R0 MOV R0,A POP PSW RLCN2: DEC R0 MOV A,@R0 RLC A MOV @R0,A DJNZ R2,RLCN2 RET ; N2N: MOV A,R7 MOV R2,A ADD A,R0 MOV R6,A MOV A,R0 MOV R5,A MOV A,R1 MOV R4,A ADD A,R7 MOV R0,A N2N1: MOV A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R2,N2N1 MOV A,R6 MOV R0,A LCALL CLRN MOV A,R4 MOV R0,A LCALL CLRN MOV A,R4 MOV R1,A MOV A,R5 MOV R0,A MOV A,R7 ADD A,R7 MOV R7,A RET ; ADDN: MOV A,R7 MOV R2,A ADD A,R0 MOV R0,A MOV A,R7 ADD A,R1 MOV R1,A CLR C ADN1: DEC R0 DEC R1 MOV A,@R1 ADDC A,@R0 MOV @R0,A DJNZ R2,ADN1 RET ; CLRN: MOV A,R7 MOV R2,A ADD A,R0 MOV R0,A CLR A CLRN1: DEC R0 MOV @R0,A DJNZ R2,CLRN1 RET ; |
|
| 13樓: | >>參與討論 |
| 作者: 永遠(yuǎn)的新手 于 2003/7/28 11:14:00 發(fā)布:
比如你要把12345678H這個(gè)十六進(jìn)制數(shù)乘以87654321H,那么你可以這樣調(diào)用: MOV R0,#30H ;被乘數(shù)區(qū) MOV R1,#40H ;乘數(shù)區(qū) MOV R7,#04H ;字節(jié)數(shù) MOV 30H,#12H ;填充被乘數(shù) MOV 31H,#34H MOV 32H,#56H MOV 33H,#78H MOV 40H,#87H ;填充乘數(shù) MOV 41H,#65H MOV 42H,#43H MOV 43H,#21H CALL MULN ;調(diào)用 這時(shí)的結(jié)果在R0所指的數(shù)據(jù)區(qū),即30H-37H共八個(gè)字節(jié)。當(dāng)然你是3字節(jié)乘法的話,把R7改成03H就可以了,結(jié)果為6個(gè)字節(jié),高字節(jié)在前,低字節(jié)在后。一定要注意把R0所指的區(qū)留出存放結(jié)果的空間。比如3字節(jié)乘法,你要留出6個(gè)字節(jié)空間,5字節(jié)乘法要留出10個(gè)字節(jié)的空間。反正很靈活的。想做多少字節(jié)乘法都可以。 |
|
| 14樓: | >>參與討論 |
| 作者: 永遠(yuǎn)的新手 于 2003/7/28 11:16:00 發(fā)布:
除法我再找找,很久以前用過,不知道丟哪兒了。 |
|
| 15樓: | >>參與討論 |
| 作者: 永遠(yuǎn)的新手 于 2003/7/28 11:31:00 發(fā)布:
這是除法子程序,入口、字節(jié)數(shù)、出口和乘法一樣,不過有個(gè)限制:只限于被除數(shù)小于除數(shù),結(jié)果為純小數(shù)。不知老兄是否適用。 DIVN: LCALL DIV0 ;多字節(jié)16進(jìn)制除法子程序 JC DIVN1 SETB OV RET DIVN1: MOV A, R0 MOV R4, A ADD A, R7 MOV R5, A MOV A, R7 MOV B, #08H MUL AB MOV R3, A DIVN4: LCALL DIVN8 JC DIVN5 LCALL ADDN CLR C DIVN5: MOV A, R5 MOV R0, A LCALL RLCN DJNZ R3,DIVN4 LCALL DIVN8 JNC DIVN6 MOV A, R5 MOV R0, A LCALL INCN DIVN6: MOV A, R1 PUSH ACC MOV A, R7 MOV R2, A ADD A, R4 MOV R0, A ADD A, R7 MOV R1, A DIVN7: DEC R0 DEC R1 MOV A, @R1 MOV @R0, A DJNZ R2,DIVN7 POP ACC MOV R1, A CLR OV RET ; DIVN8: MOV A,R4 MOV R0,A CLR C LCALL RLCN MOV 2FH.4,C LCALL SUBN ANL C,/2FH.4 CPL C RET ; DIV0: MOV A,R7 MOV R2,A ADD A,R1 MOV R1,A MOV A,R7 ADD A,R0 MOV R0,A CLR C DIV01: DEC R0 DEC R1 MOV A,@R0 SUBB A,@R1 DJNZ R2,DIV01 RET ; ADDN: MOV A,R7 MOV R2,A ADD A,R0 MOV R0,A MOV A,R7 ADD A,R1 MOV R1,A CLR C ADN1: DEC R0 DEC R1 MOV A,@R1 ADDC A,@R0 MOV @R0,A DJNZ R2,ADN1 RET ; INCN: MOV A,R7 INCN1: MOV R2,A ADD A,R0 MOV R0,A SETB C INCN2: DEC R0 CLR A ADDC A,@R0 MOV @R0,A DJNZ R2,INCN2 RET ; RLCN: MOV A,R7 RLCN1: MOV R2,A PUSH PSW ADD A,R0 MOV R0,A POP PSW RLCN2: DEC R0 MOV A,@R0 RLC A MOV @R0,A DJNZ R2,RLCN2 RET ; SUBN: MOV A,R7 MOV R2,A ADD A,R0 MOV R0,A MOV A,R7 ADD A,R1 MOV R1,A CLR C SUB1: DEC R0 DEC R1 MOV A,@R0 SUBB A,@R1 MOV @R0,A DJNZ R2,SUB1 RET |
|
| 16樓: | >>參與討論 |
| 作者: stonelei 于 2003/7/28 15:41:00 發(fā)布:
謝謝“永遠(yuǎn)的新手 ”大俠和各位大俠的熱心幫忙, 小弟感激不盡。 現(xiàn)在程序已經(jīng)大有眉目了。 支持咱們的論壇。! |
|
| 17樓: | >>參與討論 |
| 作者: stonelei 于 2003/7/30 9:13:00 發(fā)布:
請(qǐng)問哪里有《單片機(jī)應(yīng)用文集》? |
|
| 18樓: | >>參與討論 |
| 作者: 永遠(yuǎn)的新手 于 2003/7/30 9:43:00 發(fā)布:
哦,電子書店都有賣的,主編何立民,共1-7冊(cè) |
|
| 19樓: | >>參與討論 |
| 作者: pocker511 于 2007/5/13 22:32:48 發(fā)布:
能不能大概解釋一下這兩個(gè)程序阿 實(shí)在看不懂 謝。。。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |