中斷應(yīng)用程序設(shè)計(匯編)_第1頁
中斷應(yīng)用程序設(shè)計(匯編)_第2頁
中斷應(yīng)用程序設(shè)計(匯編)_第3頁
中斷應(yīng)用程序設(shè)計(匯編)_第4頁
中斷應(yīng)用程序設(shè)計(匯編)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

-.z.課程設(shè)計報告課程名稱匯編語言程序設(shè)計課題名稱中斷駐留程序?qū)I(yè)計算機科學(xué)與技術(shù)班級計算機學(xué)號201018姓名指導(dǎo)教師唐北平2013年1月13日**工程學(xué)院課程設(shè)計任務(wù)書課程名稱匯編語言程序設(shè)計課題中斷駐留程序?qū)I(yè)班級計算機1學(xué)生**學(xué)號208指導(dǎo)教師唐北平審批任務(wù)書下達(dá)日期2013年1月5日任務(wù)完成日期2013年1月13日一、設(shè)計內(nèi)容與設(shè)計要求1.設(shè)計內(nèi)容:通過本周的課程設(shè)計,學(xué)生能夠穩(wěn)固所學(xué)的根底知識,并能夠使學(xué)生更加熟練運用匯編程序設(shè)計語言來掌握綜合匯編程序設(shè)計的方法和過程,以及為設(shè)計其它應(yīng)用軟件提供幫助,進而提高學(xué)生的軟件設(shè)計能力。(1)、編制一計算比賽成績的程序,要求完成以下功能:a、9名評委,每個評委給分范圍為0~100〔整數(shù)〕;b、9名評委給分中,去掉一個最高分和一個最低分,剩余7名評委的平均分即為參賽者的得分〔準(zhǔn)確到小數(shù)點二位〕;c、將得分在光標(biāo)位置處顯示出來。(2)、編制一程序,要求接收從鍵盤輸入的一個班的學(xué)生成績,并存放于30字的grade數(shù)組中,各數(shù)據(jù)的格式為:**,成績1,成績2,…,成績5然后根據(jù)grade中的學(xué)生成績,把學(xué)生名次填入rank數(shù)據(jù)組中,并顯示出來,格式為:**,名次(3)、利用INT1CH〔大約每秒中斷18.2次〕編寫一個中斷駐留程序,要求在屏幕的右上角顯示計算機中當(dāng)前系統(tǒng)時間,顯示格式為時:分:秒:1/100秒(4)、輸入一個菱形的兩條對角線長,在屏幕上用‘*’號畫出一個彩色的菱形。(5)、設(shè)置圖形方式并顯示彩條,要求:選擇背風(fēng)光為藍(lán)色,調(diào)色板為0,然后每行顯示一種顏色,每四行重復(fù)一次,一直到整個屏幕都顯示出彩條2.設(shè)計要求:掌握構(gòu)造化程序設(shè)計的主體思想,以自頂向下逐步求精的方法編制程序解決一些實際的問題,為將來編寫軟件積累一些典型的案例處理經(jīng)歷。〔1〕、設(shè)計正確,方案合理?!?〕、界面友好,使用方便?!?〕、程序精煉,構(gòu)造清晰。〔4〕、設(shè)計報告5000字以上,含程序設(shè)計說明,用戶使用說明,源程序清單及程序框圖。〔5〕、上機演示?!?〕、按**順序選課題號,并在規(guī)定的時間內(nèi)單獨完成相關(guān)課題的匯編源程序編寫、調(diào)整和運行。源程序及編譯生成各文件均保存在軟盤中;〔7〕、按本任務(wù)書的要求,按附錄的要求編寫"課程設(shè)計報告"〔Word文檔格式〕。并用A4的復(fù)印紙打印并裝訂;二、進度安排第19周:星期1星期2星期3星期4附:課程設(shè)計報告裝訂順序:封面、任務(wù)書、目錄、正文、評分、附件〔A4大小的圖紙及程序清單〕。正文的格式:一級標(biāo)題用3號黑體,二級標(biāo)題用四號宋體加粗,正文用小四號宋體;行距為22。正文的內(nèi)容:一、課題的主要功能;二、課題的功能模塊的劃分〔要求畫出模塊圖〕;三、主要功能的實現(xiàn)〔至少要有一個主要模塊的流程圖〕;四、程序調(diào)試;五、總結(jié);六、附件〔所有程序的原代碼,要求對程序?qū)懗霰匾淖⑨尅?。正文總字?jǐn)?shù)要求在5000字以上〔不含程序原代碼〕。目錄一.課題的主要功能…………1二.課題的功能模塊劃分……1三.主要功能的實現(xiàn)…………2四.程序調(diào)試…………………4五.總結(jié)……………………5六.附件…………………7-.z.一.課題的主要功能本課題主要是要完成一個中斷駐留程序,要求在屏幕的右上角上顯示當(dāng)前系統(tǒng)時間,時間格式為時:分:秒。完成該課題的系統(tǒng)時間的功能,需要不斷的中斷以同步顯示系統(tǒng)時間,這里我們需要利用INT1CH,平均每秒中斷18.2次,以這樣的頻率同步顯示系統(tǒng)時間足以滿足人們的視覺效果。完成系統(tǒng)時間同步的前提,還需要讀取系統(tǒng)時間和顯示系統(tǒng)時間。二.課題的功能模塊劃分該課題的的功能模塊,就是在定義好數(shù)據(jù)之后,完成讀取系統(tǒng)時間和顯示系統(tǒng)時間兩大模塊。包括獲取原中斷類型,保存原中斷類型,設(shè)置新的中斷類型,執(zhí)行中斷處理程序,應(yīng)用堆棧保護現(xiàn)場,讀取系統(tǒng)時間,然后分別將時間的BCD碼轉(zhuǎn)換為字符,在制定內(nèi)存位置寫入時間并顯示時間,最后恢復(fù)現(xiàn)場,中斷返回。具體功能模塊圖如下:顯示系統(tǒng)時間主程序調(diào)用現(xiàn)場保護及恢復(fù)模塊子程序模塊顯示系統(tǒng)時間主程序調(diào)用現(xiàn)場保護及恢復(fù)模塊子程序模塊讀取系統(tǒng)時間模塊中斷模塊顯示系統(tǒng)時間模塊該課題,采用調(diào)用子程序的思想來完成,主體功能都通過子程序模塊完成,中斷模塊,讀取系統(tǒng)時間模塊,顯示系統(tǒng)模塊,現(xiàn)場保護模塊及現(xiàn)場恢復(fù)模塊。通過調(diào)用子程序的方法,使本程序更加具有條理性,其中現(xiàn)場保護是為了使存放器里有用的數(shù)據(jù)保存起來,讓存放器進展其他運算,現(xiàn)場恢復(fù)是使之前保護起來的有用數(shù)據(jù)恢復(fù),讀取系統(tǒng)時間并使屏幕顯示的時間與系統(tǒng)時間同步變化,這就不得不使用中斷模塊,運用INT1CH,可以平均每秒中斷18.2次,足以滿足視覺上的同步。主要功能的實現(xiàn)這個程序主要是要實現(xiàn)獲取系統(tǒng)時間并顯示時間。定好好數(shù)據(jù)之后,在DOS環(huán)境下,用2C號取系統(tǒng)時間的功能,將時賦值給CH,將分賦值給CL,將秒賦值給DH,將1/100賦值給DL,具體實現(xiàn)如下:MOVAH,2CH

INT21H

MOVHOUR,CH

MOVMINUTE,CL

MOVSECOND,DH在DOS環(huán)境下,使用25號功能鍵設(shè)置中斷向量,DS:D*=中斷向量,AL=中斷類型號,接下來完成駐留內(nèi)存。MOVA*,251CH

INT21H

MOVAH,1

INT21H

MOVA*,3100H設(shè)置顯示時間在屏幕上的位置,MOVD*,(PRG_LEN+15)/16+16INT21H然后進展現(xiàn)場保護,接下來便用一個子函數(shù)INTIC來具體實現(xiàn)系統(tǒng)時間顯示,將從系統(tǒng)中讀取的時,分,秒分別送入內(nèi)存T到T7,然后塊裝入指令把SI指向的存儲單元讀入累加器,其具體實現(xiàn)如下:C1:MOVAL,HOUR

CBW

MOVDL,0AH

DIVDL

ORA*,3030H

MOVWORDPTR[T],A*;將小時送入到[T]

MOVAL,MINUTE

CBW

DIVDL

ORA*,3030H

MOVWORDPTR[T+3],A*;將分鐘送入到[T+3]和[T+4]

MOVAL,SECOND

CBW

DIVDL

ORA*,3030H

MOVWORDPTR[T+6],A*;將秒鐘送入到[T+6]和[T+7]

MOVC*,8

MOVA*,0B800H

MOVES,A*

LEASI,[T]

MOVDI,144C3:LODSB;塊裝入指令把SI指向的存儲單元讀入累加器

STOSW;從A*讀取的字送入到ES:DI

LOOPC3

CEND:IRET

INT1CENDP以上是該課題的主要功能實現(xiàn),該課題的總流程圖如下:程序調(diào)試1:程序調(diào)試圖2:程序運行圖總結(jié)這次課程設(shè)計時間雖然只有三天,學(xué)到了不少,但更多卻不是知識上的收獲,更多的是我們對程序設(shè)計的整體有了一個全新的認(rèn)識,和同學(xué)交流得更好了。在課程設(shè)計中我學(xué)會了團結(jié)合作精神的重要性,感謝教師悉心的指導(dǎo),和熱情的網(wǎng)友們,還有我們一同奮斗的同學(xué)們,這次們上機實驗的時間剛好在今年的最冷的時候,教師每天冒著風(fēng)雪這機房指導(dǎo)我們學(xué)習(xí),這讓我們非常的感慨,一個簡單的程序應(yīng)該要有一個好的算法,一開場的時候我沒有一個好的算法,所以程序老是出錯,在教師的悉心指導(dǎo)下,逐漸完善了算法,然后才一步一步的有了一個完整的程序,當(dāng)然這期間還有同學(xué)的的一起努力。通過這次課程設(shè)計我知道了,計算機是通過執(zhí)行指令序列來解決問題,每種計算機都有一套指令集合供用戶使用,對匯編語言有了一個全新的認(rèn)識,助記符代替機器指令的操作碼,用地址符號或標(biāo)號代替指令或操作數(shù)的地址,如此就增強了程序的可讀性和編寫難度,這樣符號化的程序設(shè)計語言就是匯編語言。

六.附件CODESEGMENT

ORG100H

ASSUMECS:CODE,DS:CODE

HOURDB0

MINUTEDB0

SECONDDB0

COUNTDB18

TDB"00:00:00"START:MOVA*,CODE

MOVDS,A*

MOVAH,2CH

INT21H

MOVHOUR,CH

MOVMINUTE,CL

MOVSECOND,DH

LEAD*,INT1C

MOVA*,251CH

INT21H

MOVAH,1

INT21H

MOVA*,3100H;駐留內(nèi)存

MOVD*,(PRG_LEN+15)/16+16

INT21HINT1CPROCFAR

DECCS:COUNT

JZC2

JMPCENDC2:PUSHDS

PUSHES

PUSHA*

PUSHB*

PUSHC*

PUSHD*

PUSHSI

PUSHDI

PUSHCS

POPDS

MOVCOUNT,18

INCSECOND

CMPSECOND,60

C1

MOVSECOND,0

INCMINUTE

CMPMINUTE,60

C1

MOVMINUTE,0

INCHOUR

CMPHOUR,24

C1

MOVHOUR,0C1:MOVAL,HOUR

CBW

MOVDL,0AH

DIVDL

ORA*,3030H

MOVWORDPTR[T],A*;將小時送入到[T]

MOVAL,MINUTE

CBW

DIVDL

ORA*,3030H

MOVWORDPTR[T+3],A*;將分鐘送入到[T+3]和[T+4]

MOVAL,SECOND

CBW

DIVDL

ORA*,3030H

MOVWORDPTR[T+6],A*;將秒鐘送入到[T+6]和[T+7]

MOVC*,8

MOVA*,0B800H

MOVES,A*

LEASI,[T]

MOVDI,144C3:LODSB;塊裝入指令把SI指向的存儲單元讀入累加器

STOSW;從A*讀取的字送入到ES:DI

LOOPC3

POPDI

POPSI

POPD*

POPC*

POPB*

POPA*

POPES

POPDS

CEND:IRET

INT1CE

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論