




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、摘 要 匯編語言編程不僅具有計算機提供應用戶的最快而又最有效的語言的優(yōu)勢,也可以在不很了解計算機硬件的前提下使用它。在對于程序的空間和時間要求很高的場合,使用匯編語言是必不可少,甚至對于很多需要直接控制硬件的應用場合,用保護模式下的匯編語言編程也提供應了對硬件不了解的初學者一種方法。本次課程設計,是使用匯編作為開發(fā)語言完成數(shù)字方陣程序設計,即用戶輸入數(shù)字n,程序輸出n階方陣。本文主要分為問題描述、程序設計、代碼實現(xiàn)、運行結(jié)果分析和課程設計總結(jié)幾個局部。完整的表述了程序設計的全部過程及所涉及的根本思路和功能模塊的代碼實現(xiàn)。在代碼編寫中,還附加有文字說明,增加程序可讀性。各個局部嚴密聯(lián)系,相互貫穿
2、,保證最終程序設計得以完整并正確的實現(xiàn)。其中,問題描述闡述所要解決的問題、實現(xiàn)的功能;程序設計繪制程序流程圖,作為程序編寫的依據(jù);代碼實現(xiàn)主要列出本程序設計中涉及的主要模塊的代碼;運行結(jié)果分析為程序初步完成根底上的程序調(diào)試和功能測試,確保程序設計正確,能實現(xiàn)所要求的功能;通過課程設計總結(jié)對本次課程設計得失進展總結(jié)??偨Y(jié)遇到的問題、解決途徑以及學到的知識,新掌握的編程技巧等。最后,附上源程序清單及參考文獻。關(guān)鍵詞:匯編語言,數(shù)字方陣,編程技巧,課程設計目錄 TOC o 1-3 h z u HYPERLINK l _Toc280795692 摘 要 PAGEREF _Toc280795692 h
3、I HYPERLINK l _Toc280795693 1 問題描述 PAGEREF _Toc280795693 h 1 HYPERLINK l _Toc280795694 2 程序設計 PAGEREF _Toc280795694 h 2 HYPERLINK l _Toc280795695 題目根本內(nèi)容 PAGEREF _Toc280795695 h 2 HYPERLINK l _Toc280795696 系統(tǒng)流程框圖 PAGEREF _Toc280795696 h 2 HYPERLINK l _Toc280795697 2.2.1 主程序流程圖 PAGEREF _Toc280795697 h
4、 2 HYPERLINK l _Toc280795698 2.2.2 子程序工作流程 PAGEREF _Toc280795698 h 3 HYPERLINK l _Toc280795699 程序設計分析 PAGEREF _Toc280795699 h 3 HYPERLINK l _Toc280795700 3 主要代碼實現(xiàn) PAGEREF _Toc280795700 h 4 HYPERLINK l _Toc280795701 3.1 主模塊代碼 PAGEREF _Toc280795701 h 4 HYPERLINK l _Toc280795702 3.2 顯示方陣模塊代碼 PAGEREF _T
5、oc280795702 h 5 HYPERLINK l _Toc280795703 3.3 顯示控制模塊代碼 PAGEREF _Toc280795703 h 6 HYPERLINK l _Toc280795704 4 運行結(jié)果分析 PAGEREF _Toc280795704 h 8 HYPERLINK l _Toc280795705 5 課程設計總結(jié) PAGEREF _Toc280795705 h 9 HYPERLINK l _Toc280795706 參考文獻 PAGEREF _Toc280795706 h 10 HYPERLINK l _Toc280795707 附錄 PAGEREF _T
6、oc280795707 h 11 HYPERLINK l _Toc280795708 源程序代碼 PAGEREF _Toc280795708 h 111 問題描述本程序設計主要要求用匯編語言實現(xiàn)數(shù)字方陣的創(chuàng)立。程序提示用戶輸入任一數(shù)字n,系統(tǒng)接收該數(shù)字,并返回一個n階數(shù)字方陣。要求將n2個自然數(shù)按螺旋紋路填入這個n階方陣順時針,由外向內(nèi)。本程序設計中,系統(tǒng)提示輸入一個3-9的數(shù)字,根據(jù)輸入的數(shù)字顯示方陣,如輸入4,輸出:12341213145111615610987 要實現(xiàn)該功能要求,需要顯示提示字符串,承受用戶輸入,調(diào)用中斷2,按要求顯示方陣。2 程序設計題目根本內(nèi)容具體要求: 1輸出提示輸
7、入,承受在一定范圍內(nèi)的指定數(shù)字本程序為3到9之間,否那么重新輸入,如果是ESC鍵,那么推出程序2對承受的數(shù)字進展運算,將n2個自然數(shù)按螺旋紋路填入n階方陣并顯示該方陣。 主程序流程圖設置BIOS中斷 設置文本顯示方式輸出顯示提示承受輸入n 保存al中ESC鍵?調(diào)用EIXT子程序退出程序介于3到9 ?Teletype 模式求得n*n 保存到si中NEXT 調(diào)用SHOW子程序,完成一次循環(huán)顯示BP SI ?顯示完成YNNYNY開場 子程序工作流程SHOW循環(huán)顯示子程序: CRT子程序調(diào)整AL值取得BP中的值向右輸出n數(shù)每輸出一個自加向下輸出n-1個數(shù)每輸出一個自加向左輸出n-1個數(shù)每輸出一個自加向
8、右輸出n-2每輸出一個自加子程序返回 分別得到二位十進制個位、十位的值N十位是否為0 Y此位輸出空格輸出其值輸出個位值子程序返回 程序設計分析算法實現(xiàn)并不是件簡單的事情。高級語言可以設置二維數(shù)組實現(xiàn),不必考慮其位數(shù),輸出也僅是一個元素值。而用匯編那么遇到定位鼠標,才是顯示,根據(jù)程序要求,想要到達程序要求,必須對鼠標位置做準確定位3。匯編一次只能輸出一個字符,對于二位十進制數(shù)據(jù)時,必須作出處理分別輸出5。如果對于一位二進制數(shù)不做處理,輸出時的樣子非常難看。處理方案是:當輸出一位十進制數(shù)時,在十位位置填充空格,顯示效果良好1。根據(jù)課題的要求,主要完成一下幾方面的設計:1顯示提示輸入,提示輸入 ,并
9、保證輸入大于3小于9,否那么重新輸入2編寫子程序,用算法實現(xiàn)每次形如矩形的輸出,直至輸出完畢3在輸出時,如果是兩位十進制數(shù),使用設計子程序分別輸出個位,十位值,假設是一位十進制數(shù),十位填充空格,輸出。3 主要代碼實現(xiàn) 主模塊代碼 主模塊主要完成的功能有:在屏幕顯示提示字符串、準備接收用戶輸入的字符,假設為Esc鍵,那么推出程序;假設為數(shù)字字符,那么將其轉(zhuǎn)換成數(shù)字,并判斷數(shù)字是否在規(guī)定范圍內(nèi),然后根據(jù)數(shù)字大小調(diào)用相應子模塊,顯示方陣。該模塊主要使用了進棧、出棧,根本加減運算,賦值運算,比擬運算以及流程跳轉(zhuǎn)控制。 PUSH CS POP DS MOV AX,3 INT 10H ;BIOS中斷,置文
10、本顯示模式 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鍵完畢程序 esc(ascii=1Bh) JZ QUIT CMP AL,3 ;數(shù)據(jù)校驗,保證輸入3al9 JB T0 CMP AL,9 JA T0 MOV AH,0EH ;在Teletype模式下顯示字符 INT 10H ;顯示有效數(shù) SUB AL,30H ;得到十進制數(shù)字 PUSH AX MUL AL ;al*al MOV SI,AX ;保存矩陣最大數(shù)到si中
11、POP AX CBW ;chang byte to word MOV BP,1 ;第一個元素值 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 ;bpsi,那么繼續(xù)執(zhí)行 MOV AH,0 INT 16H ;等待 JNZ START QUIT: MOV AX,4C00H IN
12、T 21H3.2 顯示方陣模塊代碼 顯示方陣模塊主要用于控制數(shù)字及其顯示位置4,以到達題目要求的數(shù)字按照螺旋紋路填入n階方陣中。該模塊主要運用了賦值運算,循環(huán)控制,比擬運算及流程控制。SHOW: ;顯示方陣 MOV CX,CNT1 ;right 向右賦值 M1: CALL CRT INC BP ;下一個元素數(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 ;
13、下一個元素位置 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ù),那么顯示個位,并補充空格;假設為兩位數(shù),那么分別顯示十位和個位,以到達數(shù)字的正確顯示。主要進展了數(shù)字的修正和各位數(shù)字的別離。 CRT: MOV AX,BP AAM ;調(diào)整指令 OR AX,3030H XCHG AH,AL ;交換ah和al CMP AL,0 JNZ P1 MOV AL,20H P1:
14、 STOSB ;顯示十位 INC DI MOV AL,AH STOSB ;顯示個位 INC DI MOV AL,20H STOSB ;顯示空格 INC DI RET4 運行結(jié)果分析經(jīng)過上訴分析和模塊設計,編寫出完整的程序代碼。經(jīng)過不斷的調(diào)試和修改得到最終程序設計。該程序能正常運行,并完成規(guī)定的功能?,F(xiàn)將運行結(jié)果截圖如下:程序開場運行:輸入3,運行結(jié)果如下:鍵入9,運行結(jié)果如下:5 課程設計總結(jié)課程設計是將課本上所學的理論知識運用與解決實際的問題,對松散的理論知識的一個集合式運用,也是綜合知識,綜合運用能力的一個過程。對知識的掌握和靈活運用是一個很好的考察。由于匯編是大二時所學,那么長時間沒有運
15、用,忘了好大一局部。當要做課程設計時,又把整本書又復習了一遍,而且我們那本課本是入門級教材。對諸如DOS和BIOS中斷的介紹也只是一個簡單的表達,當真正要使用某一功能時,我們的課本就捉襟見肘了。因此在課程設計的過程中,圖書館和豐富的網(wǎng)絡資源得到了充分的應用。 本次課程設計,一方面讓我們再次熟悉匯編指令,再次對算法的設計有一定的理解和掌握。另一方面讓我們對較大匯編程序的編寫有一個清晰的過程,學習把一個較大問題分解成假設干個小問題,即子程序編寫。養(yǎng)成一個良好的編程習慣。通過本次課程設計讓大家掌握常用的根本匯編指令,提高了將學習的理論知識應用于解決實際問題的能力。通過一周的課程設計使我對匯編語言有了
16、更深的理解,對以前學習中不明白的,不理解的都有了進一步的理解。在實際操作中遇到了很多困難,但通過找資料,請教同學和教師,使我的動手能力和溝通能力都有了提高。在整個課程設計中總是在編寫程序中發(fā)生錯誤,有時會很沒耐性,但都被我一一克制了。通過本次課程設計,我更加理解了書本上的理論知識,也進一步培養(yǎng)了將理論運用于實踐,以解決實際問題的能力。這樣的經(jīng)歷也告訴我,學習更重要的是動手能力,只要通過動手實踐才能更好的掌握所學知識,才能學以致用,更好發(fā)揮知識的優(yōu)越性,表達學習的價值。在做完這個課程設計時,心里有種說不出來的快樂,自己動手完成的設計有一種成就感,增強了自己的自信心,我相信在今后的學習中,我會保持
17、這種良好的心情投入到各科的學習中,不斷提升自己的學習能力。參考文獻1 錢曉捷新版匯編語言程序設計北京:電子工業(yè)出版社,2021 2 楊季文8086匯編語言程序設計教程北京:清華大學出版社, 20043 李珍香等匯編語言課程設計案例精編北京:中國水利水電出版社,20054 洪志全羅省賢匯編語言程序設計教程北京:電子工業(yè)出版社,20045 樓順天 周佳社. 微機原理與接口技術(shù).北京:科學出版社,2006附錄源程序代碼 CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H START: PUSH CS POP DS MOV AX,3 INT 10H ;BIOS中斷
18、,置文本顯示模式 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鍵完畢程序 esc(ascii=1Bh) JZ QUIT CMP AL,3 ;數(shù)據(jù)校驗,保證輸入3al9 JB T0 CMP AL,9 JA T0 MOV AH,0EH ;在Teletype模式下顯示字符 INT 10H ;顯示有效數(shù) SUB AL,30H ;得到十進制數(shù)字 PUSH AX MUL AL ;al*al MOV SI,AX ;保存矩陣最大數(shù)到si中 POP AX CBW ;chang byte to word MOV BP,1 ;第一個元素值 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 ;bpsi,那么繼續(xù)執(zhí)行 MOV AH,0 INT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2018高考人教政治二輪鞏固練題(三)及解析
- 防水工程施工方案排版
- 化糞池清理實施方案
- 老年共病患者輕度貧血與體位性低血壓的相關(guān)性研究
- 成都天府新區(qū)BYS房地產(chǎn)項目市場研究
- 2024高考化學一輪復習課后限時集訓17元素周期表和元素周期律新人教版
- 供熱特許經(jīng)營合同范例
- 喬木購銷合同范例
- 人教版八年級生物下冊基因在親子代間的傳遞 教案
- 2025年耐高溫可加工陶瓷項目建議書
- 物流、倉儲危險源及風險辨識與評價表
- DG-TJ 08-2367-2021 既有建筑外立面整治設計標準
- 五金廠公司績效考核規(guī)則
- 公文流轉(zhuǎn)單(標準模版)
- SJT 05-2023 裝配式建筑標準化產(chǎn)品系列圖集(預制混凝土樓梯)
- GB/T 6177.2-2000六角法蘭面螺母細牙
- GB/T 4100-2015陶瓷磚
- 部編人教版語文六年級下冊《2 送元二使安西》課件
- 人教版五年級數(shù)學下冊第二單元《奇偶性》教案
- 抖音超火看表情符號猜成語課件
- 管理者心智修煉課件
評論
0/150
提交評論