微機課設(shè) (修復(fù)的)_第1頁
微機課設(shè) (修復(fù)的)_第2頁
微機課設(shè) (修復(fù)的)_第3頁
微機課設(shè) (修復(fù)的)_第4頁
微機課設(shè) (修復(fù)的)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄1題目12算法分析12.1二進制數(shù)轉(zhuǎn)換成10進制數(shù)12.2二進制數(shù)轉(zhuǎn)換為 8 進制數(shù)12.3二進制數(shù)轉(zhuǎn)換為 16 進制數(shù)23流程圖23.1設(shè)計流程圖23.2程序流程圖43.3匯編程序54調(diào)試運行結(jié)果134.1調(diào)試運行結(jié)果如下圖所示:134.2 調(diào)試中遇到的問題15錯誤程序115錯誤程序2165小結(jié)16參考文獻18數(shù)制轉(zhuǎn)換1題目通過鍵盤輸入一個二進制數(shù),通過屏幕提示菜單選擇轉(zhuǎn)換成八進制,十進制或者十六進制數(shù)并顯示。2算法分析2.1二進制數(shù)轉(zhuǎn)換成10進制數(shù) 由二進制數(shù)轉(zhuǎn)換成十進制數(shù)的基本做法是,把二進制數(shù)首先寫成加權(quán)系數(shù)展開式,然后按十進制加法規(guī)則求和。這種做法稱為"按權(quán)相加&qu

2、ot;法。比如:1011.012=1*23+0*22+1*21+1*20+0*2-1+1*2-2 =(11.25)102.2二進制數(shù)轉(zhuǎn)換為 8 進制數(shù)由二進制數(shù)轉(zhuǎn)換成八進制數(shù)可以 3 位二進制位編為一組(不夠左側(cè)補0),然后從右邊開始每三位如下方式替換: 000 - 0, 001 - 1, 010 - 2, 011 - 3, 001 110 101 010 100 按照轉(zhuǎn)換方法對應(yīng)轉(zhuǎn)換   1   6   5   2   4所以:()2=(16524)82

3、.3二進制數(shù)轉(zhuǎn)換為 16 進制數(shù) 由二進制數(shù)要轉(zhuǎn)換為十六進制,就是以4位一段,分別轉(zhuǎn)換為十六進制。轉(zhuǎn)換為 16 進制0000 - 0, 0001 - 1, 0010 - 2, 0011 - 30100 - 4, 0101 - 5, 0110 - 6, 0111 - 71000 - 8, 1001 - 9, 1010 - A, 1011 - B1100 - C, 1101 - D, 1110 - E, 1111 F此時分組為 4 位二進制數(shù)為一組0010 1010 1001 0101 1010  2    A   &

4、#160;9    5    A所以: 3流程圖3.1設(shè)計流程圖 根據(jù)題意,設(shè)計流程圖如下: 開 始輸入二進制數(shù)八進制 NY十進制YN八進制數(shù) 十六進制數(shù)十進制數(shù)結(jié) 束 圖1 設(shè)計流程圖3.2 程序流程圖 根據(jù)題意,程序流程圖如下: 圖2 8進制轉(zhuǎn)換 圖3 16進制轉(zhuǎn)換 圖4 10進制轉(zhuǎn)換3.3匯編程序匯編程序如下:data segmentbuff1 db 17buff2 db ?buff3 db 17 dup(?)buff4 db 'O:1,D:2,H:3',0dh,0ah,'$'buff5

5、 db 48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70 buff6 db 0dh,0ah,'$'mes db 'please enter a binary number',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,mes ;取mes的偏移地址mov ah,09 int 21h ;在屏幕上顯示字符串lea dx,buff1 ;取buff1的偏移地址mov ah,0ahin

6、t 21h ;從鍵盤接收字符,并存放到緩沖區(qū)mov cl,buff2 ;取buff2的偏移地址xor dx,dx ;將dx清零lea si,buff3 ;取buff3的偏移地址loop1: shl dx,1 ;將dx左移一位mov al,si ;將si偏移地址對應(yīng)的值賦給alcmp al,'0' ;將al與0比較 jz loop2 ;若為0,則跳轉(zhuǎn)到loop2 inc dx ;若不為0,則dx+1loop2: inc si ;si+1loop loop1 mov bx,dx ;將dx的值賦給bxlea dx,buff6 ;取buff6的偏移地址mov ah,9 int 21h

7、;在屏幕上顯示字符串lea dx,buff4 ;取buff4的偏移地址mov ah,9int 21h ;在屏幕上顯示字符串mov ah,1int 21h ;按下任意鍵,將對應(yīng)字符的ASCII碼送到al,并在屏幕上顯示該字符。mov cx,ax ;將ax的值賦給cxlea dx,buff6 ;取buff6的偏移地址mov ah,9int 21h ;在屏幕上顯示字符串mov al,cl ;將cl的值賦給alcmp al,'1' ;將al與1做比較jz loop3 ;若為0,則跳轉(zhuǎn)到loop3cmp al,'2' ;將al與2做比較jz loop4 ;若為0,則跳轉(zhuǎn)到

8、loop4lea si,buff5 ;取buff5的偏移地址mov dx,bx ;將bx的值賦給dxand dx,0f000h ;取dx的高4位mov cl,0ch ;將cl賦值shr dx,cl ;將dx右移11位add si,dx ;將si與dx相加mov dl,si ;將si偏移地址對應(yīng)的值賦給dlmov ah,2int 21h ;將置入dl寄存器中的字符在屏幕上顯示輸出lea si,buff5 ;取buff5的偏移地址mov dx,bx ;將bx的值賦給dxand dx,0f00h ;取dx的高4位mov cl,8h ;將cl賦值shr dx,cl ;將dx右移8位add si,dx

9、;將si與dx相加mov dl,si ;將si偏移地址對應(yīng)的值賦給dlmov ah,2int 21h ;將置入dl寄存器中的字符在屏幕上顯示輸出lea si,buff5 ;取buff5的偏移地址mov dx,bx ;將bx的值賦給dxand dx,00f0h ;取dx的4-8位mov cl,4h ;將cl賦值shr dx,cl ;將dx右移4位add si,dx ;將si與dx做與mov dl,si ;將si偏移地址對應(yīng)的值賦給dlmov ah,2 int 21h ;將置入dl寄存器中的字符在屏幕上顯示輸出lea si,buff5 ;取buff5的偏移地址mov dx,bx ;將bx的值賦給d

10、xand dx,0fh ;取dx的低4位add si,dx ;將si與dx做與mov dl,si ;將si偏移地址對應(yīng)的值賦給dlmov ah,2int 21h ;將置入dl寄存器中的字符在屏幕上顯示輸出jmp loop5loop3:jmp loop6 loop4: mov ax,bx ;將bx賦值給axmov dx,0 ;將dx賦值mov cx,10000 ;將cx賦值call divdw mov dl,al ;將dl賦值add dl,30h ;將dl與30h相加mov ah,2 int 21h ;將置入dl寄存器的字符在屏幕上顯示輸出mov ax,cx ;將ax賦值mov dx,0 ;將d

11、x賦值mov cx,1000 ;將cx賦值call divdw mov dl,al ;將dl賦值add dl,30h ;將dl與30h相加mov ah,2 int 21h ;將置入dl寄存器的字符在屏幕上顯示輸出mov ax,cx ;將ax賦值mov dx,0 ;將dx賦值mov cx,100 ;將cx賦值call divdw mov dl,al ;將dl賦值add dl,30h ;將dl與30h相加mov ah,2 int 21h ;將置入dl寄存器的字符在屏幕上顯示輸出mov ax,cx ;將ax賦值mov dx,0 ;將dx賦值mov cx,10 ;將cx賦值call divdwmov

12、dl,al ;將dl賦值add dl,30h ;將dl與30h相加mov ah,2int 21h ;將置入dl寄存器的字符在屏幕上顯示輸出mov ax,cx ;將ax賦值mov dl,al ; 將dx賦值add dl,30h ;將dl與30h相加mov ah,2 int 21h ;將置入dl寄存器的字符在屏幕上顯示輸出jmp loop5 loop6: mov dx,bx ;將dx賦值and dx,1000h ;將dx與1000h做與mov cl,0fh ;將cl賦值shr dx,cl ;將dx右移16位add dl,30h ;將dl與30h相加mov ah,2int 21h ;將置入dl寄存器

13、的字符在屏幕上顯示輸出mov dx,bx ;將dx賦值and dx,7000h ;將dx與7000h做與mov cl,0ch ;將cl賦值shr dx,cl ;將dx右移11位add dl,30h ;將dl與30h相加mov ah,2int 21h ;將置入dl寄存器的字符在屏幕上顯示輸出mov dx,bx ;將dx賦值and dx,0e00h ;將dx與0e00h做與mov cl,9h ;將cl賦值shr dx,cl ;將dx右移9位add dl,30h ;將dl與30h相加mov ah,2 int 21h ;將置入dl寄存器的字符在屏幕上顯示輸出mov dx,bx ;將dx賦值and dx

14、,1c0h ;將dx與1c0h做與mov cl,6h ;將cl賦值shr dx,cl ;將dx右移6位add dl,30h ;將dl與30h相加mov ah,2int 21h ;將置入dl寄存器的字符在屏幕上顯示輸出mov dx,bx ;將dx賦值and dx,38h ;將dx與38h做與mov cl,3h ;將cl賦值shr dx,cl ;將dx右移3位add dl,30h ;將dl與30h相加mov ah,2 int 21h ;將置入dl寄存器的字符在屏幕上顯示輸出mov dx,bx ;將dx賦值and dx,7h ;將dx與7做與add dl,30h ;將dl與30h相加mov ah,2

15、 int 21h ;將置入dl寄存器的字符在屏幕上顯示輸出jmp loop5;=; 名稱:divdw; 功能:進行不會產(chǎn)生溢出的除法運算,被除數(shù)為dword型,除數(shù)為word型,結(jié)果為dword型;參數(shù):(ax)=dword型數(shù)據(jù)的低16位; (dx)=dword型數(shù)據(jù)的高16位; (cx)=除數(shù);返回:(dx)=結(jié)果的高16位,(ax)=結(jié)果的低16位;loop5:mov ah,1 int 21h ;按下任意鍵,將其對應(yīng)字符的ASCII碼送到al中 ,并在屏幕上顯示該字符。 mov ax,4c00hint 21h divdw proc push bx push ax mov ax,dx mo

16、v dx,0 div cx mov bx,ax pop ax div cx mov cx,dx mov dx,bx pop bxretendp code endsend start4調(diào)試運行結(jié)果4.1調(diào)試運行結(jié)果如下圖所示:圖5 請求輸入一個2進制數(shù) 圖6 鍵盤輸入一個2進制數(shù)圖7 按1則顯示8進制數(shù) 圖8 按2則顯示10進制數(shù)圖9 按3則顯示16進制數(shù)4.2 調(diào)試中遇到的問題 錯誤程序1圖10 錯誤提示錯誤代碼:mov cx,1000 call divdw mov dl,ax add dl,30h mov ah,2 int 21h更正后為:mov cx,1000 call divdw mov

17、 dl,al add dl,30h mov ah,2 int 21h錯誤原因分析:定義的類型不匹配,所以導(dǎo)致運行出錯。 錯誤程序2 圖11 錯誤提示錯誤代碼:mov al,cl cmp al,'1'jz loop6更改后為:mov al,clcmp al,'1'jz loop3loop3: jmp loop6 錯誤原因分析:跳轉(zhuǎn)的段落距離過大。5小結(jié)這次課設(shè)歷時兩個星期,在這兩個星期里我學到了很多的東西,不僅鞏固了以前學過的知識,而且學到了很多書本外的東西。初見題目時,心里還是感覺到有一點的茫然,因為不知道該從何處下手,不知道怎么去完成一份令自己滿意的課程設(shè)計。

18、后來想起了以前上課的時候,老師在講解一個程序之前總是先畫出程序的原理方框圖,這個看似簡單的過程其實是非常重要的,它不僅是我程序設(shè)計的提綱,更是我一步步克服難題的保證。其次,在做課程設(shè)計的過程中,我對于一些編程工具還處于一知半解的狀態(tài)下,在調(diào)試的過程中遇到了很多的困難,在同學、老師的幫助下,我試著去了解每個寄存器的內(nèi)容以確保程序的正確。通過這次課程設(shè)計,我懂得了理論與實際結(jié)合的重要性,只有理論知識是遠不夠的,只有把理論和實際相結(jié)合,從理論中得出結(jié)論,從而提高自己的實際動手能力和獨立思考能力才是課程設(shè)計的真正目的,在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的

溫馨提示

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

評論

0/150

提交評論