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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 微機實驗九 數碼轉換實驗目的1. 掌握計算機常用數據編碼之間的相互轉換方法。2. 進一步熟悉DEBUG軟件的使用方法1、 實驗內容1. ACSII碼轉換為非壓縮型BCD碼編寫并調試正確的匯編語言源程序,使之實現:設從鍵盤輸入一串十進制數,存入DATA1單元中,按回車停止鍵盤輸入。將其轉換成非壓縮性(非組合型)BCD碼后,再存入DATA2開始的單元中。若輸入的不是十進制數,則相應單元中存放FFH。調試程序,用D命令檢查執(zhí)行結果。實驗代碼:1.DATA SEGMENT;定義數據段 DATA1 DB 21,?,21 DUP(?) ;建立一個內存區(qū),第二個數存放最大字符數 DATA2 DB 21 D

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

3、 CH,0 INC SI ;指向所輸入的數 LEA DI,DATA2 ;DI存放DATA2的首地址LP1: MOV AL,SI ;將輸入的數存放到AL中 CMP AL,30H ;AL與30H比較 JC LP2 ;AL<30H,則跳LP2 CMP AL,39H ;AL與39H比較 JA LP2 ;AL>39H,則跳LP2(JG與JA比較) SUB AL,30H ;將輸入的字符轉換成ASCII碼 MOV BL,AL ;ALBLSAVE: MOV DI,BL ;BLDS:DI INC SI ;SI=SI+1 INC DI ;DI=DI+1 LOOP LP1 ;循環(huán)LP1 JMP EXIT

4、 ;跳轉到EXITLP2: MOV BL,0FFH ;如果輸入的不是十進制數,則在相應的單元中存放FFH JMP SAVE ;跳轉到SAVEEXIT:MOV AH,4CH INT 21HCODE ENDSEND START 2. BCD碼轉換為二進制碼編寫并調試正確的匯編語言源程序,使之將一個16位存儲單元中存放的4位BCD碼DATA1,轉換成2進制后存入DATA2字單元中。調試程序,用D命令檢查執(zhí)行結果。代碼:STACK SEGMENTDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DW 1234HDATA2 DW ?DATA ENDS CODE SEGME

5、NT ASSUME SS:STACK,CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX XOR BX,BX ;累加單元清0(BX=0) MOV SI,0AH ;設置乘數10 MOV CL,4 MOV CH,3 ;設置循環(huán)次數3 MOV AX,DATA1 ;取十進制數 LP: ROL AX,CL ;取數字 MOV DI,AX ;保存當前AX值 AND AX,0FH ;屏蔽高位 ADD AX,BX ;累加 MUL SI MOV BX,AX MOV AX,DI DEC CH ;循環(huán)次數減1 JNZ LP ROL AX,CL ;取個位數字 AND AX,0FH ;屏

6、蔽高位 ADD AX,BX ;累加 MOV DATA2,AX MOV AH,4CH INT 21HCODE ENDSEND START 3. 十六進制數轉換為ACSII碼編寫并調試正確的匯編語言源程序,使之將內存DATA1字單元中存放的4位十六進制數,轉換為ASCII碼后分別存入DATA2為起始地址的4個單元中,低位數存在低地址的字節(jié)中,并在屏幕上顯示出。代碼:STACK SEGMENTDB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DB 12H,02CH ;4位十六進制數DATA2 DB 5 DUP(?) ;存放ASC碼DATA3 DB 4 DUP(?) ;

7、4位十六進制數分別存放在DATA3的4個字節(jié)中LFCR DB 0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUME SS:STACK,DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXLEA SI,DATA1LEA DI,DATA3MOV CL,2 ;循環(huán)2次LP1: MOV AL,SI ;取2位十六進制數AND AL,0F0H ;屏蔽低四位ROR AL,4 ;右移4位MOV DI,AL ;高位數存放在高地址字節(jié)中INC DIMOV AL,SI ;取2位十六進制數AND AL,0FH ;屏蔽高四位MOV DI,AL ;低位

8、數存放在低地址字節(jié)中INC SIINC DIDEC CLJNZ LP1LEA SI,DATA3 ;將DATA3的首地址偏移量賦給SILEA DI,DATA2 ;將DATA2的首地址偏移量賦給DIMOV CL,4 ;循環(huán)4次LP2: MOV AL,SI ;取DATA3中的十六進制數CMP AL,9JG LP3 ;若AL>9,跳轉到LP3ADD AL,30H ;十六進制數0-9->ASC碼,要加30HJMP LP4LP3: ADD AL,37H ;十六進制數A-F->ASC碼,要加37HLP4: MOV DI,AL ;將ASC碼依次存入DATA2中INC DIINC SIDEC

9、CLJNZ LP2MOV AL,'$' ;設置顯示結束標志MOV DI+1,AL ;存入DATA2中LEA DX,LFCRMOV AH,09HINT 21H ;回車換行MOV DX,OFFSET DATA2MOV AH,09HINT 21H ;顯示ASC碼MOV AH,4CHINT 21HCODE ENDSEND START 2、 實驗步驟1. 編輯源文件,經匯編連接產生EXE文件。2. 用DEBUG調試、檢查、修改程序。3.3、 實驗習題與思考1. 編程實現:從鍵盤上輸入兩位十六進制數,轉換成十進制數后顯示在屏幕上。源代碼: STACK SEGMENT DB 256 DUP(

10、?) 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:MOV AX,DATA MOV DS,AX LEA DX,DATA1 MOV AH,0AH INT 21H ;輸入字符串 LEA SI,DATA1+2 LEA DI,DATA2 MOV CL,2 ;將ASC碼轉換為十六進制數 LP1: MOV AL,SI SUB AL,30H CMP AL,9 JA LP2

11、 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 ;將十六進制數轉換成十進制數,并保存 LP3: LEA DI,DATA2 MOV AL,DI 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 ;保存百位數 MOV AL,AH XOR AH,AH MOV

12、 CL,10 DIV CL MOV SI+1,AL ;保存十位數 MOV SI+2,AH ;保存?zhèn)€位數 ;屏幕顯示十進制數 LP4: MOV DL,SI ;取百位數送顯 OR DL,30H MOV AH,02H INT 21H MOV DL,SI+1 ;取十位數送顯 OR DL,30H MOV AH,02H INT 21H MOV DL,SI+2 ;取個位數送顯 OR DL,30H MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 運行圖:輸入:輸出: 2. 十進制數轉換為七段碼。為了在七段顯示器上顯示十進制數,需要把十進制數轉

13、換為七段代碼。轉換可采用查表法。設需要轉換的十進制數已存放在起始地址為DATA1區(qū)域中,七段代碼轉換表存放在起始地址為TABLE表中,轉換結果存放到起始地址為DATA2區(qū)域。若待轉換的數不是十進制數,則相應結果單元內容為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,

14、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 ;實際數據定義必須在同一行 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 LEA DI,TABLE XOR AH,AH LP1: MOV AL,SI ;外循環(huán)DATA1指向下一個 INC SI MOV CX,16 ;內循環(huán)TABLE 16次 LP2: CMP DI,AL JE LP3 ADD DI,COUNT ;內循環(huán)TABLE指向下一組 DEC

溫馨提示

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

評論

0/150

提交評論