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

下載本文檔

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

文檔簡(jiǎn)介

1、目 錄1題目12算法分析12.1二進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制數(shù)12.2二進(jìn)制數(shù)轉(zhuǎn)換為 8 進(jìn)制數(shù)12.3二進(jìn)制數(shù)轉(zhuǎn)換為 16 進(jìn)制數(shù)23流程圖23.1設(shè)計(jì)流程圖23.2程序流程圖43.3匯編程序54調(diào)試運(yùn)行結(jié)果134.1調(diào)試運(yùn)行結(jié)果如下圖所示:134.2 調(diào)試中遇到的問(wèn)題15錯(cuò)誤程序115錯(cuò)誤程序2165小結(jié)16參考文獻(xiàn)18數(shù)制轉(zhuǎn)換1題目通過(guò)鍵盤輸入一個(gè)二進(jìn)制數(shù),通過(guò)屏幕提示菜單選擇轉(zhuǎn)換成八進(jìn)制,十進(jìn)制或者十六進(jìn)制數(shù)并顯示。2算法分析2.1二進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制數(shù) 由二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的基本做法是,把二進(jìn)制數(shù)首先寫(xiě)成加權(quán)系數(shù)展開(kāi)式,然后按十進(jìn)制加法規(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二進(jìn)制數(shù)轉(zhuǎn)換為 8 進(jìn)制數(shù)由二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù)可以 3 位二進(jìn)制位編為一組(不夠左側(cè)補(bǔ)0),然后從右邊開(kāi)始每三位如下方式替換: 000 - 0, 001 - 1, 010 - 2, 011 - 3, 001 110 101 010 100 按照轉(zhuǎn)換方法對(duì)應(yīng)轉(zhuǎn)換   1   6   5   2   4所以:()2=(16524)82

3、.3二進(jìn)制數(shù)轉(zhuǎn)換為 16 進(jìn)制數(shù) 由二進(jìn)制數(shù)要轉(zhuǎn)換為十六進(jìn)制,就是以4位一段,分別轉(zhuǎn)換為十六進(jìn)制。轉(zhuǎn)換為 16 進(jìn)制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此時(shí)分組為 4 位二進(jìn)制數(shù)為一組0010 1010 1001 0101 1010  2    A   &

4、#160;9    5    A所以: 3流程圖3.1設(shè)計(jì)流程圖 根據(jù)題意,設(shè)計(jì)流程圖如下: 開(kāi) 始輸入二進(jìn)制數(shù)八進(jìn)制 NY十進(jìn)制YN八進(jìn)制數(shù) 十六進(jìn)制數(shù)十進(jìn)制數(shù)結(jié) 束 圖1 設(shè)計(jì)流程圖3.2 程序流程圖 根據(jù)題意,程序流程圖如下: 圖2 8進(jìn)制轉(zhuǎn)換 圖3 16進(jìn)制轉(zhuǎn)換 圖4 10進(jìn)制轉(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偏移地址對(duì)應(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 ;按下任意鍵,將對(duì)應(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偏移地址對(duì)應(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偏移地址對(duì)應(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偏移地址對(duì)應(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偏移地址對(duì)應(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; 功能:進(jìn)行不會(huì)產(chǎn)生溢出的除法運(yù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 ;按下任意鍵,將其對(duì)應(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)試運(yùn)行結(jié)果4.1調(diào)試運(yùn)行結(jié)果如下圖所示:圖5 請(qǐng)求輸入一個(gè)2進(jìn)制數(shù) 圖6 鍵盤輸入一個(gè)2進(jìn)制數(shù)圖7 按1則顯示8進(jìn)制數(shù) 圖8 按2則顯示10進(jìn)制數(shù)圖9 按3則顯示16進(jìn)制數(shù)4.2 調(diào)試中遇到的問(wèn)題 錯(cuò)誤程序1圖10 錯(cuò)誤提示錯(cuò)誤代碼: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錯(cuò)誤原因分析:定義的類型不匹配,所以導(dǎo)致運(yùn)行出錯(cuò)。 錯(cuò)誤程序2 圖11 錯(cuò)誤提示錯(cuò)誤代碼:mov al,cl cmp al,'1'jz loop6更改后為:mov al,clcmp al,'1'jz loop3loop3: jmp loop6 錯(cuò)誤原因分析:跳轉(zhuǎn)的段落距離過(guò)大。5小結(jié)這次課設(shè)歷時(shí)兩個(gè)星期,在這兩個(gè)星期里我學(xué)到了很多的東西,不僅鞏固了以前學(xué)過(guò)的知識(shí),而且學(xué)到了很多書(shū)本外的東西。初見(jiàn)題目時(shí),心里還是感覺(jué)到有一點(diǎn)的茫然,因?yàn)椴恢涝搹暮翁幭率郑恢涝趺慈ネ瓿梢环萘钭约簼M意的課程設(shè)計(jì)。

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論