色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > EM78系列單片機的數值轉換子程序簡介

          EM78系列單片機的數值轉換子程序簡介

          作者: 時間:2012-08-12 來源:網絡 收藏

          一 二進制數為ASCⅡ碼
          將一個字節(jié)的二進制數為兩位16進制數的ASCⅡ碼
          main: mov a,@0x9f ;二進制數為0x9f
          mov 0x30,a ;二進制數存入0x30
          mov a,@0x02
          mov 0x10,a ;0x10中存放次數
          mov a,@0x31
          mov 0x04,a ;0x04中為轉換后數據存放地址
          mov a,0x30
          B1: and a,@0x0f ;取a低4位
          mov 0x00,a
          sub a,@0x09 ;低4位大于9跳往B2
          jbs 0x03,0
          jmp B2
          mov a,0x00 ;低4位不大于9則加0x30
          add a,@0x30
          mov 0x00,a ;將ASCⅡ碼存入0X04所指單元
          jmp B3
          B2: mov a,0x00 ;大于9則加0X37
          add a,@0x37
          mov 0x00,a
          B3: swapa 0x30 ;將0X30高4位換入A低4位
          inc 0x04 ;存儲地址加1
          djz 0x10 ;循環(huán)次數減1,為0則返回
          jmp B1 ;不為0繼續(xù)轉換
          self: jmp self
          eop

          本文引用地址:http://cafeforensic.com/article/171052.htm

          二 多字節(jié)二進制加法
          0X20,0X21中的二進制無符號數與0X22,0X23中的二進制無符號數相加,結果放在0X24,0X25,0X26中,低地址中放低字節(jié)數據。
          Main: mov a,@0x78 ;賦值
          mov 0x20,a
          mov a,@0xc6
          mov 0x21,a
          mov a,@0x86
          mov 0x22,a
          mov a,@0x9e
          mov 0x23,a
          mov a,@0x0 ;0x26單元清0
          mov 0x26,a
          mov a,0x21
          add a,0x23
          mov 0x25,a ;高字節(jié)相加,結果送0x25
          jbc 0x03,0
          inc 0x26 ; 有進位則0x26加1
          mov a,0x20
          add a,0x22
          mov 0x24,a ;低字節(jié)相加,結果送0x24
          jbs 0x03,0
          jmp self ;無進位跳self
          inc 0x25 ;有進位0x25加1
          jbc 0x03,0
          inc 0x26 ; 有進位0x26加1
          self: jmp self
          eop
          三 多字節(jié)二進制減法
          0x20,0x21中的二進制無符號數減0x22,0x23中的二進制無符號數,
          低地址中放低字節(jié)數據。假設被減數大于減數。
          注意:(1)sub指令減出結果為正時,c標志置1。
          (2)sub指令減出結果為0時,c標志也置1。
          即,sub指令執(zhí)行后,c標志清0表示結果為負。
          main: mov a,@0x67 ;賦值
          mov 0x20,a
          mov a,@0xff
          mov 0x21,a
          mov a,@0xe8
          mov 0x22,a
          mov a,@0x44
          mov 0x23,a ; 高字節(jié)相減
          sub a,0x21
          mov 0x25,a ;結果存0x25
          mov a,0x22 ;低字節(jié)相減
          sub a,0x20
          mov 0x24,a
          jbs 0x03,0
          dec 0x25 ;有借位則0x25減1
          self: jmp self
          eop
          四 二進制乘法運算
          沒有乘法指令,所以乘法運算需要轉化為加法運算。0X20單元數據乘以0X21單元數據,結果放在0X22,0X23中。
          main: mov a,@0x0 ;0x22,0x23單元清0
          mov 0x22,a
          mov 0x23,a
          mov a,@0x3f ;賦值
          mov 0x20,a
          mov a,@0x22
          mov 0x21,a
          mul1: mov a,0x20 ;0x20與0x22內容相加
          add 0x22,a
          jbc 0x03,0
          inc 0x23 ;有進位0x23加1
          djz 0x21 ;0x21中次數減到0則結束
          jmp mul1 ;沒減到0則繼續(xù)
          self: jmp self
          eop
          五 二進制除法運算
          多字節(jié)二進制除法
          被除數為3個字節(jié),在0x20、0x21、0x22單元中,0x22.7為最高位,0x20.0為最低位。
          除數為2個字節(jié),在0x30、0x31中。
          算法:沒有除法指令,而且本例中除法為多字節(jié)除法,可采用如下算法。
          將被除數擴充一個字節(jié)0X23,0X23清0。被除數左移1位,0X23、0X22中數據減去0X31、0X30中數據,夠減則減且0X20.0置1,減出結果存入0X23、0X22;不夠減則0X23、0X22保持不變,0X20.0清0。然后被除數再左移1位,重復上述過程。共循環(huán)16次,最后0X23、0X22中得相減余數,0X21、0X20中得商。注意,若被除數左移后C標志為1,則不比較0X23、0X22與0X31、0X30數據大小關系而直接相減。
          main: mov a,@0x55 ;被除數賦值


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉