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

下載本文檔

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

文檔簡(jiǎn)介

1、微機(jī)實(shí)驗(yàn)九數(shù)碼轉(zhuǎn)換實(shí)驗(yàn)?zāi)康?. 掌握計(jì)算機(jī)常用數(shù)據(jù)編碼之間的相互轉(zhuǎn)換方法。2. 進(jìn)一步熟悉 DEBUG軟件的使用方法一、 實(shí)驗(yàn)內(nèi)容1. 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é)果。實(shí)驗(yàn)代碼:1.DATA SEGMENT; 定義數(shù)據(jù)段DATA1 DB 21,?,21 DUP(?) ;建立一個(gè)內(nèi)存區(qū),第二個(gè)數(shù)存放最大字符數(shù)DATA2 DB

2、21 DUP(?);DATA2區(qū)定義DATA ENDSSTACK SEGMENT STACK;定義堆棧段DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA ;程序初始化MOV DS,AX;程序初始化LEA DX,DATA1 ;DX存放 DATA1的首地址MOV AH,0AH;從鍵盤中輸入字符串INT 21H;調(diào)用 INT21 功能LEA SI,DATA1 ;SI存放 DATA1的首地址INC SI;指向 LP1 循環(huán)次數(shù)MOV CL,SI ;存放 LP1 的循環(huán)次數(shù)MOV CH,

3、0INC SI;指向所輸入的數(shù)LEA DI,DATA2 ;DI存放 DATA2的首地址LP1: MOV AL,SI ;將輸入的數(shù)存放到AL 中CMP AL,30H;AL與 30H 比較JC LP2;AL39H, 則跳 LP2(JG 與 JA 比較 )SUB AL,30H;將輸入的字符轉(zhuǎn)換成ASCII 碼MOV BL,AL;AL BLSAVE: MOV DI,BL ;BL DS:DIINC SI;SI=SI+1INC DI;DI=DI+1LOOP LP1;JMP EXIT;LP2: MOV BL,0FFH ;JMP SAVE;EXIT:MOV AH,4CHINT 21H循環(huán) LP1跳轉(zhuǎn)到 EXI

4、T如果輸入的不是十進(jìn)制數(shù),則在相應(yīng)的單元中存放跳轉(zhuǎn)到 SAVEFFHCODE ENDSEND START2. BCD 碼轉(zhuǎn)換為二進(jìn)制碼編寫并調(diào)試正確的匯編語言源程序,使之將一個(gè) 16 位存儲(chǔ)單元中存放的 4 位DATA1,轉(zhuǎn)換成 2 進(jìn)制后存入 DATA2字單元中。調(diào)試程序,用 D 命令檢查執(zhí)行結(jié)果。BCD碼代碼:STACK SEGMENTDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DW1234HDATA2 DW?DATA ENDSCODE SEGMENTASSUME SS:STACK,CS:CODE,DS:DATASTART:MOV AX,DATAMOV

5、 DS,AXXOR BX,BX MOV SI,0AH;累加單元清0(BX=0)設(shè)置乘數(shù)10MOV CL,4MOV CH,3 MOV AX,DATA1 LP: ROL AX,CL MOV DI,AX AND AX,0FH ADD AX,BX;設(shè)置循環(huán)次數(shù)取十進(jìn)制數(shù)取數(shù)字保存當(dāng)前AX值屏蔽高位累加3MUL SIMOV BX,AXMOV AX,DIDEC CH;循環(huán)次數(shù)減1JNZ LPROL AX,CLAND AX,0FHADD AX,BX;取個(gè)位數(shù)字屏蔽高位累加MOV DATA2,AXMOV AH,4CHINT 21HCODE ENDSENDSTART3. 十六進(jìn)制數(shù)轉(zhuǎn)換為 ACSII 碼編寫并調(diào)

6、試正確的匯編語言源程序, 使之將內(nèi)存 DATA1字單元中存放的 4 位十六進(jìn)制數(shù),轉(zhuǎn)換為 ASCII 碼后分別存入DATA2為起始地址的4 個(gè)單元中,低位數(shù)存在低地址的字節(jié)中,并在屏幕上顯示出。代碼:STACK SEGMENTDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DB 12H,02CH ;4 位十六進(jìn)制數(shù)DATA2 DB 5 DUP(?) ;存放 ASC碼DATA3 DB 4 DUP(?) ;4位十六進(jìn)制數(shù)分別存放在LFCR DB 0DH,0AH,$DATA3的4 個(gè)字節(jié)中DATA ENDSCODE SEGMENTASSUME SS:STACK,DS

7、:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXLEA SI,DATA1LEA DI,DATA3MOV CL,2 ; 循環(huán) 2 次LP1: MOV AL,SI ;取 2 位十六進(jìn)制數(shù)AND AL,0F0H ; 屏蔽低四位ROR AL,4 ; 右移 4 位MOV DI,AL ;高位數(shù)存放在高地址字節(jié)中INC DIMOV AL,SI ;取 2 位十六進(jìn)制數(shù)AND AL,0FH ; 屏蔽高四位MOV DI,AL ;低位數(shù)存放在低地址字節(jié)中INC SIINC DIDEC CLJNZ LP1LEA SI,DATA3 ; 將 DATA3的首地址偏移量賦給SILEA DI,DA

8、TA2 ; 將 DATA2的首地址偏移量賦給DIMOV CL,4 ; 循環(huán) 4 次LP2: MOV AL,SI ; 取 DATA3中的十六進(jìn)制數(shù)CMP AL,9JG LP3 ; 若 AL9,跳轉(zhuǎn)到LP3ADD AL,30H ; 十六進(jìn)制數(shù)0-9-ASC 碼,要加30HJMP LP4LP3: ADD AL,37H ;十六進(jìn)制數(shù)A-F-ASC 碼,要加37HLP4: MOV DI,AL ;將 ASC碼依次存入DATA2中INC DIINC SIDEC CLJNZ LP2MOV AL,$ ;設(shè)置顯示結(jié)束標(biāo)志MOV DI+1,AL ;存入 DATA2中LEA DX,LFCRMOV AH,09HINT

9、21H ; 回車換行MOV DX,OFFSET DATA2MOV AH,09HINT 21H ; 顯示 ASC碼MOV AH,4CHINT 21HCODE ENDSEND START二、 實(shí)驗(yàn)步驟1.編輯源文件,經(jīng)匯編連接產(chǎn)生EXE文件。2. 用 DEBUG調(diào)試、檢查、修改程序。3.三、 實(shí)驗(yàn)習(xí)題與思考1. 編程實(shí)現(xiàn):從鍵盤上輸入兩位十六進(jìn)制數(shù),轉(zhuǎn)換成十進(jìn)制數(shù)后顯示在屏幕上。源代碼:STACK SEGMENTDB256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DB5,?,2 DUP(?)DATA2 DB2 DUP(?)DATA3 DB2 DUP(?)DATA END

10、SCODE SEGMENTASSUMESS:STACK,DS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXLEADX,DATA1MOVAH,0AHINT21H;輸入字符串LEASI,DATA1+2LEADI,DATA2MOVCL,2;將 ASC碼轉(zhuǎn)換為十六進(jìn)制數(shù)LP1: MOV AL,SISUBAL,30HCMPAL,9JALP2MOVDI,ALINCDIINCSIDECCLJZ LP3JNZLP1LP2: SUB AL,7MOVDI,ALINCDIINCSIDECCLJNZLP1;將十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),并保存LP3: LEA DI,DATA2MOVAL,DI

11、MOVBL,DI+1MOVCL,4SHLAL,CLADDAL,BLMOVDI,ALLEASI,DATA3XORAH,AHMOVCL,100DIVCL;AH=AX%100,AL=AX/100MOVSI,AL;保存百位數(shù)MOVAL,AHXORAH,AHMOVCL,10DIVCLMOVSI+1,ALMOVSI+2,AH;保存十位數(shù)保存?zhèn)€位數(shù); 屏幕顯示十進(jìn)制數(shù)LP4: MOV DL,SI;取百位數(shù)送顯ORDL,30HMOVAH,02HINT21HMOVDL,SI+1;取十位數(shù)送顯ORDL,30HMOVAH,02HINT21HMOVDL,SI+2;取個(gè)位數(shù)送顯ORDL,30HMOVAH,02HINT2

12、1HMOVAH,4CHINT21HCODE ENDSENDSTART運(yùn)行圖:輸入:輸出:2. 十進(jìn)制數(shù)轉(zhuǎn)換為七段碼。為了在七段顯示器上顯示十進(jìn)制數(shù),需要把十進(jìn)制數(shù)轉(zhuǎn)換為七段代碼。轉(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é)果單元內(nèi)容為00H。源代碼:STACK SEGMENTDB256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DB0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,A,B,C

13、,$TABLE DB 00H,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í)際數(shù)據(jù)定義必須在同一行DATA2 DB16 DUP(0)COUNT EQU2DATA ENDSCODE SEGMENTASSUME SS:STACK,DS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXLEASI,DATA1LEABX,DATA2LEADI,TABLEXORAH,AHLP1: MOV AL,SI;外循環(huán) DATA1指向下一個(gè)INCSIMOVCX,16;內(nèi)循環(huán) TABLE 16 次LP2: CMP DI,ALJELP3ADDDI,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論