匯編語(yǔ)言課程設(shè)計(jì)數(shù)字方陣_第1頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)數(shù)字方陣_第2頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)數(shù)字方陣_第3頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)數(shù)字方陣_第4頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)數(shù)字方陣_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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、摘 要 匯編語(yǔ)言編程不僅具有計(jì)算機(jī)提供給用戶的最快而又最有效的語(yǔ)言的優(yōu)勢(shì),也可以在不很了解計(jì)算機(jī)硬件的前提下使用它。在對(duì)于程序的空間和時(shí)間要求很高的場(chǎng)合,使用匯編語(yǔ)言是必不可少,甚至對(duì)于很多需要直接控制硬件的應(yīng)用場(chǎng)合,用保護(hù)模式下的匯編語(yǔ)言編程也提供給了對(duì)硬件不了解的初學(xué)者一種方法。本次課程設(shè)計(jì),是使用匯編作為開(kāi)發(fā)語(yǔ)言完成數(shù)字方陣程序設(shè)計(jì),即用戶輸入數(shù)字n,程序輸出n階方陣。本文主要分為問(wèn)題描述、程序設(shè)計(jì)、代碼實(shí)現(xiàn)、運(yùn)行結(jié)果分析和課程設(shè)計(jì)總結(jié)幾個(gè)部分。完整的表述了程序設(shè)計(jì)的全部過(guò)程及所涉及的基本思路和功能模塊的代碼實(shí)現(xiàn)。在代碼編寫(xiě)中,還附加有文字說(shuō)明,增加程序可讀性。各個(gè)部分緊密聯(lián)系,相互貫通

2、,保證最終程序設(shè)計(jì)得以完整并正確的實(shí)現(xiàn)。其中,問(wèn)題描述闡述所要解決的問(wèn)題、實(shí)現(xiàn)的功能;程序設(shè)計(jì)繪制程序流程圖,作為程序編寫(xiě)的依據(jù);代碼實(shí)現(xiàn)主要列出本程序設(shè)計(jì)中涉及的主要模塊的代碼;運(yùn)行結(jié)果分析為程序初步完成基礎(chǔ)上的程序調(diào)試和功能測(cè)試,確保程序設(shè)計(jì)正確,能實(shí)現(xiàn)所要求的功能;通過(guò)課程設(shè)計(jì)總結(jié)對(duì)本次課程設(shè)計(jì)得失進(jìn)行總結(jié)。總結(jié)遇到的問(wèn)題、解決途徑以及學(xué)到的知識(shí),新掌握的編程技巧等。最后,附上源程序清單及參考文獻(xiàn)。關(guān)鍵詞:匯編語(yǔ)言,數(shù)字方陣,編程技巧,課程設(shè)計(jì)目錄摘 要I1 問(wèn)題描述12 程序設(shè)計(jì)22.1題目基本內(nèi)容22.2系統(tǒng)流程框圖22.2.1 主程序流程圖22.2.2 子程序工作流程32.3程序設(shè)

3、計(jì)分析33 主要代碼實(shí)現(xiàn)43.1 主模塊代碼43.2 顯示方陣模塊代碼53.3 顯示控制模塊代碼64 運(yùn)行結(jié)果分析85 課程設(shè)計(jì)總結(jié)9參考文獻(xiàn)10附錄11源程序代碼111 問(wèn)題描述本程序設(shè)計(jì)主要要求用匯編語(yǔ)言實(shí)現(xiàn)數(shù)字方陣的創(chuàng)建。程序提示用戶輸入任一數(shù)字n,系統(tǒng)接收該數(shù)字,并返回一個(gè)n階數(shù)字方陣。要求將n2個(gè)自然數(shù)按螺旋紋路填入這個(gè)n階方陣(順時(shí)針,由外向內(nèi))。本程序設(shè)計(jì)中,系統(tǒng)提示輸入一個(gè)3-9的數(shù)字,根據(jù)輸入的數(shù)字顯示方陣,如輸入4,輸出:12341213145111615610987 要實(shí)現(xiàn)該功能要求,需要顯示提示字符串,接受用戶輸入,調(diào)用中斷2,按要求顯示方陣。2 程序設(shè)計(jì)2.1題目基本

4、內(nèi)容具體要求: (1)輸出提示輸入,接受在一定范圍內(nèi)的指定數(shù)字(本程序?yàn)?到9之間),否則重新輸入,如果是ESC鍵,則推出程序(2)對(duì)接受的數(shù)字進(jìn)行運(yùn)算,將n2個(gè)自然數(shù)按螺旋紋路填入n階方陣并顯示該方陣。2.2系統(tǒng)流程框圖 主程序流程圖設(shè)置BIOS中斷 設(shè)置文本顯示方式輸出顯示提示接受輸入n 保存al中ESC鍵?調(diào)用EIXT子程序退出程序介于3到9 ?Teletype 模式求得n*n 保存到si中NEXT 調(diào)用SHOW子程序,完成一次循環(huán)顯示BP < SI ?顯示完成YNNYNY開(kāi)始 子程序工作流程SHOW循環(huán)顯示子程序: CRT子程序調(diào)整AL值取得BP中的值向右輸出n數(shù)每輸出一個(gè)自加向

5、下輸出n-1個(gè)數(shù)每輸出一個(gè)自加向左輸出n-1個(gè)數(shù)每輸出一個(gè)自加向右輸出n-2每輸出一個(gè)自加子程序返回 分別得到二位十進(jìn)制個(gè)位、十位的值N十位是否為0 Y此位輸出空格輸出其值輸出個(gè)位值子程序返回 2.3程序設(shè)計(jì)分析算法實(shí)現(xiàn)并不是件簡(jiǎn)單的事情。高級(jí)語(yǔ)言可以設(shè)置二維數(shù)組實(shí)現(xiàn),不必考慮其位數(shù),輸出也僅是一個(gè)元素值。而用匯編則遇到定位鼠標(biāo),才是顯示,根據(jù)程序要求,想要達(dá)到程序要求,必須對(duì)鼠標(biāo)位置做精確定位3。匯編一次只能輸出一個(gè)字符,對(duì)于二位十進(jìn)制數(shù)據(jù)時(shí),必須作出處理分別輸出5。如果對(duì)于一位二進(jìn)制數(shù)不做處理,輸出時(shí)的樣子非常難看。處理方案是:當(dāng)輸出一位十進(jìn)制數(shù)時(shí),在十位位置填充空格,顯示效果良好1。根據(jù)

6、課題的要求,主要完成一下幾方面的設(shè)計(jì):1顯示提示輸入,提示輸入 ,并保證輸入大于3小于9,否則重新輸入2編寫(xiě)子程序,用算法實(shí)現(xiàn)每次形如矩形的輸出,直至輸出完畢3在輸出時(shí),如果是兩位十進(jìn)制數(shù),使用設(shè)計(jì)子程序分別輸出個(gè)位,十位值,若是一位十進(jìn)制數(shù),十位填充空格,輸出。3 主要代碼實(shí)現(xiàn)3.1 主模塊代碼 主模塊主要完成的功能有:在屏幕顯示提示字符串、準(zhǔn)備接收用戶輸入的字符,若為Esc鍵,則推出程序;若為數(shù)字字符,則將其轉(zhuǎn)換成數(shù)字,并判斷數(shù)字是否在規(guī)定范圍內(nèi),然后根據(jù)數(shù)字大小調(diào)用相應(yīng)子模塊,顯示方陣。該模塊主要使用了進(jìn)棧、出棧,基本加減運(yùn)算,賦值運(yùn)算,比較運(yùn)算以及流程跳轉(zhuǎn)控制。 PUSH CS POP

7、 DS MOV AX,3 INT 10H ;BIOS中斷,置文本顯示模式 MOV AX,0B800H MOV ES,AX ;定位顯存 MOV DX,OFFSET MSG MOV AH,9 INT 21H ;提示 T0: MOV AH,0 INT 16H ;接收數(shù)據(jù) CMP AL,1BH ;Esc鍵結(jié)束程序 esc(ascii=1Bh) JZ QUIT CMP AL,'3' ;數(shù)據(jù)校驗(yàn),保證輸入3<al<9 JB T0 CMP AL,'9' JA T0 MOV AH,0EH ;在Teletype模式下顯示字符 INT 10H ;顯示有效數(shù) SUB AL

8、,30H ;得到十進(jìn)制數(shù)字 PUSH AX MUL AL ;al*al MOV SI,AX ;保存矩陣最大數(shù)到si中 POP AX CBW ;chang byte to word MOV BP,1 ;第一個(gè)元素值 MOV DI,3*80*2 NEXT: MOV CNT1,AX ;輸入數(shù)據(jù)保存到cnt1 DEC AX ;n-1 MOV CNT2,AX MOV CNT3,AX DEC AX ;(n-1)-1 MOV CNT4,AX ADD DI,3*2 CALL SHOW ;輸出矩陣 MOV AX,CNT1 SUB AX,2 SUB DI,3*2 CMP BP,SI JBE NEXT ;bp<

9、;si,則繼續(xù)執(zhí)行 MOV AH,0 INT 16H ;等待 JNZ START QUIT: MOV AX,4C00H INT 21H3.2 顯示方陣模塊代碼 顯示方陣模塊主要用于控制數(shù)字及其顯示位置4,以達(dá)到題目要求的數(shù)字按照螺旋紋路填入n階方陣中。該模塊主要運(yùn)用了賦值運(yùn)算,循環(huán)控制,比較運(yùn)算及流程控制。SHOW: ;顯示方陣 MOV CX,CNT1 ;right 向右賦值 M1: CALL CRT INC BP ;下一個(gè)元素?cái)?shù)值 LOOP M1 MOV CX,CNT2 ;down 向下賦值 JCXZ P2 ;cx=0,則轉(zhuǎn)p2處 M2: ADD DI,(80-3)*2 CALL CRT I

10、NC BP LOOP M2 MOV CX,CNT3 ;left 向左賦值 JCXZ P2 M3: SUB DI,6*2 ;下一個(gè)元素位置 CALL CRT INC BP LOOP M3 MOV CX,CNT4 ;up 向上賦值 JCXZ P2 M4: SUB DI,(80+3)*2 CALL CRT INC BP LOOP M4 P2: RET3.3 顯示控制模塊代碼 控制模塊主要用于控制數(shù)字的顯示方式,若為一位數(shù),則顯示個(gè)位,并補(bǔ)充空格;若為兩位數(shù),則分別顯示十位和個(gè)位,以達(dá)到數(shù)字的正確顯示。主要進(jìn)行了數(shù)字的修正和各位數(shù)字的分離。 CRT: MOV AX,BP AAM ;調(diào)整指令 OR AX

11、,3030H XCHG AH,AL ;交換ah和al CMP AL,'0' JNZ P1 MOV AL,20H P1: STOSB ;顯示十位 INC DI MOV AL,AH STOSB ;顯示個(gè)位 INC DI MOV AL,20H STOSB ;顯示空格 INC DI RET4 運(yùn)行結(jié)果分析經(jīng)過(guò)上訴分析和模塊設(shè)計(jì),編寫(xiě)出完整的程序代碼。經(jīng)過(guò)不斷的調(diào)試和修改得到最終程序設(shè)計(jì)。該程序能正常運(yùn)行,并完成規(guī)定的功能?,F(xiàn)將運(yùn)行結(jié)果截圖如下:程序開(kāi)始運(yùn)行: 圖4.1輸入3,運(yùn)行結(jié)果如下: 圖4.2鍵入9,運(yùn)行結(jié)果如下: 圖4.35 課程設(shè)計(jì)總結(jié)課程設(shè)計(jì)是將課本上所學(xué)的理論知識(shí)運(yùn)用與解

12、決實(shí)際的問(wèn)題,對(duì)松散的理論知識(shí)的一個(gè)集合式運(yùn)用,也是綜合知識(shí),綜合運(yùn)用能力的一個(gè)過(guò)程。對(duì)知識(shí)的掌握和靈活運(yùn)用是一個(gè)很好的考察。由于匯編是大二時(shí)所學(xué),那么長(zhǎng)時(shí)間沒(méi)有運(yùn)用,忘了好大一部分。當(dāng)要做課程設(shè)計(jì)時(shí),又把整本書(shū)又復(fù)習(xí)了一遍,而且我們那本課本是入門(mén)級(jí)教材。對(duì)諸如DOS和BIOS中斷的介紹也只是一個(gè)簡(jiǎn)單的敘述,當(dāng)真正要使用某一功能時(shí),我們的課本就捉襟見(jiàn)肘了。因此在課程設(shè)計(jì)的過(guò)程中,圖書(shū)館和豐富的網(wǎng)絡(luò)資源得到了充分的應(yīng)用。 本次課程設(shè)計(jì),一方面讓我們?cè)俅问煜R編指令,再次對(duì)算法的設(shè)計(jì)有一定的理解和掌握。另一方面讓我們對(duì)較大匯編程序的編寫(xiě)有一個(gè)清晰的過(guò)程,學(xué)習(xí)把一個(gè)較大問(wèn)題分解成若干個(gè)小問(wèn)題,即子程

13、序編寫(xiě)。養(yǎng)成一個(gè)良好的編程習(xí)慣。通過(guò)本次課程設(shè)計(jì)讓大家掌握常用的基本匯編指令,提高了將學(xué)習(xí)的理論知識(shí)應(yīng)用于解決實(shí)際問(wèn)題的能力。通過(guò)一周的課程設(shè)計(jì)使我對(duì)匯編語(yǔ)言有了更深的理解,對(duì)以前學(xué)習(xí)中不明白的,不理解的都有了進(jìn)一步的理解。在實(shí)際操作中遇到了很多困難,但通過(guò)找資料,請(qǐng)教同學(xué)和老師,使我的動(dòng)手能力和溝通能力都有了提高。在整個(gè)課程設(shè)計(jì)中總是在編寫(xiě)程序中發(fā)生錯(cuò)誤,有時(shí)會(huì)很沒(méi)耐性,但都被我一一克服了。通過(guò)本次課程設(shè)計(jì),我更加理解了書(shū)本上的理論知識(shí),也進(jìn)一步培養(yǎng)了將理論運(yùn)用于實(shí)踐,以解決實(shí)際問(wèn)題的能力。這樣的經(jīng)驗(yàn)也告訴我,學(xué)習(xí)更重要的是動(dòng)手能力,只要通過(guò)動(dòng)手實(shí)踐才能更好的掌握所學(xué)知識(shí),才能學(xué)以致用,更好

14、發(fā)揮知識(shí)的優(yōu)越性,體現(xiàn)學(xué)習(xí)的價(jià)值。在做完這個(gè)課程設(shè)計(jì)時(shí),心里有種說(shuō)不出來(lái)的高興,自己動(dòng)手完成的設(shè)計(jì)有一種成就感,增強(qiáng)了自己的自信心,我相信在今后的學(xué)習(xí)中,我會(huì)保持這種良好的心情投入到各科的學(xué)習(xí)中,不斷提升自己的學(xué)習(xí)能力。參考文獻(xiàn)1 錢曉捷新版匯編語(yǔ)言程序設(shè)計(jì)北京:電子工業(yè)出版社,2008 2 楊季文 8086匯編語(yǔ)言程序設(shè)計(jì)教程北京:清華大學(xué)出版社, 20043 李珍香等匯編語(yǔ)言課程設(shè)計(jì)案例精編北京:中國(guó)水利水電出版社,20054 洪志全 羅省賢 匯編語(yǔ)言程序設(shè)計(jì)教程北京:電子工業(yè)出版社,20045 樓順天 周佳社. 微機(jī)原理與接口技術(shù).北京:科學(xué)出版社,2006

15、附錄源程序代碼 CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H START: PUSH CS POP DS MOV AX,3 INT 10H ;BIOS中斷,置文本顯示模式 MOV AX,0B800H MOV ES,AX ;定位顯存 MOV DX,OFFSET MSG MOV AH,9 INT 21H ;提示 T0: MOV AH,0 INT 16H ;接收數(shù)據(jù) CMP AL,1BH ;Esc鍵結(jié)束程序 esc(ascii=1Bh) JZ QUIT CMP AL,'3' ;數(shù)據(jù)校驗(yàn),保證輸入3<al<9 JB T0 CMP

16、AL,'9' JA T0 MOV AH,0EH ;在Teletype模式下顯示字符 INT 10H ;顯示有效數(shù) SUB AL,30H ;得到十進(jìn)制數(shù)字 PUSH AX MUL AL ;al*al MOV SI,AX ;保存矩陣最大數(shù)到si中 POP AX CBW ;chang byte to word MOV BP,1 ;第一個(gè)元素值 MOV DI,3*80*2 NEXT: MOV CNT1,AX ;輸入數(shù)據(jù)保存到cnt1 DEC AX ;n-1 MOV CNT2,AX MOV CNT3,AX DEC AX ;(n-1)-1 MOV CNT4,AX ADD DI,3*2 CA

17、LL SHOW ;輸出矩陣 MOV AX,CNT1 SUB AX,2 SUB DI,3*2 CMP BP,SI JBE NEXT ;bp<si,則繼續(xù)執(zhí)行 MOV AH,0 INT 16H ;等待 JNZ START QUIT: MOV AX,4C00H INT 21H SHOW: ;顯示方陣 MOV CX,CNT1 ;right 向右賦值 M1: CALL CRT INC BP ;下一個(gè)元素?cái)?shù)值 LOOP M1 MOV CX,CNT2 ;down 向下賦值 JCXZ P2 ;cx=0,則轉(zhuǎn)p2處 M2: ADD DI,(80-3)*2 CALL CRT INC BP LOOP M2 MOV CX,CNT3 ;left 向左賦值 JCXZ P2 M3: SUB DI,6*2 ;下一個(gè)元素位置 CALL CRT INC BP LOOP M3 MOV CX,CNT4 ;up 向上賦值 JCXZ P2 M4: SUB DI,(80+3)*2 CALL CRT INC BP LOOP M4 P2: RET CRT:

溫馨提示

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