在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

            EM78系列單片機的數(shù)值轉換子程序

            作者: 時間:2011-05-17 來源:網(wǎng)絡 收藏

            本文引用地址:http://www.biyoush.com/article/172786.htm

            一 二進制數(shù)為ASCⅡ碼
            將一個字節(jié)的二進制數(shù)為兩位16進制數(shù)的ASCⅡ碼
            main: mov a,@0x9f ;二進制數(shù)為0x9f
            mov 0x30,a ;二進制數(shù)存入0x30
            mov a,@0x02
            mov 0x10,a ;0x10中存放轉換次數(shù)
            mov a,@0x31
            mov 0x04,a ;0x04中為轉換后數(shù)據(jù)存放地址
            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)次數(shù)減1,為0則返回
            jmp B1 ;不為0繼續(xù)轉換
            self: jmp self
            eop

            二 多字節(jié)二進制加法
            0X20,0X21中的二進制無符號數(shù)與0X22,0X23中的二進制無符號數(shù)相加,結果放在0X24,0X25,0X26中,低地址中放低字節(jié)數(shù)據(jù)。
            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中的二進制無符號數(shù)減0x22,0x23中的二進制無符號數(shù),
            低地址中放低字節(jié)數(shù)據(jù)。假設被減數(shù)大于減數(shù)。
            注意:(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單元數(shù)據(jù)乘以0X21單元數(shù)據(jù),結果放在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內(nèi)容相加
            add 0x22,a
            jbc 0x03,0
            inc 0x23 ;有進位0x23加1
            djz 0x21 ;0x21中次數(shù)減到0則結束
            jmp mul1 ;沒減到0則繼續(xù)
            self: jmp self
            eop
            五 二進制除法運算
            多字節(jié)二進制除法
            被除數(shù)為3個字節(jié),在0x20、0x21、0x22單元中,0x22.7為最高位,0x20.0為最低位。
            除數(shù)為2個字節(jié),在0x30、0x31中。
            算法:沒有除法指令,而且本例中除法為多字節(jié)除法,可采用如下算法。
            將被除數(shù)擴充一個字節(jié)0X23,0X23清0。被除數(shù)左移1位,0X23、0X22中數(shù)據(jù)減去0X31、0X30中數(shù)據(jù),夠減則減且0X20.0置1,減出結果存入0X23、0X22;不夠減則0X23、0X22保持不變,0X20.0清0。然后被除數(shù)再左移1位,重復上述過程。共循環(huán)16次,最后0X23、0X22中得相減余數(shù),0X21、0X20中得商。注意,若被除數(shù)左移后C標志為1,則不比較0X23、0X22與0X31、0X30數(shù)據(jù)大小關系而直接相減。
            main: mov a,@0x55 ;被除數(shù)賦值
            mov 0x20,a
            mov 0x21,a
            mov 0x22,a
            mov a,@0x0 ;被除數(shù)擴充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)完成則結束
            jmp again ;未完成則繼續(xù)
            self: jmp self
            rt_sub:
            bc 0x03,0 ;c標志清0
            rlc 0x20 ;被除數(shù)左移1位
            rlc 0x21
            rlc 0x22
            rlc 0x23
            jbc 0x03,0
            jmp rt3 ;c標志為1則直接相減
            mov a,0x23 ;c標志為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é)相減


            上一頁 1 2 下一頁

            評論


            相關推薦

            技術專區(qū)

            關閉