音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(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ī)
現(xiàn)在51系列中處理這個(gè)運(yùn)算式子: A*B/C
其中A,B,C都是三字節(jié)二進(jìn)制無符號(hào)整數(shù),
請(qǐng)教各位如何用匯編實(shí)現(xiàn)這個(gè)運(yùn)算???
2樓: >>參與討論
lwq
乘法好做,除法通過移位來做。
3樓: >>參與討論
fly_pcb
#define  uLONG  unsigned  LONG
void  TEST(void)
{  uLONG  x,y,z,x1;
   x1=x*y/z;

}
4樓: >>參與討論
VICKYGREEN
用C來編的話。。就是這么簡(jiǎn)單嗎`/1???????
5樓: >>參與討論
chinttgq
yes
6樓: >>參與討論
VICKYGREEN
用C可以剩了那么多是時(shí)間跟空間啊。。。。。。。!
7樓: >>參與討論
aibxyz
做計(jì)算C不錯(cuò)的。
8樓: >>參與討論
stonelei
謝謝各位大俠的幫忙。

用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)的新手
有現(xiàn)成的子程序調(diào)用啊?纯础秵纹瑱C(jī)應(yīng)用文集》吧。
10樓: >>參與討論
lzj_987306
麻煩你COPY過來好嗎,我沒有那書。但我想知道。
11樓: >>參與討論
永遠(yuǎn)的新手
好的。這是個(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)的新手
好的。這是個(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)的新手
比如你要把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)的新手
除法我再找找,很久以前用過,不知道丟哪兒了。
15樓: >>參與討論
永遠(yuǎn)的新手
這是除法子程序,入口、字節(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
謝謝“永遠(yuǎn)的新手 ”大俠和各位大俠的熱心幫忙,
小弟感激不盡。
現(xiàn)在程序已經(jīng)大有眉目了。
支持咱們的論壇。!
17樓: >>參與討論
stonelei
請(qǐng)問哪里有《單片機(jī)應(yīng)用文集》?
18樓: >>參與討論
永遠(yuǎn)的新手
哦,電子書店都有賣的,主編何立民,共1-7冊(cè)
19樓: >>參與討論
pocker511
能不能大概解釋一下這兩個(gè)程序阿 實(shí)在看不懂 謝。。。
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
[求助]怎么編寫實(shí)現(xiàn)這功能的程序!
電路中的基本名詞結(jié)實(shí)(電流 電壓)
00-59秒計(jì)時(shí)器(用軟件延時(shí))
做電子類畢業(yè)論文和設(shè)計(jì)
誰(shuí)能幫我畫下PCB圖啊,萬(wàn)分感謝
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)