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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > EM78系列單片機(jī)的數(shù)值轉(zhuǎn)換子程序簡介

          EM78系列單片機(jī)的數(shù)值轉(zhuǎn)換子程序簡介

          作者: 時間:2012-08-12 來源:網(wǎng)絡(luò) 收藏


          mov 0x20,a
          mov 0x21,a
          mov 0x22,a
          mov a,@0x0 ;被除數(shù)擴(kuò)充1字節(jié)并清0
          mov 0x23,a
          mov a,@0x12 ;除數(shù)賦值
          mov 0x30,a
          mov 0x31,a
          mov a,@0x10 ;循環(huán)次數(shù)為16
          mov 0x32,a
          again: call rt_sub ;調(diào)移位除法子程
          djz 0x32 ;16次循環(huán)完成則結(jié)束
          jmp again ;未完成則繼續(xù)
          self: jmp self
          rt_sub:
          bc 0x03,0 ;c標(biāo)志清0
          rlc 0x20 ;被除數(shù)左移1位
          rlc 0x21
          rlc 0x22
          rlc 0x23
          jbc 0x03,0
          jmp rt3 ;c標(biāo)志為1則直接相減
          mov a,0x23 ;c標(biāo)志為0則先比較大小
          mov 0x25,a
          mov a,0x22
          mov 0x24,a
          mov a,0x31 ;先比較高位
          sub 0x25,a
          jbc 0x03,2
          jmp rt1 ;高位相等跳rt1比較低位
          jmp rt2 ;高位不等跳rt2
          rt1: mov a,0x30 ;比較低位
          sub 0x24,a
          jbc 0x03,2
          jmp rt3 ;低位也相等則跳rt3,相減,上1
          rt2: jbs 0x03,0
          ret ;減數(shù)大則返回,減數(shù)小則相減,上1
          rt3: bs 0x20,0 ;上1
          call sub_2b ;調(diào)2字節(jié)減法子程
          ret
          sub_2b:
          mov a,0x31 ;高字節(jié)相減
          sub 0x23,a
          mov a,0x30 ;低字節(jié)相減
          sub 0x22,a
          jbc 0x03,2
          ret ;低字節(jié)相等,無借位,返回
          jbc 0x03,0
          ret ;無借位,返回
          dec 0x23 ;低字節(jié)相減有借位,高字節(jié)結(jié)果減1
          ret
          eop
          六 BCD數(shù)為二進(jìn)制數(shù)
          兩字節(jié)壓縮BCD碼為兩字節(jié)二進(jìn)制數(shù)。算法如下:
          BCD碼abcd=1000a+100b+10c+d=10{10[10a+b]+c}+d,將各位BCD碼分離出之后,即可根據(jù)此式為二進(jìn)制數(shù)。涉及到乘法運算和多字節(jié)加法運算。
          0X20,0X21中為BCD碼,0X21高4位為最高位。轉(zhuǎn)換結(jié)果放在0X30,0X31中。
          main: mov a,@0x79
          mov 0x20,a
          mov a,@0x54
          mov 0x21,a ;賦值
          mov a,0x20
          and a,@0x0f
          mov 0x22,a
          swapa 0x20
          and a,@0x0f
          mov 0x23,a
          mov a,0x21
          and a,@0x0f
          mov 0x24,a
          swapa 0x21
          and a,@0x0f
          mov 0x25,a ;BCD碼展開后存于0X22,0X23,0X24,0X25
          mov a,0x25, ;0X25為最高位
          mov 0x30,a
          mov a,@0x0 ;多字節(jié)加法高位為0
          mov 0x31,a
          mov a,0x24
          mov 0x32,a
          call a_b ;調(diào)子程
          mov a,0x23
          mov 0x32,a
          call a_b
          mov a,0x22
          mov 0x32,a
          call a_b
          self: jmp self
          a_b:
          mov a,@0x0 ;0X34,0X35存儲中間結(jié)果
          mov 0x34,a
          mov 0x35,a
          mov a,@0x0a ;實現(xiàn)乘10
          mov 0x33,a
          a1: mov a,0x35 ;兩字節(jié)二進(jìn)制加法,在本例中高字節(jié)肯定無進(jìn)位
          add a,0x31
          mov 0x35,a
          mov a,0x34
          add a,0x30
          mov 0x34,a
          jbc 0x03,0
          inc 0x35
          djz 0x33
          jmp a1
          mov a,0x32
          add 0x34,a


          評論


          相關(guān)推薦

          技術(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); })();