




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上微機原理實驗報告 實驗九 數碼轉換 姓名: 學號: 一、 實驗目的 1. 掌握計算機常用數據編碼之間的相互轉換方法。 2. 進一步熟悉DEBUG軟件的使用方法。 二、 實驗內容 1. ASC碼轉換為非壓縮型BCD碼 編寫并調試正確的匯編語言源程序,使之實現:設從鍵盤輸入一串十進制數,存入DATA1單元中,按回車停止鍵盤輸入。將其轉換成非壓縮型(非組合型) BCD碼后,再存入DATA2開始的單元中。若輸入的不是十進制數,則相應單元中存放FFH。調試程序,用D命令檢查執(zhí)行結果。 2. BCD碼轉換為二進制數 編寫并調試正確的匯編語言源程序,使之將一個16位存儲單元中存放的
2、4位BCD碼DATA1,轉換成二進制數存入DATA2字單元中調試程序,用D命令檢查執(zhí)行結果。 3. 十六進制數轉換為ASC碼 編寫并調試正確的匯編語言源程序,使之將內存DATA1字單元中存放的4位十六進制數,轉換為ASC碼后分別存入DATA2為起始地址的4個單元中,低位數存在低地址的字節(jié)中,并在屏幕上顯示出來。 三、 實驗預習 1. 復習材料中有關計算機數據編碼部分的內容。 2. 按要求編寫程序。 四、 實驗步驟 1. 編輯源文件,經匯編連接產生EXE文件。 2. 用DEBUG調試、檢查、修改程序。 五、 實驗內容實驗內容(一) ASC碼轉換為非壓縮型BCD碼STACK SEGMENT PAR
3、A STACK 'STACK' DB 256 DUP(?) ;為堆棧段留出256個字節(jié)單位 STACK ENDS DATA SEGMENT PARA 'DATA' ;定義數據段 DATA1 DB 32 ;緩沖區(qū)最大長度=最多鍵入字符個數(31)+1 *注:+1為回車 DB ? ;存入的實際輸入字符個數,dos返回時自動填入 DB 32 DUP(?) ;輸入ACSII碼緩沖區(qū) (31+1) *注:+1為回車鍵 DATA2 DB 32 DUP(?) ;轉換后BCD碼的緩沖區(qū) (31+1) *注:+1為回車 DATA ENDS CODE SEGMENT ;定義代碼段
4、ASSUME SS:STACK ASSUME CS:CODE ASSUME DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,DATA1 ;規(guī)定:DX存放輸入字符串的緩沖區(qū)首地址 MOV AH,0AH INT 21H ;字符串輸入 AL=鍵入的ASCII碼 LEA SI,DATA1 ;SI存放輸入字符串的緩沖區(qū)DATA1首地址 LEA DI,DATA2 ;DI存放DATA2首地址 INC SI MOV CL,SI ;取輸入字符串長度 INC SI ;指向第一個輸入字符 LP1: MOV AL,SI SUB AL,30H ;輸入的字符存為ASCII碼,將其轉
5、換成十進制數 CMP AL,0 ;若AL<0(AL-0<0),跳轉到LP2 JL LP2 CMP AL,9 ;若AL>9(AL-9>0),跳轉到LP2 JG LP2 MOV BL,AL ;將AL->BL MOV DI,BL ;將結果存到DATA2開始的單元中 INC DI INC SI DEC CL JMP LP1 LP2: MOV AL,0FFH ;若輸入的不是十進制數,在相應的單元中存放FFH ;以字母開頭的十六進制數前面需加'0' MOV BL,AL ;將AL->BL MOV DI,BL INC DI INC SI DEC CL ;CL
6、=CL-1 JNZ LP1 ;CL=0,執(zhí)行LP3中的語句 LP3: MOV AH,4CH INT 21H CODE ENDS END START 流程圖開始 輸入一串十進數,n個數LEA SI,DATA1LEA DI,DATA2CL>0? N Y AL=SIAL-30<9 AND AL-30>O? N YALß0FF ,BLßAL,DIßBLBLßAL ,DIßBLBLßAL ,DIßBLSI+1CL=CL-1DI+1CL=CL-1結束實驗內容(二):BCD碼轉換為十六進制碼DATA SEGMENT DA
7、TA1 DW 2497H 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 ;設置乘數10 MOV CL,4 ;指4位BCD碼 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,D
8、I DEC CH ;循環(huán)次數減1 JNZ LP ;以上完成循環(huán)三次,個位不用再*10,所以不用最后不用放入循環(huán)中去 ROL AX,CL ;取個位數字 AND AX,0FH ;屏蔽高位 ADD AX,BX ;進行累加,直接將最后的累加結果放到AX中 MOV DATA2,AX MOV AH,4CH INT 21H CODE ENDS END START2497H=(09C1)8流程圖實驗(三):十六進制轉換為ASCII碼STACK SEGMENT DB 256 DUP(?) STACK ENDS DATA SEGMENT DATA1 DB 24H,06DH DATA2 DB 4 DUP(?) ;存
9、放ASCII碼 JUMP DB 4 DUP(?) ;4位十六進制數分別存放在DATA3的4個字節(jié)中 DATA ENDS CODE SEGMENT ASSUME SS:STACK,DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX LEA SI,DATA1 LEA DI,JUMP MOV CL,2 ;循環(huán)2次,取兩次兩位十六進制數 LP0: MOV AL,SI ;取2位十六進制數 AND AL,0F0H ;低四位為零 ROR AL,4 ;右移4位 相當于除以16 MOV DI,AL ;高位數存放在高地址字節(jié)中 INC DI MOV AL,SI ;取2位十六進
10、制數 AND AL,0FH ;高四位為零 MOV DI,AL ;低位數存放在低地址字節(jié)中 INC SI INC DI DEC CL JNZ LP0 LEA SI,JUMP ;SI=JUMP的首地址偏移量 LEA DI,DATA2 ;DI=DATA2的首地址偏移量 MOV CL,4 ;因為是四位十六進制數,所以設置為循環(huán)4次 LP1: MOV AL,SI ;取JUMP中的十六進制數 CMP AL,9 JG LP3 ;若AL>9(AL-9>0),跳轉到LP3 ADD AL,30H ;09H+30H=ASCII JMP LP3 LP2: ADD AL,37H ;AFH+30H=ASCII
11、 LP3: MOV DI,AL ;將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流程圖六實驗習題與思考1. 編程實現:從鍵盤上輸入兩位十六進制數,轉換成十進制數后在屏幕上顯示出來。 源代碼:STACK SEGMENT DB 256 DUP(?) STACK ENDS DATA SEGMENT DATA1 DB 5,?,2 DUP(?) DATA2 DB 2
12、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 MOV DI,AL INC DI INC SI DEC CL JZ LP3 JNZ LP1 LP2: SUB AL,7
13、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 CL,10 DIV CL MOV SI+1,AL ;保存十位數 MOV SI+2,AH ;保存?zhèn)€位數;屏幕顯示十進制數 L
14、P4: 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 START2. 十進制轉換為七段碼。 提示:為了在七段顯示器上顯示十進制數,需要把十進制數轉換為七段代碼。轉換可采用查表法。設需要轉換的十進制數已存放在起始地址為DATA1區(qū)域中,七段碼轉換表存放在起始地址為TABLE表中,轉換結果存放
15、到起始地址為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,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 ENDSCODE 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,C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工約定違約協(xié)議書
- 勞務超齡免責協(xié)議書
- 原告被告和解協(xié)議書
- 員工離職管理協(xié)議書
- 醫(yī)用耗材供應協(xié)議書
- 員工崗位股份協(xié)議書
- 公司經營占股協(xié)議書
- 賣家模特保密協(xié)議書
- 合伙股份退出協(xié)議書
- 2025年環(huán)境監(jiān)測物聯網技術在城市能源消耗監(jiān)測中的應用報告
- 初中生如何考后試卷分析和總結寫法
- 思考,快與慢課件完整版
- JJF 1753-2019醫(yī)用體外壓力脈沖碎石機校準規(guī)范
- 體育商業(yè)綜合體規(guī)劃方案
- 防雷和接地安裝施工組織方案
- 管理學原理第六章 指揮課件
- 工序標準工時及產能計算表
- 生產中的七大浪費(PPT35頁)
- YY∕T 0617-2021 一次性使用人體末梢血樣采集容器
- 5以內的加減法(可直接打印)
- 車駕管知識題庫查驗業(yè)務知識試題庫(附答案)
評論
0/150
提交評論