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

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(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)教雙字節(jié)無符號(hào)數(shù)減法程序

作者:lh9865 欄目:單片機(jī)
請(qǐng)教雙字節(jié)無符號(hào)數(shù)減法程序
 我在做雙字節(jié)無符號(hào)數(shù)減法,減數(shù)是個(gè)固定值:7FFH,被減數(shù)為一組數(shù)據(jù),在減數(shù)的上下浮動(dòng),我想得到的差卻是一組無符號(hào)數(shù)的正數(shù),也就是說無論減的數(shù)據(jù)為正,為負(fù),得到的差最終要是無符號(hào)數(shù)正數(shù)
  我想我有些地方不是很明白,就是無符號(hào)數(shù)減法如果不夠減,得到的差會(huì)是一個(gè)什么樣的數(shù)呢,補(bǔ)碼?

這是我編寫的程序,可是老是顯示的結(jié)果不盡人意
               CLR    C
               MOV    A,R3
        JIAO1: CJNE   A,BZ1,JIAO00  ;先判斷低8位的大小,用大數(shù)減小數(shù)
       JIAO00: JC    JIAO000
                  
               MOV    A,r3
               SUBB   A,bz1
               setb   07h    ;如果是減數(shù)的低8位減被減數(shù)的低8位,就設(shè)置標(biāo)志位07H為1,作為借位
               JMP    JIAO10
      JIAO000: MOV    A,bz1
              
               SUBB   A,r3
               
       JIAO10: MOV    R3,A
              
               jnb    07h ,jiao99  ;如果有借位,就先把減數(shù)的高8位加一,然后在做大小判斷。
               inc    r2
               clr    c
       jiao99: MOV    A,R2
               CJNE   A,BZ0,JIAO100
      JIAO100: JC    JIAO101
              ; JNB   PAN0,JIAO110
              ; SETB   C
      JIAO110: MOV    A,R2
               SUBB   A,BZ0
               JMP    JIAO11       
      JIAO101:
               MOV    A,BZ0
               SUBB   A,R2
       JIAO11: MOV   R2,A  ;運(yùn)算結(jié)果存儲(chǔ)
               MOV   A,R3
               MOV   @R0,A
               INC   R0
               MOV   A,R2
               MOV   @R0,A
               INC   R0
               clr   07h
               
               RET
   請(qǐng)高手指點(diǎn)呢

2樓: >>參與討論
faiwong
何必那么麻煩!
不知你是要是要得到數(shù)據(jù)組的絕對(duì)值,如果是其實(shí)很簡(jiǎn)單。

3樓: >>參與討論
lh9865
就是絕對(duì)值
嘿嘿,就是絕對(duì)值,請(qǐng)問,該怎么做呢


4樓: >>參與討論
faiwong
先判斷數(shù)據(jù)的大小
    MOV   A,SHU_H
    CJNE  A,#07H,CHECK_1
    MOV   A,SHU_L
    CJNE  A,#0FF,SHU_JU<7FF(單字節(jié)不可能大于FF )
    SJMP  結(jié)果=0
CHECK_1:
     JNC  
SHU_JU>7FF;
      結(jié)果=數(shù)據(jù)-7FF     
SHU_JU<7FF:
      結(jié)果=7FF-數(shù)據(jù)


5樓: >>參與討論
lh9865
謝謝兄弟的幫忙
謝謝兄弟的幫忙,可是我想我的程序也是這種思想,但是編寫的當(dāng)中有些問題,顯示的數(shù)據(jù)時(shí)不正確的,所以我想看看有沒有標(biāo)準(zhǔn)的程序

6樓: >>參與討論
lichunxia
無符號(hào)雙字節(jié)減法
;**無符號(hào)雙字節(jié)減法,入口為R2,R3,R6,R7(R2,R3為被減數(shù),R6、R7為減數(shù);R2、R6為高字節(jié))出口為R4,R5(R4為高字節(jié))**********************

NSUB:  CLR C
       MOV A,R3
       SUBB A,R7
       MOV R5,A
       MOV A,R2
       SUBB A,R6
       MOV R4,A
       RET
      

7樓: >>參與討論
lh9865
這段程序我已經(jīng)看到了,試過了
 
8樓: >>參與討論
faiwong
試一下吧
;R2,R3輸入數(shù)據(jù)R2高位,結(jié)果在R4,R5,R4高位      
CHECK:
    MOV   A,R2
    CJNE  A,#07H,CHECK_1
    MOV   A,R3
    CJNE  A,#0FFH,CHECK_1_2;(單字節(jié)不可能大于FF )
    SJMP  CHECK_0
CHECK_1:
     JNC  CHECK_1_2
     CLR  C
     MOV  A,R3  ;數(shù)據(jù)>07FFH
     SUBB A,#0FFH
     MOV  R5,A
     MOV  A,R2
     SUBB A,#07H
     MOV  R5,A
     SJMP CHECK_END     
CHECK_1_2:
     CLR  C
     MOV  A,#0FFH ;數(shù)據(jù)<07FFH
     SUBB A,R3
     MOV  R5,A   
     MOV  A,#07H
     SUBB A,R2
     MOV  R4,A
     SJMP CHECK_END
CHECK_0:
     MOV  R4,#00H ;相等
     MOV  R5,#00H
CHECK_END:
     RET
     



9樓: >>參與討論
faiwong
剛才有兩次錯(cuò)誤,以下的已經(jīng)仿真通過.
;R2,R3輸入數(shù)據(jù)R2高位,結(jié)果在R4,R5,R4高位      
CHECK:
    MOV   A,R2
    CJNE  A,#07H,CHECK_1
    MOV   A,R3
    CJNE  A,#0FFH,CHECK_1_2;(單字節(jié)不可能大于FF )
    SJMP  CHECK_0
CHECK_1:
     JC   CHECK_1_2
     CLR  C
     MOV  A,R3  ;數(shù)據(jù)>07FFH
     SUBB A,#0FFH
     MOV  R5,A
     MOV  A,R2
     SUBB A,#07H
     MOV  R4,A
     SJMP CHECK_END     
CHECK_1_2:
     CLR  C
     MOV  A,#0FFH ;數(shù)據(jù)<07FFH
     SUBB A,R3
     MOV  R5,A   
     MOV  A,#07H
     SUBB A,R2
     MOV  R4,A
     SJMP CHECK_END
CHECK_0:
     MOV  R4,#00H ;相等
     MOV  R5,#00H
CHECK_END:
     RET  


10樓: >>參與討論
biansf2001
暈,你不會(huì)取反加1,然后相加呀,這樣多簡(jiǎn)單啊
 
11樓: >>參與討論
夏蟲
同意樓上得說法
 
12樓: >>參與討論
faiwong
取反加1,然后相加也不簡(jiǎn)單
取反加1,然后相加也簡(jiǎn)單不到哪里,等你雙字節(jié)加1加完,人家也已經(jīng)減完,何況你還要取反.

13樓: >>參與討論
dengm
re
;**無符號(hào)雙字節(jié)減法,入口為R2,R3,R6,R7(R2,R3為被減數(shù),R6、R7為減數(shù);R2、R6為高字節(jié))
出口為(絕對(duì)值)R4,R5(R4為高字節(jié))C為符號(hào) **********************

        CLR C
        MOV A, R3
        SUBB A, R7
        MOV R5, A
        MOV A, R2
        SUBB A, R6
        MOV R4, A
        JNC EXIT_1
          MOV A, R5
          CPL A
          ADDC A, #0
          MOV R5, A
          MOV A, R4
          CPL A
          ADDC A, #0
          MOV R4, A
          SETB C
EXIT_1:
        RET


14樓: >>參與討論
JIANWENWU
不錯(cuò),簡(jiǎn)單明了!
 
15樓: >>參與討論
yzy1102
失敗
 
16樓: >>參與討論
SupermanTm
照減嘛,負(fù)數(shù)是補(bǔ)碼,要變絕對(duì)值就取反加一嘛
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
關(guān)于Keil C的使用
液晶屏的并口不用的話,應(yīng)該怎么處理??
請(qǐng)問液晶(st7920)如何畫圖文并茂的圖畫
[原創(chuàng)]ST7920驅(qū)動(dòng),歡迎大家批磚!
求助,數(shù)碼管數(shù)字顯示不全
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


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