微機(jī)原理課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)排序名次_第1頁(yè)
微機(jī)原理課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)排序名次_第2頁(yè)
微機(jī)原理課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)排序名次_第3頁(yè)
微機(jī)原理課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)排序名次_第4頁(yè)
微機(jī)原理課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)排序名次_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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、課程設(shè)計(jì)姓名: xx 班級(jí): xxxxx 學(xué)號(hào): xxxxxxxxxx 2011 年 7 月 8 日 目的: 結(jié)合微型計(jì)算機(jī)原理課程的學(xué)習(xí),進(jìn)一步鞏固已學(xué)的知識(shí),同時(shí)針對(duì)計(jì)算機(jī)原理知識(shí)的具體應(yīng)用,學(xué)會(huì)對(duì)系統(tǒng)中dos和bios的使用。學(xué)會(huì)使用屏幕編輯程序edit,弄懂匯編程序的上級(jí)過(guò)程以及如何運(yùn)用debug軟件進(jìn)行匯編程序的調(diào)試。內(nèi)容與要求:1 字符串匹配設(shè)計(jì)為掌握提示信息的設(shè)置方法及讀取鍵入信息的方法,編寫(xiě)程序?qū)崿F(xiàn)兩個(gè)字符串比較,如相同則顯示“match”,否則顯示“no match”。2 從鍵盤輸入數(shù)據(jù)并顯示的設(shè)計(jì)為掌握鍵盤接受數(shù)據(jù)的方法,并了解將鍵盤數(shù)據(jù)顯示時(shí)必須轉(zhuǎn)換為ascii碼的原理,

2、編寫(xiě)程序,將鍵盤接受到的四位十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換為等值的二進(jìn)制數(shù)顯示。3 響鈴設(shè)計(jì)為掌握響鈴的使用方法,編寫(xiě)程序,從鍵盤接受輸入字符,如是數(shù)字n則響鈴n此,如不是數(shù)字則不響。4 將鍵盤輸入的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母的設(shè)計(jì)為了解小寫(xiě)字母和大寫(xiě)字母在計(jì)算機(jī)內(nèi)的表示方法,并學(xué)習(xí)如何進(jìn)行轉(zhuǎn)換,編寫(xiě)程序,接受鍵盤字符,并將其中的小寫(xiě)字母轉(zhuǎn)變?yōu)榇髮?xiě)字母,然后顯示在屏幕上。5 學(xué)生成績(jī)名次表設(shè)計(jì)為進(jìn)一步熟悉排序方法,編寫(xiě)程序,將100以內(nèi)的30個(gè)成績(jī)存入首址為1000h的存儲(chǔ)區(qū)中。1000h+i表示學(xué)號(hào)為i的學(xué)生成績(jī)。編寫(xiě)程序使得在2000h開(kāi)始的區(qū)域排出名次表,2000h+i為學(xué)號(hào)i的學(xué)生的名次。 下面著重介紹

3、程序5學(xué)生成績(jī)名次表設(shè)計(jì):流程圖: 主程序流程圖 scan子函數(shù)程序流程圖程序代碼及注釋:crlf macro ;宏定義,回車換行 mov ah,02h mov dl,0dh int 21h mov ah,02h mov dl,0ah int 21hendmdata segmentstunum equ 30 ;學(xué)生數(shù)mess1 db please input 30 score,0dh,0ah,$ ;提示信息error db input error,try again,0dh,0ah,$ ;報(bào)錯(cuò)信息mess2 db the order is:,0dh,0ah,$emark db ? ;報(bào)錯(cuò)標(biāo)志

4、org 1000h ;存放成績(jī)地址score db 30 dup(?) ;成績(jī)表 org 2000h ;存放名次地址sequ db 30 dup(?) ;名次表data endsstack segmentsta dw 32 dup(?)top dw ?stack endscode segmentassume cs:code,ds:data,es:data,ss:stackstart: mov ax,data mov ds,ax mov es,ax mov sp,top mov ah,09h ;顯示提示信息 mov dx,offset mess1 int 21h mov si,offset sc

5、ore ;成績(jī)表首址 mov cx,stunum mov emark,0 ;報(bào)錯(cuò)標(biāo)志清0 uuu: call getnum ;調(diào)用子函數(shù)讀取成績(jī) cmp emark,01h ;判斷是否出錯(cuò) je start ;出錯(cuò)則重新開(kāi)始 mov si,dl ;沒(méi)出錯(cuò)則存入成績(jī) inc si ;指向下一個(gè)成績(jī)單元地址 loop uuu ;判斷30個(gè)成績(jī)是否讀取完 mov cx,stunum mov di,offset sequ ;名次表首址vvv: call scan ;調(diào)用掃描子程序 mov al,stunum ;學(xué)生總數(shù) sub al,cl ;計(jì)算名次 inc al mov bx,dx ;學(xué)號(hào) push

6、 ax ;將名次轉(zhuǎn)換成壓縮bcd碼方便顯示 push bx push cx xor ah,ah mov bh,0ah div bh mov cl,4 shl al,cl add al,ah mov dh,al pop cx pop bx pop ax mov di+bx,dh ;存入名次 loop vvv ;判斷是否存完 mov ah,09h ;顯示名次提示信息 lea dx,mess2 int 21h mov cx,stunum mov si,offset sequ www: mov al,si call dispi ;調(diào)用子函數(shù)顯示名次 push dx push ax mov ah,02

7、;顯示空格 mov dl,20h int 21h pop ax pop dx inc si ;指向名次表的下一個(gè)地址 loop www ;判斷是否輸出所有名次 mov ah,4ch ;返回dos int 21h scan proc near ;掃面子函數(shù),沒(méi)調(diào)用一遍,找出成績(jī)表;中最高成績(jī),記錄其學(xué)號(hào),并將此成績(jī);清0 push cx mov cx,stunum mov al,00h mov bx,offset score mov si,bx ccc: cmp al,si jae jjj mov al,si mov dx,si sub dx,bx jjj: inc si loop ccc ad

8、d bx,dx mov byte ptr bx,00h pop cx retscan endpdispi proc near ;顯示子程序 push cx mov bl,al ;顯示高4位 mov dl,bl mov cl,04 rol dl,cl and dl,0fh call displ mov dl,bl ;顯示低4位 and dl,0fh call displ pop cx retdispi endpdispl proc near ;將名次轉(zhuǎn)換成對(duì)應(yīng)的ascii碼值并顯示 add dl,30h mov ah,02h int 21h ret displ endp getnum proc

9、near ;讀取成績(jī)子函數(shù) push cx xor dx,dx ;清0,用于存放成績(jī)ggg: mov ah,01h int 21h ;鍵盤字符輸入 cmp al,0dh jz rrr ;如果是回車則結(jié)束 sub al,30h jb err ;小于0則報(bào)錯(cuò) cmp al,09h jbe gets ;如果在09之間則存成績(jī)至dx jmp err ;否則報(bào)錯(cuò)gets: mov cl,04 shl dx,cl ;將dx中已有數(shù)值左移四位 xor ah,ah add dx,ax ;緊接著將數(shù)據(jù)存在dx中低四位 jmp ggg ;跳轉(zhuǎn)繼續(xù)讀取數(shù)據(jù)err: mov ah,09h ;顯示報(bào)錯(cuò)信息 mov dx

10、,offset error int 21h mov emark,01h ;報(bào)錯(cuò)標(biāo)志置1rrr: push dx crlf ;回車換行 pop dx pop cx ret getnum endpcode ends end start心得體會(huì):在為期一周的微機(jī)原理課程設(shè)計(jì)中,通過(guò)查閱書(shū)籍,上網(wǎng)收集資料以及向老師和同學(xué)請(qǐng)教,我完成了老師定下的任務(wù)。在此次課程設(shè)計(jì)過(guò)程中感受頗深。這一周,可以說(shuō)是苦多于甜,但是可以學(xué)到很多東西,同時(shí)鞏固了以前所學(xué)過(guò)的知識(shí)。以前在上課的時(shí)候,老師經(jīng)常強(qiáng)調(diào)在寫(xiě)一個(gè)程序的時(shí)候,一定要事先把程序原理方框圖化出來(lái),但是我開(kāi)始總覺(jué)得這樣做沒(méi)必要,很浪費(fèi)時(shí)間。但是,這次課程設(shè)計(jì)完全改

11、變了我以前的那種錯(cuò)誤的認(rèn)識(shí),以前我接觸的那些程序都是很短、很基礎(chǔ)的,但是在課程設(shè)計(jì)中碰到的程序較復(fù)雜,畫(huà)程序方框圖是很有必要的。因?yàn)橥ㄟ^(guò)程序方框圖,在做設(shè)計(jì)的過(guò)程中,我們每一步要做什么,每一步要完成什么任務(wù)都有一個(gè)很清楚的思路,而且在程序測(cè)試的過(guò)程中也有利于查錯(cuò)。在設(shè)計(jì)過(guò)程中遇到了不少的麻煩,最典型的是由于程序相對(duì)較大,在用jb,ja等條件跳轉(zhuǎn)語(yǔ)句時(shí)出項(xiàng)了超出跳轉(zhuǎn)范圍的情況,這就給程序設(shè)計(jì)帶來(lái)了一些困難。由于之前都沒(méi)遇到過(guò)這樣的問(wèn)題,所以剛開(kāi)始遇到的時(shí)候有點(diǎn)棘手,不知道該從哪下手解決此問(wèn)題,以至于都有了放棄該課題的想法。但是又覺(jué)得不值得,寫(xiě)了這么長(zhǎng)的程序就因?yàn)檫@一個(gè)小問(wèn)題而放棄了實(shí)在是說(shuō)不過(guò)去

12、,于是就靜下新來(lái)查閱課本,發(fā)現(xiàn)這些條件跳轉(zhuǎn)語(yǔ)句的跳轉(zhuǎn)范圍只能在-128b-+127b之間,而無(wú)條件跳轉(zhuǎn)指令jmp則不受此約束,于是我添加了一個(gè)無(wú)條件跳轉(zhuǎn)語(yǔ)句,通過(guò)條件跳轉(zhuǎn)語(yǔ)句先跳轉(zhuǎn)到該無(wú)條件跳轉(zhuǎn)語(yǔ)句,再通過(guò) jmp跳轉(zhuǎn)到需要的地方,于是問(wèn)題就迎刃而解。同過(guò)這一個(gè)小小的問(wèn)題也暴露出了自身的問(wèn)題:對(duì)課本知識(shí)掌握不牢固,只了解指令的基本功能卻忽略了它的約束條件。還有一些問(wèn)題,比如為了顯示方便,需把16進(jìn)制數(shù)轉(zhuǎn)化成10進(jìn)制數(shù)顯示,在進(jìn)行ascii碼值轉(zhuǎn)換時(shí)也遇到了問(wèn)題,af不能正確顯示,通過(guò)與同學(xué)討論也是自己的疏忽導(dǎo)致的。這不是第一次用匯編語(yǔ)言來(lái)寫(xiě)程序,平時(shí)做了很多實(shí)驗(yàn),寫(xiě)了很多小程序。但這次是一個(gè)綜合的程序,平時(shí)的一些程序稍微改動(dòng)都可以作為子程序用到,這大大方便了我的設(shè)計(jì),為我節(jié)省了很多的時(shí)間。在這次課程設(shè)計(jì)中,我真正體會(huì)到了合作的重要性,遇到很多問(wèn)題時(shí),當(dāng)我看書(shū)查資料不能解決時(shí),去找同

溫馨提示

  • 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)論