微機實驗九 數(shù)碼轉(zhuǎn)換_第1頁
微機實驗九 數(shù)碼轉(zhuǎn)換_第2頁
微機實驗九 數(shù)碼轉(zhuǎn)換_第3頁
微機實驗九 數(shù)碼轉(zhuǎn)換_第4頁
微機實驗九 數(shù)碼轉(zhuǎn)換_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

-.z.微機實驗九數(shù)碼轉(zhuǎn)換實驗?zāi)康恼莆沼嬎銠C常用數(shù)據(jù)編碼之間的相互轉(zhuǎn)換方法。進一步熟悉DEBUG軟件的使用方法實驗容ACSII碼轉(zhuǎn)換為非壓縮型BCD碼編寫并調(diào)試正確的匯編語言源程序,使之實現(xiàn):設(shè)從鍵盤輸入一串十進制數(shù),存入DATA1單元中,按回車停頓鍵盤輸入。將其轉(zhuǎn)換成非壓縮性〔非組合型〕BCD碼后,再存入DATA2開場的單元中。假設(shè)輸入的不是十進制數(shù),則相應(yīng)單元中存放FFH。調(diào)試程序,用D命令檢查執(zhí)行結(jié)果。實驗代碼:1.DATASEGMENT ;定義數(shù)據(jù)段DATA1DB21,",21DUP(");建立一個存區(qū),第二個數(shù)存放最大字符數(shù)DATA2DB21DUP(");DATA2區(qū)定義DATAENDSSTACKSEGMENTSTACK;定義堆棧段DB100DUP(")STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVA*,DATA;程序初始化MOVDS,A*;程序初始化LEAD*,DATA1;D*存放DATA1的首地址MOVAH,0AH;從鍵盤中輸入字符串INT21H;調(diào)用INT21功能LEASI,DATA1;SI存放DATA1的首地址INCSI;指向LP1循環(huán)次數(shù)MOVCL,[SI];存放LP1的循環(huán)次數(shù)MOVCH,0INCSI;指向所輸入的數(shù)LEADI,DATA2;DI存放DATA2的首地址LP1:MOVAL,[SI];將輸入的數(shù)存放到AL中CMPAL,30H;AL與30H比擬JCLP2;AL<30H,則跳LP2CMPAL,39H;AL與39H比擬JALP2 ;AL>39H,則跳LP2(JG與JA比擬)SUBAL,30H;將輸入的字符轉(zhuǎn)換成ASCII碼MOVBL,AL;AL→BLSAVE:MOV[DI],BL;BL→DS:DIINCSI;SI=SI+1INCDI ;DI=DI+1LOOPLP1 ;循環(huán)LP1JMPE*IT;跳轉(zhuǎn)到E*ITLP2:MOVBL,0FFH;如果輸入的不是十進制數(shù),則在相應(yīng)的單元中存放FFHJMPSAVE ;跳轉(zhuǎn)到SAVEE*IT:MOVAH,4CHINT21HCODEENDSENDSTARTBCD碼轉(zhuǎn)換為二進制碼編寫并調(diào)試正確的匯編語言源程序,使之將一個16位存儲單元中存放的4位BCD碼DATA1,轉(zhuǎn)換成2進制后存入DATA2字單元中。調(diào)試程序,用D命令檢查執(zhí)行結(jié)果。代碼:STACKSEGMENTDB256DUP(")STACKENDSDATASEGMENTDATA1DW1234HDATA2DW"DATAENDSCODESEGMENTASSUMESS:STACK,CS:CODE,DS:DATASTART:MOVA*,DATAMOVDS,A**ORB*,B*;累加單元清0(B*=0)MOVSI,0AH;設(shè)置乘數(shù)10MOVCL,4MOVCH,3;設(shè)置循環(huán)次數(shù)3MOVA*,DATA1;取十進制數(shù)LP:ROLA*,CL;取數(shù)字MOVDI,A*;保存當(dāng)前A*值A(chǔ)NDA*,0FH;屏蔽高位ADDA*,B*;累加MULSIMOVB*,A*MOVA*,DIDECCH;循環(huán)次數(shù)減1JNZLPROLA*,CL;取個位數(shù)字ANDA*,0FH;屏蔽高位ADDA*,B*;累加MOVDATA2,A*MOVAH,4CHINT21HCODEENDSENDSTART十六進制數(shù)轉(zhuǎn)換為ACSII碼編寫并調(diào)試正確的匯編語言源程序,使之將存DATA1字單元中存放的4位十六進制數(shù),轉(zhuǎn)換為ASCII碼后分別存入DATA2為起始地址的4個單元中,低位數(shù)存在低地址的字節(jié)中,并在屏幕上顯示出。代碼:STACKSEGMENTDB256DUP(")STACKENDSDATASEGMENTDATA1DB12H,02CH;4位十六進制數(shù)DATA2DB5DUP(");存放ASC碼DATA3DB4DUP(");4位十六進制數(shù)分別存放在DATA3的4個字節(jié)中LFCRDB0DH,0AH,'$'DATAENDSCODESEGMENTASSUMESS:STACK,DS:DATA,CS:CODESTART:MOVA*,DATAMOVDS,A*LEASI,DATA1LEADI,DATA3MOVCL,2;循環(huán)2次LP1:MOVAL,[SI];取2位十六進制數(shù)ANDAL,0F0H;屏蔽低四位RORAL,4;右移4位MOV[DI],AL;高位數(shù)存放在高地址字節(jié)中INCDIMOVAL,[SI];取2位十六進制數(shù)ANDAL,0FH;屏蔽高四位MOV[DI],AL;低位數(shù)存放在低地址字節(jié)中INCSIINCDIDECCLJNZLP1LEASI,DATA3;將DATA3的首地址偏移量賦給SILEADI,DATA2;將DATA2的首地址偏移量賦給DIMOVCL,4;循環(huán)4次LP2:MOVAL,[SI];取DATA3中的十六進制數(shù)CMPAL,9JGLP3;假設(shè)AL>9,跳轉(zhuǎn)到LP3ADDAL,30H;十六進制數(shù)0-9->ASC碼,要加30HJMPLP4LP3:ADDAL,37H;十六進制數(shù)A-F->ASC碼,要加37HLP4:MOV[DI],AL;將ASC碼依次存入DATA2中INCDIINCSIDECCLJNZLP2MOVAL,'$';設(shè)置顯示完畢標(biāo)志MOV[DI+1],AL;存入DATA2中LEAD*,LFCRMOVAH,09HINT21H;回車換行MOVD*,OFFSETDATA2MOVAH,09HINT21H;顯示ASC碼MOVAH,4CHINT21HCODEENDSENDSTART實驗步驟編輯源文件,經(jīng)匯編連接產(chǎn)生E*E文件。用DEBUG調(diào)試、檢查、修改程序。實驗習(xí)題與思考編程實現(xiàn):從鍵盤上輸入兩位十六進制數(shù),轉(zhuǎn)換成十進制數(shù)后顯示在屏幕上。源代碼:STACKSEGMENTDB256DUP(")STACKENDSDATASEGMENTDATA1DB5,",2DUP(")DATA2DB2DUP(")DATA3DB2DUP(")DATAENDSCODESEGMENTASSUMESS:STACK,DS:DATA,CS:CODESTART:MOVA*,DATAMOVDS,A*LEAD*,DATA1MOVAH,0AHINT21H;輸入字符串LEASI,DATA1+2LEADI,DATA2MOVCL,2;將ASC碼轉(zhuǎn)換為十六進制數(shù)LP1:MOVAL,[SI]SUBAL,30HCMPAL,9JALP2MOV[DI],ALINCDIINCSIDECCLJZLP3JNZLP1LP2:SUBAL,7MOV[DI],ALINCDIINCSIDECCLJNZLP1;將十六進制數(shù)轉(zhuǎn)換成十進制數(shù),并保存LP3:LEADI,DATA2MOVAL,[DI]MOVBL,[DI+1]MOVCL,4SHLAL,CLADDAL,BLMOV[DI],ALLEASI,DATA3*ORAH,AHMOVCL,100DIVCL;AH=A*%100,AL=A*/100MOV[SI],AL;保存百位數(shù)MOVAL,AH*ORAH,AHMOVCL,10DIVCLMOV[SI+1],AL;保存十位數(shù)MOV[SI+2],AH;保存?zhèn)€位數(shù);屏幕顯示十進制數(shù)LP4:MOVDL,[SI];取百位數(shù)送顯ORDL,30HMOVAH,02HINT21HMOVDL,[SI+1];取十位數(shù)送顯ORDL,30HMOVAH,02HINT21HMOVDL,[SI+2];取個位數(shù)送顯ORDL,30HMOVAH,02HINT21HMOVAH,4CHINT21HCODEENDSENDSTART運行圖:輸入:輸出:十進制數(shù)轉(zhuǎn)換為七段碼。為了在七段顯示器上顯示十進制數(shù),需要把十進制數(shù)轉(zhuǎn)換為七段代碼。轉(zhuǎn)換可采用查表法。設(shè)需要轉(zhuǎn)換的十進制數(shù)已存放在起始地址為DATA1區(qū)域中,七段代碼轉(zhuǎn)換表存放在起始地址為TABLE表中,轉(zhuǎn)換結(jié)果存放到起始地址為DATA2區(qū)域。假設(shè)待轉(zhuǎn)換的數(shù)不是十進制數(shù),則相應(yīng)結(jié)果單元容為00H。源代碼:STACKSEGMENTDB256DUP(")STACKENDSDATASEGMENTDATA1DB0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,'A','B','C','$'TABLEDB00H,40H,01H,79H,02H,24H,03H,30H,04H,19H,05H,12H,06H,02H,07H,78H,08H,00H,09H,18H,0AH,08H,0BH,03H,0CH,46H,0DH,21H,0EH,06H,0FH,0EH;實際數(shù)據(jù)定義必須在同一行DATA2DB16DUP(0)COUNTEQU2DATAENDSCODESEGMENTASSUMESS:STACK,DS:DATA,CS:CODESTART:MOVA*,DATAMOVDS,A*LEASI,DATA1LEAB*,DATA2LEADI,TABLE*ORAH,AHLP1:MOVAL,[SI];外循環(huán)DATA1指向下一個INCSIMOVC*,16;循環(huán)TABLE16次LP2:CMP[DI],ALJELP3ADDDI,COUNT;循環(huán)TABLE指向下一組DECC*JNZLP2MOVBYTEPTR[B*],00H;假設(shè)不是十進制數(shù),則結(jié)果保存為

溫馨提示

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

評論

0/150

提交評論