新聞中心

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

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

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

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

        本文引用地址:http://www.104case.com/article/171052.htm

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


        上一頁(yè) 1 2 3 下一頁(yè)

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 元江| 钟山县| 永康市| 沙雅县| 华亭县| 招远市| 五峰| 尤溪县| 宜宾市| 陈巴尔虎旗| 密山市| 章丘市| 揭西县| 商水县| 全州县| 崇阳县| 吴川市| 高安市| 乌拉特后旗| 奉化市| 白沙| 潮州市| 杨浦区| 古交市| 灵山县| 磐安县| 白沙| 肥城市| 中西区| 清新县| 沧州市| 文登市| 个旧市| 张北县| 溧水县| 永平县| 博湖县| 乡宁县| 西乌珠穆沁旗| 拉孜县| 武安市|