EM78系列單片機(jī)的一些關(guān)于數(shù)值轉(zhuǎn)換的子程序_第1頁(yè)
EM78系列單片機(jī)的一些關(guān)于數(shù)值轉(zhuǎn)換的子程序_第2頁(yè)
EM78系列單片機(jī)的一些關(guān)于數(shù)值轉(zhuǎn)換的子程序_第3頁(yè)
EM78系列單片機(jī)的一些關(guān)于數(shù)值轉(zhuǎn)換的子程序_第4頁(yè)
EM78系列單片機(jī)的一些關(guān)于數(shù)值轉(zhuǎn)換的子程序_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、EM78系列單片機(jī)的一些關(guān)于數(shù)值轉(zhuǎn)換的子程序一 二進(jìn)制數(shù)轉(zhuǎn)換為ASC碼將一個(gè)字節(jié)的二進(jìn)制數(shù)轉(zhuǎn)換為兩位16進(jìn)制數(shù)的ASC碼main: mov a,0x9f ;二進(jìn)制數(shù)為0x9fmov 0x30,a ;二進(jìn)制數(shù)存入0x30mov a,0x02mov 0x10,a ;0x10中存放轉(zhuǎn)換次數(shù)mov a,0x31mov 0x04,a ;0x04中為轉(zhuǎn)換后數(shù)據(jù)存放地址mov a,0x30B1: and a,0x0f ;取a低4位mov 0x00,asub a,0x09 ;低4位大于9跳往B2jbs 0x03,0jmp B2mov a,0x00 ;低4位不大于9則加0x30add a,0x30mov 0x0

2、0,a ;將ASC碼存入0X04所指單元jmp B3B2: mov a,0x00 ;大于9則加0X37add a,0x37mov 0x00,aB3: swapa 0x30 ;將0X30高4位換入A低4位inc 0x04 ;存儲(chǔ)地址加1djz 0x10 ;循環(huán)次數(shù)減1,為0則返回jmp B1 ;不為0繼續(xù)轉(zhuǎn)換 self: jmp selfeop二 多字節(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,amov a,0xc6mov 0x2

3、1,amov a,0x86mov 0x22,amov a,0x9emov 0x23,amov a,0x0 ;0x26單元清0mov 0x26,amov a,0x21add a,0x23mov 0x25,a ;高字節(jié)相加,結(jié)果送0x25jbc 0x03,0inc 0x26 ; 有進(jìn)位則0x26加1mov a,0x20add a,0x22mov 0x24,a ;低字節(jié)相加,結(jié)果送0x24jbs 0x03,0jmp self ;無(wú)進(jìn)位跳selfinc 0x25 ;有進(jìn)位0x25加1jbc 0x03,0inc 0x26 ; 有進(jìn)位0x26加1self: jmp selfeop三 多字節(jié)二進(jìn)制減法0x2

4、0,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,amov a,0xffmov 0x21,amov a,0xe8mov 0x22,amov a,0x44mov 0x23,a ; 高字節(jié)相減sub a,0x21mov 0x25,a ;結(jié)果存0x25mov a,0x22 ;低字節(jié)相減sub a,0x20mov 0x24,ajbs 0x03

5、,0dec 0x25 ;有借位則0x25減1self: jmp selfeop四 二進(jìn)制乘法運(yùn)算EM78單片機(jī)沒(méi)有乘法指令,所以乘法運(yùn)算需要轉(zhuǎn)化為加法運(yùn)算。0X20單元數(shù)據(jù)乘以0X21單元數(shù)據(jù),結(jié)果放在0X22,0X23中。main: mov a,0x0 ;0x22,0x23單元清0mov 0x22,amov 0x23,amov a,0x3f ;賦值mov 0x20,amov a,0x22mov 0x21,amul1: mov a,0x20 ;0x20與0x22內(nèi)容相加add 0x22,ajbc 0x03,0inc 0x23 ;有進(jìn)位0x23加1djz 0x21 ;0x21中次數(shù)減到0則結(jié)束j

6、mp mul1 ;沒(méi)減到0則繼續(xù)self: jmp selfeop五 二進(jìn)制除法運(yùn)算多字節(jié)二進(jìn)制除法被除數(shù)為3個(gè)字節(jié),在0x20、0x21、0x22單元中,0x22.7為最高位,0x20.0為最低位。除數(shù)為2個(gè)字節(jié),在0x30、0x31中。算法:EM78單片機(jī)沒(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次,最后

7、0X23、0X22中得相減余數(shù),0X21、0X20中得商。注意,若被除數(shù)左移后C標(biāo)志為1,則不比較0X23、0X22與0X31、0X30數(shù)據(jù)大小關(guān)系而直接相減。main: mov a,0x55 ;被除數(shù)賦值mov 0x20,amov 0x21,amov 0x22,amov a,0x0 ;被除數(shù)擴(kuò)充1字節(jié)并清0mov 0x23,amov a,0x12 ;除數(shù)賦值mov 0x30,amov 0x31,amov a,0x10 ;循環(huán)次數(shù)為16mov 0x32,aagain: call rt_sub ;調(diào)移位除法子程djz 0x32 ;16次循環(huán)完成則結(jié)束jmp again ;未完成則繼續(xù)self:

8、jmp selfrt_sub:bc 0x03,0 ;c標(biāo)志清0rlc 0x20 ;被除數(shù)左移1位rlc 0x21rlc 0x22rlc 0x23jbc 0x03,0jmp rt3 ;c標(biāo)志為1則直接相減mov a,0x23 ;c標(biāo)志為0則先比較大小mov 0x25,amov a,0x22mov 0x24,amov a,0x31 ;先比較高位sub 0x25,ajbc 0x03,2jmp rt1 ;高位相等跳rt1比較低位jmp rt2 ;高位不等跳rt2rt1: mov a,0x30 ;比較低位sub 0x24,ajbc 0x03,2jmp rt3 ;低位也相等則跳rt3,相減,上1rt2:

9、jbs 0x03,0ret ;減數(shù)大則返回,減數(shù)小則相減,上1rt3: bs 0x20,0 ;上1call sub_2b ;調(diào)2字節(jié)減法子程retsub_2b:mov a,0x31 ;高字節(jié)相減sub 0x23,amov a,0x30 ;低字節(jié)相減sub 0x22,ajbc 0x03,2ret ;低字節(jié)相等,無(wú)借位,返回jbc 0x03,0ret ;無(wú)借位,返回dec 0x23 ;低字節(jié)相減有借位,高字節(jié)結(jié)果減1reteop六 BCD數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)兩字節(jié)壓縮BCD碼轉(zhuǎn)換為兩字節(jié)二進(jìn)制數(shù)。算法如下:BCD碼abcd=1000a+100b+10c+d=101010a+b+c+d,將各位BCD碼分

10、離出之后,即可根據(jù)此式轉(zhuǎn)換為二進(jìn)制數(shù)。涉及到乘法運(yùn)算和多字節(jié)加法運(yùn)算。0X20,0X21中為BCD碼,0X21高4位為最高位。轉(zhuǎn)換結(jié)果放在0X30,0X31中。main: mov a,0x79mov 0x20,amov a,0x54mov 0x21,a ;賦值mov a,0x20and a,0x0fmov 0x22,aswapa 0x20and a,0x0fmov 0x23,amov a,0x21and a,0x0fmov 0x24,aswapa 0x21and a,0x0fmov 0x25,a ;BCD碼展開(kāi)后存于0X22,0X23,0X24,0X25mov a,0x25, ;0X25為最高

11、位mov 0x30,amov a,0x0 ;多字節(jié)加法高位為0mov 0x31,amov a,0x24mov 0x32,acall a_b ;調(diào)子程mov a,0x23mov 0x32,acall a_bmov a,0x22mov 0x32,acall a_bself: jmp selfa_b:mov a,0x0 ;0X34,0X35存儲(chǔ)中間結(jié)果mov 0x34,amov 0x35,amov a,0x0a ;實(shí)現(xiàn)乘10mov 0x33,aa1: mov a,0x35 ;兩字節(jié)二進(jìn)制加法,在本例中高字節(jié)肯定無(wú)進(jìn)位add a,0x31mov 0x35,amov a,0x34add a,0x30mo

12、v 0x34,ajbc 0x03,0inc 0x35djz 0x33jmp a1mov a,0x32add 0x34,ajbc 0x03,0inc 0x35mov a,0x34mov 0x30,amov a,0x35mov 0x31,areteop七 二進(jìn)制數(shù)轉(zhuǎn)換為BCD碼本例為單字節(jié)二進(jìn)制數(shù)(0X20)轉(zhuǎn)換為非壓縮BCD碼,存在0X25,0X24,0X23中,0X25為百位,0X23為個(gè)位。main: mov a,0xa4 ;賦值mov 0x20,amov 0x21,amov 0x22,amov a,0x0 ;0x23,0x24,0x25單元清0mov 0x23,amov 0x24,amov 0x25,amov a,0x64 ;對(duì)100的個(gè)數(shù)計(jì)數(shù)mov 0x26,amov a,0x25 ;百位存在0x25中mov 0x04,acall a0 ;調(diào)計(jì)數(shù)子程mov a,0x0a ;對(duì)10的個(gè)數(shù)計(jì)數(shù)mov 0x26,adec 0x04 ;個(gè)位存在0x24中call a0mov a,0x22 ;除去百位,十位,余下的即個(gè)位,存入0x23mov 0x23,aself: jmp selfa0: ;計(jì)數(shù)子程mov a,0x26sub 0x22,ajbs 0x03,2jmp a1inc 0x00 ;無(wú)余

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論