數(shù)碼轉(zhuǎn)換 實(shí)驗(yàn)報告材料微機(jī)原理
《數(shù)碼轉(zhuǎn)換 實(shí)驗(yàn)報告材料微機(jī)原理》由會員分享,可在線閱讀,更多相關(guān)《數(shù)碼轉(zhuǎn)換 實(shí)驗(yàn)報告材料微機(jī)原理(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、word 實(shí)驗(yàn)九 數(shù)碼轉(zhuǎn)換 一、實(shí)驗(yàn)?zāi)康? 1、掌握計算機(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é)果。 2. BCD碼轉(zhuǎn)換為二進(jìn)制碼 編寫并調(diào)試正確的匯編語言源程序,使之將一個16位存儲單元中存放的4
2、位BCD碼DATA1,轉(zhuǎn)換成二進(jìn)制數(shù)存入DATA2字單元中。調(diào)試程序,用D命令檢查執(zhí)行結(jié)果。 3. 十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼 編寫并調(diào)試正確的匯編語言源程序,使之將內(nèi)存DATA1字單元中存放的4位十六進(jìn)制數(shù),轉(zhuǎn)換為ASCⅡ碼后分別存入DATA2為起始地址的4個單元中,低位數(shù)存在低地址的字節(jié)中,并在屏幕上顯示出來。 三、?實(shí)驗(yàn)預(yù)習(xí) 1.?復(fù)習(xí)材料中有關(guān)計算機(jī)數(shù)據(jù)編碼局部的內(nèi)容。? 2.?按要求編寫程序。? 四、?實(shí)驗(yàn)步驟? 1.?編輯源文件,經(jīng)匯編連接產(chǎn)生EXE文件。 2.?用DEBUG調(diào)試、檢查、修改程序。 五、實(shí)驗(yàn)內(nèi)容 1. ACSII碼轉(zhuǎn)換為非壓縮型BC
3、D碼 STACK???? SEGMENT?PARA?STACK?'STACK'? ????????????? DB?256?DUP(?)?????????? ?? ; 為堆棧段留出256個字節(jié)單位?? STACK?????ENDS????? DATA???? SEGMENT?PARA?'DATA'?????;定義數(shù)據(jù)段? DATA1???? DB?32????????????????????? ; 緩沖區(qū)最大長度 DB????????????????????????? DB?32?DUP(?)??????
4、??? DATA2???? DB?32?DUP(?)?????????? DATA????? ENDS????? CODE??? ?SEGMENT????????????????? ??? ; 定義代碼段 ASSUME? SS:STACK???????????? ASSUME? CS:CODE??????????? ASSUME?DS:DATA????????????????? ?START:????MOV?AX,DATA??????????? MOV?DS,AX?????????? ????????????LEA?DX,DATA1?????
5、?????????? ?; 規(guī)定:DX存放輸入字符串的緩沖區(qū)首地址?? ????????????MOV?AH,0AH? ????????????INT?21H?????????????????????? ; 字符串輸入??AL=鍵入的ASCII碼??? ????????????LEA?SI,DATA1???????????????? ?? LEA?DI,DATA2????????????????? ; DI存放DATA2首地址?? ????????????INC?SI? ????????????MOV?
6、CL,[SI]?????????????????? ; 取輸入字符串長度??????????? ??INC?SI??????????????????????? ? ; 指向第一個輸入字符?????????? ?LP1:???????MOV?AL,[SI]? ???????????? SUB?AL,30H?????????????????? ; 輸入的字符存為ASCII碼,將其轉(zhuǎn)換成十進(jìn)制數(shù)?????????? ???????????? CMP?AL,0???????????????????
7、?; 假如AL<0(AL-0<0),跳轉(zhuǎn)到LP2???????????? ?JL?LP2? ???????????? CMP?AL,9???????????????????? ; 假如AL>9〔AL-9>0〕,跳轉(zhuǎn)到LP2???????????? ?JG?LP2?????????? ??????????? MOV?BL,AL????????????????? ?; 將AL->BL? MOV?[DI],BL???????????????? ?; 將結(jié)果存到DATA2開始的單元中?????????? ???
8、???????? ?INC?DI???????????? ?INC?SI????????????? DEC?CL??????????? ?JMP?LP1?????????? ?LP2:???????MOV?AL,0FFH???? ? ; 假如輸入的不是十進(jìn)制數(shù),在相應(yīng)的單元存放FFH?? ; 以字母開頭的十六進(jìn)制數(shù)前面需加'0'?????????????? MOV?BL,AL??????????????? ?; 將AL->BL????????????? ?MOV?[DI],BL?????????????? INC?DI???????
9、?????? ?INC?SI? ?????????????DEC?CL?CL=CL-1? ?????????????JNZ?LP1?????????????????? ??; CL=0,執(zhí)行LP3中的語句?????????? LP3:????MOV?AH,4CH??????????INT?21H??????????????????? ??CODE???ENDS? ???????????END??START? 2. BCD碼轉(zhuǎn)換為二進(jìn)制碼 DATA SEGMENT DATA1 DW 2497H
10、 DATA2 DW ? DATA ENDS CODE SEGMENT ASSUME SS:STACK,CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX XOR BX,BX ; 累加單元清0(BX=0) MOV SI,0AH ; 設(shè)置乘數(shù)10 MOV CL,4
11、 ; 指4位BCD碼 MOV CH,3 ; 循環(huán)次數(shù)=3 MOV AX,DATA1 ; 取十進(jìn)制數(shù) LP: ROL AX,CL ; 取數(shù)字 MOV DI,AX ; 保存當(dāng)前AX值 AND AX,0FH ; 屏蔽高位
12、 ADD AX,BX ; 累加 MUL SI MOV BX,AX MOV AX,DI DEC CH ; 循環(huán)次數(shù)減1 JNZ LP ; 以上完成循環(huán)三次 ROL AX,CL ; 取個位數(shù)字 AND AX,0
13、FH ; 屏蔽高位 ADD AX,BX ; 進(jìn)展累加,直接將最后的累加結(jié)果放到AX中 MOV DATA2,AX MOV AH,4CH INT 21H CODE ENDS END START 3. 十六進(jìn)制數(shù)轉(zhuǎn)換為ACSII碼 STACK SEGMENT DB 256 DUP(?) STACK ENDS
14、 DATA SEGMENT DATA1 DB 24H,06DH DATA2 DB 4 DUP(?) ; 存放ASCII碼 JUMP DB 4 DUP(?) ; 4位十六進(jìn)制數(shù)分別存放在DATA3的4個字節(jié)中 DATA ENDS CODE SEGMENT ASSUME SS:STACK,DS:DATA,CS:CODE START: MOV AX,DATA
15、 MOV DS,AX LEA SI,DATA1 LEA DI,JUMP MOV CL,2 ; 循環(huán)2次,取兩次兩位十六進(jìn)制數(shù) LP0: MOV AL,[SI] ; 取2位十六進(jìn)制數(shù) AND AL,0F0H ; 低四位為零 ROR AL,4 ; 右移4位 相當(dāng)于除以16
16、 MOV [DI],AL ; 高位數(shù)存放在高地址字節(jié)中 INC DI MOV AL,[SI] ; 取2位十六進(jìn)制數(shù) AND AL,0FH ; 高四位為零 MOV [DI],AL ; 低位數(shù)存放在低地址字節(jié)中 INC SI INC DI
17、 DEC CL JNZ LP0 LEA SI,JUMP ; SI=JUMP的首地址偏移量 LEA DI,DATA2 ; DI=DATA2的首地址偏移量 MOV CL,4 ; 因?yàn)槭撬奈皇M(jìn)制數(shù),所以設(shè)置為循環(huán)4次 LP1: MOV AL,[SI]
18、 ; 取JUMP中的十六進(jìn)制數(shù) CMP AL,9 JG LP3 ; 假如AL>9(AL-9>0),跳轉(zhuǎn)到LP3 ADD AL,30H ; 0~9H+30H=ASCII JMP LP3 LP2: ADD AL,37H ; A~FH+30H=ASCII LP3: MOV [DI],AL
19、 ; 將ASCII碼依次存入DATA2中 INC DI INC SI DEC CL JNZ LP1 MOV AH,09H INT 21H MOV DX,OFFSET DATA2 MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START
20、 六、實(shí)驗(yàn)習(xí)題與思考 1.編程實(shí)現(xiàn):從鍵盤上輸入兩位十六進(jìn)制數(shù),轉(zhuǎn)換成十進(jìn)制數(shù)后顯示在屏幕上。 STACK SEGMENT DB 256 DUP(?) STACK ENDS DATA SEGMENT DATA1 DB 5,?,2 DUP(?) DATA2 DB 2 DUP(?) DATA3 DB 2 DUP(?) DATA ENDS CODE SEGMENT ASSUME SS:STACK,DS:DATA,CS:CODE START:MO
21、V AX,DATA MOV DS,AX LEA DX,DATA1 MOV AH,0AH INT 21H ;輸入字符串 LEA SI,DATA1+2 LEA DI,DATA2 MOV CL,2 ;將ASC碼轉(zhuǎn)換為十六進(jìn)制數(shù) LP1: MOV AL,[SI] SUB AL,30H CMP AL,9 JA LP2
22、 MOV [DI],AL INC DI INC SI DEC CL JZ LP3 JNZ LP1 LP2: SUB AL,7 MOV [DI],AL INC DI INC SI DEC CL JNZ LP1 ;將十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),并保存 LP3: LEA DI,DATA2 MOV AL,[D
23、I] MOV BL,[DI+1] MOV CL,4 SHL AL,CL ADD AL,BL MOV [DI],AL LEA SI,DATA3 XOR AH,AH MOV CL,100 DIV CL ;AH=AX%100,AL=AX/100 MOV [SI],AL ;保存百位數(shù) MOV AL,AH XOR
24、 AH,AH MOV CL,10 DIV CL MOV [SI+1],AL ;保存十位數(shù) MOV [SI+2],AH ;保存?zhèn)€位數(shù) ;屏幕顯示十進(jìn)制數(shù) LP4: MOV DL,[SI] ;取百位數(shù)送顯 OR DL,30H MOV AH,02H INT 21H MOV DL,[SI+1] ;取十位數(shù)送顯 OR DL,30H MOV
25、 AH,02H INT 21H MOV DL,[SI+2] ;取個位數(shù)送顯 OR DL,30H MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 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)換
26、表存放在起始地址為TABLE表中,轉(zhuǎn)換結(jié)果存放到起始地址為DATA2區(qū)域。假如待轉(zhuǎn)換的數(shù)不是十進(jìn)制數(shù),如此相應(yīng)結(jié)果單元內(nèi)容為00H。 STACK SEGMENT DB 256 DUP(?) STACK ENDS DATA SEGMENT DATA1 DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,'A','B','C','$' TABLE DB 00H,40H,01H,79H,02H,24H,03H,30H,04H,19H,05H,12H,06H,02H, 07H,78H,08H,0
27、0H,09H,18H,0AH,08H,0BH,03H,0CH,46H,0DH,21H, 0EH,06H,0FH,0EH ;實(shí)際數(shù)據(jù)定義必須在同一行 DATA2 DB 16 DUP(0) COUNT EQU 2 DATA ENDS CODE SEGMENT ASSUME SS:STACK,DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX LEA SI,DATA1 LEA BX,DATA2
28、 LEA DI,TABLE XOR AH,AH LP1: MOV AL,[SI] ;外循環(huán)DATA1指向下一個 INC SI MOV CX,16 ;內(nèi)循環(huán)TABLE 16次 LP2: CMP [DI],AL JE LP3 ADD DI,COUNT ;內(nèi)循環(huán)TABLE指向下一組 DEC CX JNZ LP2 MOV BYTE PTR
29、[BX],00H 假如不是十進(jìn)制數(shù),如此結(jié)果保存為00H INC BX CMP AL,'$' ;設(shè)置完畢標(biāo)志 JNZ LP1 JZ LP4 LP3: MOV AL,[DI+1] MOV [BX],AL ;轉(zhuǎn)換結(jié)果保存在DATA2中 INC BX LEA DI,TABLE CMP CL,0 JNZ LP1 LP4: MOV AH,4CH INT 21H CODE ENDS END START 16 / 16
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。