<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機(jī) 雙字節(jié)除法子程序

          單片機(jī) 雙字節(jié)除法子程序

          作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
          8位MCU實現(xiàn)雙字節(jié)除法子程序

          51單片機(jī)只是8位的,但有時候需要實現(xiàn)雙字節(jié)除法,里面的指令只支持8位。
          想來想去,只好用減法來實現(xiàn)了。下面這個子程序是雙字節(jié)除以雙字節(jié),商、余數(shù)結(jié)果都是雙字節(jié)保存,可能有點消耗資源,但這樣可以整合在一塊。
          ;****************************************
          ;函數(shù)名稱:Div2Byte
          ;功能描述:無符號數(shù)雙字節(jié)除法
          ;傳入?yún)?shù):R0R1被除數(shù) R2R3除數(shù)
          ;返回數(shù)據(jù):R4R5商 R6R7余數(shù)
          ;其他說明:比如雙字節(jié)數(shù)R0R1,R0高字節(jié) R1低字節(jié)
          ;****************************************
          Div2Byte:
          mov R4,#0
          mov R5,#0 ;商賦初值零
          mov A,R0
          mov R6,A
          mov A,R1
          mov R7,A ;余數(shù)賦初值,保證商為零時余數(shù)正常
          Div2Byte_1:
          mov A,R1
          clr c
          subb A,R3 ;低字節(jié)相減
          mov R1,A
          mov A,R0
          subb A,R2 ;高位相減
          mov R0,A
          jc Div2Byte_3 ;如果高字節(jié)都需要借位則退出循環(huán)
          clr c
          mov A,R5;為什么這里不直接使用INC R5????????
          add A,#1
          mov R5,A
          jnc Div2Byte_2
          inc R4 ;商加一
          Div2Byte_2:
          mov A,R1
          mov R7,A
          mov A,R0
          mov R6,A ;更新余數(shù)
          LJMP Div2Byte_1
          Div2Byte_3:
          RET
          使用示范:
          16進(jìn)制雙字節(jié)數(shù)字 05D2H 除以 0105H,商是0005H,余數(shù)是00D2H
          mov R0,#5H
          mov R1,#0D2H
          mov R2,#1H
          mov R3,#5H
          lcall Div2Byte
          則結(jié)果是 R4:00H R5:05H R6:0 R7:D2H


          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();