數(shù)碼轉(zhuǎn)換-實(shí)驗(yàn)報告--微機(jī)原理_第1頁
數(shù)碼轉(zhuǎn)換-實(shí)驗(yàn)報告--微機(jī)原理_第2頁
數(shù)碼轉(zhuǎn)換-實(shí)驗(yàn)報告--微機(jī)原理_第3頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)九 數(shù)碼轉(zhuǎn)換一、實(shí)驗(yàn)?zāi)康?、掌握計算機(jī)常用數(shù)據(jù)編碼之間的相互轉(zhuǎn)換方法。2, 進(jìn)一步熟悉DEBUG軟件的使用方法。二、實(shí)驗(yàn)容L ACSII碼轉(zhuǎn)換為非壓縮型BCD碼編寫并調(diào)試正確的匯編語言源程序,使之實(shí)現(xiàn):設(shè)從鍵盤輸入一串十進(jìn)制數(shù),存入DATA1 單元中,按回車停止鍵盤輸入。將其轉(zhuǎn)換成非壓縮型(非組合型) BCD碼后,再存入DATA2 開始的單元中。若輸入的不是十進(jìn)制數(shù),則相應(yīng)單元中存放FFH。調(diào)試程序,用D命令檢查執(zhí) 行結(jié)果。2. BCD碼轉(zhuǎn)換為二進(jìn)制碼編寫并調(diào)試正確的匯編語言源程序,使之將一個16位存儲單元中存放的4位BCD碼 DATA1,轉(zhuǎn)換成二進(jìn)制數(shù)存入DATA2字單元中。調(diào)試程序,用

2、D命令檢查執(zhí)行結(jié)果。3. 十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼編寫并調(diào)試正確的匯編語言源程序,使之將存DATA1字單元中存放的4位十六進(jìn)制數(shù), 轉(zhuǎn)換為ASCII碼后分別存入DATA2為起始地址的4個單元中,低位數(shù)存在低地址的字節(jié)中,并 在屏慕上顯示出來。三、實(shí)驗(yàn)預(yù)習(xí)1. 復(fù)習(xí)材料中有關(guān)計算機(jī)數(shù)據(jù)編碼部分的容。2. 按要求編寫程序。四、實(shí)驗(yàn)步驟1. 編輯源文件,經(jīng)匯編連接產(chǎn)生EXE文件。2. 用DEBUG調(diào)試、檢查、修改程序。五、實(shí)驗(yàn)容1. ACSII碼轉(zhuǎn)換為非壓縮型BCD碼STACKSEGMENT PARA STACK 1 STACK1DB 256 DUP ;為堆棧段留出256個字節(jié)單位STACKEN

3、DS;定義數(shù)據(jù)段DATASEGMENT PARA rDATA*DATA1DB 32:緩沖區(qū)最大長度DATA2DATADB ?DB 3232 DUP(?)DB 32 DUP (?)ENDSCODESEGMENT定義代碼段ASSUME SS:STACKASSUME CS:CODEASSUME DS:DATASTART:MOV AX,DATAMOV DS.AXLEA DXDATAl;規(guī)定:DX存放輸入字符串的緩沖區(qū)首地址MOV AltOAHINT 21H:字符串輸入AL二鍵入的ASCII碼LEA DLDATA2LEASLDATA1DATA2首地址INCSIMOVCLJSI:取輸入字符串長度INC S

4、I:指向第一個輸入字符LP1:MOVAL, SI;DI存放SUB AL,30H:輸入的字符存為ASCII碼,將其轉(zhuǎn)換成十進(jìn)制數(shù)CMP AL,0:若 AL<0 (AL-O<O),跳轉(zhuǎn)到 LP2幾LP2CMP AL.9;若 AL>9 (AL-9>0),跳轉(zhuǎn)到 LP2JG LP2MOV BL,AL;將 AL->BL;將結(jié)果存到MOV DI.BLDATA2開始的單元中INC DIINC SIDEC CLJMP LP1:若輸入的不是十進(jìn)制LP2:MOV AL,OFFH數(shù),在相應(yīng)的單元存放FFH:以字母開頭的十六進(jìn)制數(shù)前面需加0*MOV BL,ALAL->BLMOV D

5、I,BLINC DIINC SIDEC CL CL二CL-1JNZ LP1;CL二0,執(zhí)行LP3中的語句LP3:MOV AH,4CHI NT 2 111CODE ENDSEND STARTDS «19D8 ESJ9B8 19DB:0052 4?PtAX=0AFF BX=80FF DS=19D8ES=19B819DB:0053 46PtAX=0AFP BX=00FF I)S=19D8ES=19B819DB;0054 FEC9PtSS=19C8 CS=19DB IP=0052 NU UP El PL NZ AC PE NC INC DICX=H401 DXSS=19C8 CS=19DBI

6、NC SICX=0401 DX =0e00 SS=19C8 CS=19DBDEC CLSP=0100IP=0053SP=0100IP=0054CX=0400 DX =0800SS19C8 CS-19DB 0036SP=0100 IP-0056SI=»01ED1=003FHU UP El PL HZ NA PE NCBP=0000SI=001FD1=003FNU UP El PL NZ NA PO NCBP=0000 SI=001F DI=003F NU UP El PL ZFNA PE NCD DS:0000005019D8:00O0201J>i9D8:R0104649i9D8

7、:002000AftbL9D8:0030FFFF19D8:0040000619D8:0050B8AX=0fiFF BX=00FFPS*1?D8ES19B819DB:0056 75DE313233343536-3738394148494A4R4C4D-4E4PS051020304P50809FFFFFFFFFFFFFF-FFPFFFFF000000000000-00000009JNZ5DF0040F0044FF045FF032FF04 5 FF02 2 FF045PF0.123456789ABCDE PCH1JKLMH0PQRST.2. BCD碼轉(zhuǎn)換為二進(jìn)制碼DATASEGMENTDATADAT

8、A1 DW 2497HDATA2 DW ?ENDSCODESEGMENTSTART:ASSUME SS:STACK.CS:CODE,DS:DATAMOV AX.DATAMOV DS.AXXOR BX.BX;累加單元清0(BX=O)MOV SI.OAH;設(shè)置乘數(shù)10MOV CL.4;指4位BCD碼MOV CH.3;循環(huán)次數(shù)=3MOV AX.DATA1;取十進(jìn)制數(shù)LP:ROL AX,CL;取數(shù)字MOV DI.AX;保存當(dāng)前AX值:屛蔽高位;累加;循環(huán)次數(shù)減1;以上完成循環(huán)三次;取個位數(shù)字;屏蔽高位;進(jìn)行累加,直接將最后的累加結(jié)果放到AX中AND AX.OFHADD AX.BXMliL SIMOV

9、BX,AXMOV AX.DIDEC CHJNZ LPROL AX,CLAND AX.OFHADD AX.BXMOV DATA2,AXMOV AH.4CHINT 21HCODE ENDSEND STARTnX«7249BX=09BACX=0004SP-OH00BP=0000SI=000ADI-7249DS-19D7ES-19B7SS-19C7CS-19D8IP 乜022NU UP ElPL ZRNO PE NC19D8:0022 -T75 EDJNZ0811耐7249BX=09BACX=0004SP=O000BP=0000SI=0e0ADI =7249DS-19D7ES-19B7SS-

10、19C7CS-19D8IP 丸024NU UP ElPL ZRNA PE HC19D8:0024 _TD3C0ROLiAX,CLAX=2497BX=89BACX=0004DX=0000SP=8000BP=0000SI=000ADI =7249DS=19D7ES=19B7SS=19C7CS=19D8IP 丸026OU UP ElPL ZRNA PE CY19D8:0026T250F00ANDiAX.000FAX=0007BX=09BACX =0001DX=0000SP=8000BP=0000SI=000ADI =7249DS=19D7ES=19B7SS=19C7CS=19D8IP=0029NU

11、UP ElPL NZNA PO NC19D8:0029 -T03C3ADD丄AX-BXAX-09C1BX-09BACX-0004DX-0000SP-0000BP-0000SI-000ADI-7249DST9D7ES-19B7SS=19C7CSFD8IF-002BNU UP ElPL NZAC PO NC19D8:002BA30280MOU0002KAXDS: 0002 -0000開始3.十六進(jìn)制數(shù)轉(zhuǎn)換為ACSII碼STACKSEGMENTDB 256 DUP(?)STACKENDSDATASEGMENTDATA1 DB 24IL06DHDATA2 DB 4 DUP(?);存放ASCII碼JUM

12、P DB 4 DUP(?);4位十六進(jìn)制數(shù)分別存放在DATA3的4個字節(jié)中DATA ENDSCODE SEGMENTASSUME SS:STACK.DS:DATA,CS:CODESTART: MOV AX.DATAMOV DStAXLEA SI.DATA1LEA DLJUMP:SI二JUMP的首地址偏移量;DI=DATA2的首地址偏移量;因?yàn)槭撬奈皇M(jìn)制數(shù),所以設(shè)置為循環(huán)4;取JUMP中的十六進(jìn)制數(shù);若 AL>9 (AL-9>0),跳轉(zhuǎn)到 LP3;0、9H+30H二ASCII;A、FH+30H=ASCII:將ASCII碼依次存入DATA2中MOV CL.2LPO: MOV AL,

13、SIAND AL.OFOHROR AL,4MOV DI,ALINC DIMOV AL.SIAND AL.OFHMOV DI,ALINC SIINC DIDEC CLJNZ LPOLEA SI,JUMPLEA DI.DATA2MOV CL,4 次LP1: MOV AL,SICMP AL.9JG LP3ADD AL,30HJMP LP3LP2:ADD AL.37HLP3:MOV DI,ALINC DIINC SIDEC CLJNZ LP1MOV AHt09HINT 21HMOV DX,OFFSET DATA2MOV AH.09HINT 21HMOV AH.4CHINT 21HCODE ENDSEN

14、D START;循環(huán)2次,取兩次兩位十六進(jìn)制數(shù);取2位十六進(jìn)制數(shù);低四位為零;右移4位相當(dāng)于除以16;高位數(shù)存放在高地址字節(jié)中;取2位十六進(jìn)制數(shù):高四位為零;低位數(shù)存放在低地址字節(jié)中-rX=l?24時0000CX=0500DX0000SP-0000BP胡盹0PS=19D7ES=19B7SST9C?CS=19D8IP-0049NUUP Eli9D8:0049 -THOUDX.008B洽珂924BX-8800CX =0500DX=000BSP0000BP=0000DS=19D7ES»19B7SS=19C?CS=19D8IP=004CNUUP El19I>8:004C B409 -T

15、HOUAH.09律=0924CX =0500I»t=008BSP=0000BP=0000DS =19D?ES=19B7SS=19C?CS=19D8IP-004ENUUP ELX-0924BX=0000DS =19D7ES=19B730fi7:107C 90 -D &S:0000 0020 19D7:000024 6DL9D7:0010 B8 D? 19I>7:0020 F0GX=05e0 DX =000BSS=19C7 CS=00fi7NOP683D4E38293 1SP=FFFfiIP=107CBP-0000 SHU UP DI44 00 24-04 06 0DBE

16、00 00BF 07 000D 0A 24 0(Bl 02 8ft 弘19D8:004E CD21INT 21-T六、實(shí)驗(yàn)習(xí)題與思考1.編程實(shí)現(xiàn):從鍵盤上輸入兩位十六進(jìn)制數(shù),轉(zhuǎn)換成十進(jìn)制數(shù)后顯示在屏幕上。STACK SEGMENTDB 256 DUP(?)STACK ENDSDATASEGMENTDATA1DB522 DUP(?)DATA2DB2 DUP (?)DATA3DB2 DUP(?)DATAENDSCODESEGMENTASSUMESS:STACK.DS:DATA,CS:CODESTART:MOV AX.DATAMOVDS.AXLEADX.DATAlMOVAH.OAHINT21HLEA

17、SLDATA1+2LEADLDATA2MOVCL.2MOVAL, SISUBAL.30HCMPAL.9JALP2MOVDltALINCDIINCSIDECCLJZLP3JNZLP1SUBAL. 7MOVDI, ALINCDIINCSIDECCLJNZLP1LEADI.DATA2MOVAL,DIMOVBLjDI+1MOVCL.4SHLAL ,CLADDAL, BLMOVDI,ALLP1:LP2:LP3::輸入字符串;將侶(:碼轉(zhuǎn)換為十六進(jìn)制數(shù);將十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),并保存LEA SI.DATA3XOR AH,AHMOVCL JOODIV CLMOV SI,ALMOV AL.AHXOR AH

18、,AH:AH=AX%1OO, AL=AX/1OO;保存百位數(shù)MOV CL JODIV CLMOV SI+1J.ALMOV SI+2,AHLP4: MOV DL,SI;取十位數(shù)送顯;取個位數(shù)送顯;保存十位數(shù):保存?zhèn)€位數(shù);屛幕顯示十進(jìn)制數(shù);取百位數(shù)送顯OR DL.30HMOV AH.O2HINT 21HMOV DL,SI+1OR DL.30HMOV A1K02HINT 21HMOV DL,SI+2OR DL.30HMOV A1KO2HINT 21HMOV AH.4CHINT 21HCODE ENDSEND START 2.十進(jìn)制數(shù)轉(zhuǎn)換為七段碼。 為了在七段顯示器上顯示十進(jìn)制數(shù),需要把十進(jìn)制數(shù)轉(zhuǎn)換為

19、 七段代碼。轉(zhuǎn)換可采用查表法。設(shè)需要轉(zhuǎn)換的十進(jìn)制數(shù)已存放在起始地址為DATA1區(qū)域 中,七段代碼轉(zhuǎn)換表存放在起始地址為TABLE表中,轉(zhuǎn)換結(jié)果存放到起始地址為DATA2區(qū) 域。若待轉(zhuǎn)換的數(shù)不是十進(jìn)制數(shù),則相應(yīng)結(jié)果單元容為00H。STACK SEGMENTDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DB OJ.2,3,4,5,6,7,&A'.TABLE DB00Ht40H,01H,79H,02H,24H,03H,30H,04H,19H,05H.12H,06H,02H,071L 78H.08H,OOH,09H,18H.OAH,08H,OBH,03H,OCH,46H,ODH,21H.;實(shí)際數(shù)據(jù)定義必須在同一行DATA2 DB16 DUP(0)COUNT EQU 2DATA ENDSCODE SEGMENTASSUME SS:STACK,DS:DATAfCS:CODESTART:MOVAX,DATAMOVDS. AXLEASLDATA1LEABX,DATA2LEADI.TABLEXORAH, AHLP1:MOVALt SI;外循環(huán)DATA1指向下一個INCSIMOVCX, 16;循環(huán)TABLE 16次LP2:CMPDI,ALJELP3ADDDI,CO

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論