匯編語言判斷能否組成三角形_第1頁
匯編語言判斷能否組成三角形_第2頁
匯編語言判斷能否組成三角形_第3頁
匯編語言判斷能否組成三角形_第4頁
匯編語言判斷能否組成三角形_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、江漢大學文理學院課程設計報告課程設計題目 _三角形判斷 _ 部 (系)信息技術學部專業電子信息工程姓名黃金國學號201106010227指導教師羅海庚2012 年7 月4 日目錄摘 要 . 1 1 設計意義及要求 . 2 1.1 設計意義 . 2 1.2 設計要求 . 2 2 設計原理 . 3 2.1 設計思路 . 3 2.2 dos 及其功能調用 . 3 2.3 ascii碼 . 5 3 程序設計 . 6 3.1 程序流程圖 . 6 3.2 程序說明 . 7 4 程序調試與運行 . 9 4.1 調試過程 . 9 4.2 調試中遇到的問題 . 10 心 得 體 會 . 11 參 考 文 獻 .

2、 12 1 摘 要在科技飛速發展的今天。計算機在人們的日常生活,工業生產,科技研發,航空航天領域都有不可替代的作用。而這一切的基礎都是計算機。 可見計算機的重要性,而計算機的發展速度更是驚人,最初的計算機,體積龐大,結構復雜,只有專業人員才能操作, 但是,經過了僅僅幾十年的發展, 計算機已經被縮小到很微型了,操作也更加簡單,結構更加清晰明了,而其中為代表的就是8086 系列的微處理器的出現, 徹底改變了之前計算機體積龐大的缺憾。但是無論如何發展計算機都是遵循著馮諾依曼的結構發展的。匯編語言是微機原理及應用的基礎, 微機主機及接口所要實現的功能都要通過匯編語言來實現。 盡管匯編語言程序設計編程效

3、率偏低,但運行效率高、 速度快。因此掌握匯編語言是學好微機原理及接口技術的第一步。本次課程設計正是通過匯編語言來完成對三個數能否構成三角形的判斷,來讓我們掌握匯編語言,微機原理和接口的關系。關鍵詞:匯編語言,計算機發展,微機原理及接口技術2 1 設計意義及要求1.1 設計意義匯編語言是微機原理及應用的基礎, 微機主機及接口所要實現的功能都要通過匯編語言來實現。 盡管匯編語言程序設計編程效率偏低,但運行效率高、 速度快。因此掌握匯編語言是學好微機原理及接口技術的第一步。本次課程設計正是通過匯編語言來完成對三個數能否構成三角形的判斷,來讓我們掌握匯編語言,微機原理和接口的關系。1.2 設計要求初始

4、條件:采用 16 位微處理器 8086 cpu以及 86 系列微型計算機的指令系統;軟件設計平臺為多功能微型計算機實驗軟件mfs中的微機原理實驗集成環境 mf2kp 。要求完成的主要任務 :1、設計匯編語言程序,實現判斷是否能構成三角形的功能,具體功能要求如下:輸入 a,b,c 三邊后,判斷是否能構成三角形,如能構成三角形,輸出三角形的周長,否則輸出“error” 。要求:提示輸入三角形三邊長度a b c ;鍵盤輸入,中間空格隔開; enter 鍵結束輸入,并換行顯示判斷結果。2、根據功能要求繪制程序流程圖、編寫完整的匯編語言程序并上機調試:3 2 設計原理2.1 設計思路本次設計是利用匯編語

5、言來實現判斷三個數是否構成三角形的功能。倘若能構成三角形,必定兩邊之和大于第三邊。 利用匯編語言中的順序結構、 分支結構、循環結構、 子程序以及各種指令語言來完成。首先繪制流程圖, 根據流程圖來編寫程序,檢查無誤后上機調試。2.2 dos 及其功能調用dos 不僅為用戶提供了許多使用命令,而且還有用戶可以直接調用的上百個常用子程序。 對這些子程序的調用, 稱為系統功能調用。 這些子程序的功能只要是進行磁盤讀 / 寫、控制管理、內存管理、基本輸入/ 輸出管理等。在使用時,用戶不需要了解各種 i/o 接口硬件的詳細情況就能直接完成對i/o 接口的控制和管理。為了使用方便, 將所有子程序從 1 號開

6、始順序編號, 這些編號成為 dos 功能調用號。其調用過程為:dos 功能調用號送 ah寄存器如果需要,按要求給定輸入參數(有的不需要輸入參數)寫入中斷指令“ int 21h”調用結束,按功能使用其輸出參數。表 1 字符 i/o 系統功能調用功能號功能入口參數出口參數01h 帶回顯的鍵盤輸入al= 輸入字符06h 直接控制臺 i/o dl=ff(輸入)dl=字符(輸出)al= 輸入字符0ah 字符串緩沖輸入ds:dx=緩沖區首址02h 字符顯示dl=輸出字符04h 串行口輸出字符dl=輸出字符05h 字符打印dl=輸出字符09h 字符串顯示ds:dx=緩沖區首址0dh 初始化鍵盤4 1功能 0

7、1h 功能描述:從標準輸入設備 ( 如:鍵盤 ) 讀入一個字符。該中斷在處理過程中將一直處于等待狀態直到有字符可讀為止。該輸入還可被重定向,如果這樣做,則無法判斷文件是否已到文件尾。入口參數: ah 01h ,過濾掉控制字符,并回顯。出口參數: al輸入字符的 ascii 碼。例如:讀鍵盤輸入一個字符并且回顯的程序。mov ah,1 int 21h 2功能 02h 功能描述:向標準輸出設備 ( 如:屏幕)輸出一個字符。 該輸出還可被重定向,如果這樣做,則將無法判斷磁盤是否滿。入口參數: ah 02h ,dl待輸出字符的 ascii 碼。出口參數:無。其基本格式如下:mov ah,2 mov d

8、l, 要顯示的字符的 ascii int 21h 3. 功能 09h 功能描述:輸出一個字符串到標準輸出設備上。如果輸出操作被重定向,那么,將無法判斷磁盤已滿。入口參數: ah 09h ,ds:dx 待輸出字符的地址 , 待顯示的字符串以 $作為其結束標志 , 否則會引起屏幕混亂。顯示時在字符串結束前加上回車及換行的ascii 碼 0dh和 0ah ,可使光標自動換行。出口參數:無。其基本格式如下:mov ah,9 lea dx, int 21h 5 2.3 ascii碼由于計算機硬件只能識別二進制數, 字母和字符也必須使用二進制編碼來表示。目前用來表示字母和字符的二進制編碼方式有很多種,最常

9、用的是ascii碼。多用于輸入輸出設備(如電傳打字機),是 7 位二進制編碼。它總共可表示128 個符號,包括 26個英文大寫字母,26 個英文小寫字母, 09 共十個數字,32 個通用控制字符和34個專用字符。在計算機中用一個字節存放字符編碼, 故在 ascii 的最高位補 0。 因此 ascii可表示 8 位二進制或兩位 16 進制數。本設計所需要的空格的ascii 碼為 20h,回車及換行的 ascii 碼 0dh 和 0ah,數字 09 為 30h39h。6 3 程序設計3.1 程序流程圖圖 1 主程序設計流程圖由于需要通過鍵盤輸入字符,需要調用dos系統的 int 21h 一系列子功

10、能從鍵盤輸入字符然后顯示出來。開始要定義數據段和代碼段,接著初始化, 通過開始定義數據段和代碼段及初始化分別輸入 3 個數 a、b、c,回車將 a、b、c ascii值轉化為數值型a+b 與 c比較 jbe b+c 與 a比較 jbe a+c 與 b比較 jbe 顯示“能構成三角形以及周長”顯示 error y y y ax 清零將 bx 值賦予 ax ax 與 cx 相加存于ax ax 與 dx 相加存于ax 將數字化為十進制顯示周長數值結束n n n 7 調用 09h 號子功能在屏幕上顯示“please input three nums a b c: ” ,回車通過調用子程序對輸入的數字進

11、行比較判斷能否構成三角形。若能則通過02h 號子功能在屏幕上顯示“ yes, they can construct a triangle. ”并對三個數進行相加所得結果也要通過 02h 號子功能在屏幕上顯示“the girth of the triangle is:” 。若不能構成三角形則顯示“ error,please re-enter ”可以繼續輸入三個數進行判斷。3.2 程序說明1、代碼段定義代碼段需要定義預顯示的字符,并以$字符結束。還需要定義預輸入字符串的緩沖區,緩沖區的第一個字節存放能保存的最大字符數,第二個字節存放實際輸入的字節數,遇到回車停止輸入。本設計段碼定義如下:stack

12、 segment stack db 400 dup(?) stack ends data segment str0 db 13,10,please input three nums a b c:,$ str1 db 13,10,yes, they can construct a triangle.,$ str2 db 13,10,the girth of the triangle is: ,$ str3 db 13,10,error,please re-enter ,$ data ends code segment assume ds:data,cs:code,ss:stack 2、數值轉換利

13、用 09 數字的 ascii 值比本身大 30h的關系,將對應的字符轉換為十進制。 本設計數值轉換程序代碼如下:mov ch,10 div ch 3、判斷能否構成三角形本次設計針對所給題目進行了改善,程序如下所示, 倘若所輸入的三個數不能夠成三角形,則可以回車繼續輸入三個數進行進一步判斷。mov ax,bx 8 add ax,cx cmp ax,dx jbe la1 mov ax,cx add ax,dx cmp ax,bx jbe la1 mov ax,dx add ax,bx cmp ax,cx jbe la1 la1: mov dx,offset str3 mov ah,9 int 21

14、h jmp a3 4、計算三角形周長首先將 ax清零,將三個數字相加的結果存放在ax中,用數值轉換代碼將ascii碼轉化為十進制,然后通過02h號子功能在屏幕上顯示計算結果。xor ax,ax mov ax,bx adc ax,cx adc ax,dx mov ch,10 div ch mov bl,ah add al,30h mov dl,al mov ah,2 int 21h add bl,30h mov dl,bl mov ah,2 int 21h 9 4 程序調試與運行4.1 調試過程通過以上步驟在 mf2kp 軟件中進行調試,首先輸入源程序,點擊匯編后,檢查是否存在錯誤,修改好所有出

15、現的錯誤后,運行。dos 系統的 int 21h 下的 09h 字功能以“ $”為結束符,自動結束字符串的顯示,所以運行后屏幕首先顯示“ please input three nums a b c: ”隨后輸入三個數字圖 2 輸入任意三個數字回車后計算機判斷這三個數能否構成三角形并計算所構成三角形的周長,顯然如圖 2 所示的三個數能構成三角形,且周長應該是12。圖 3 顯示是否能構成三角形以及周長如果輸入的三個數不能構成三角形,顯示如下。出現“error,please re-enter ”,10 此時回車可繼續輸入三個數進行運算。圖 4 不能構成三角形圖 5 繼續輸入三個數字進行判斷4.2 調

16、試中遇到的問題一開始的時候程序匯編不能成功。經過仔細檢查后發現,有些程序代碼有邏輯上的錯誤, 而且對于輸入法和符號都有很高的要求,經過不斷排查糾正, 最終程序能夠順利運行。此次程序設計主要包括調用dos 系統的 int 21h 功能從鍵盤輸入字符然后顯示字符, 通過調用相應的字程序判斷所輸入的三個數能否構成三角形。通過編寫相應的主程序和func1 proc、計算周長兩個子程序,經反復調試、運行及修改得出滿足要求的程序,從而完成此次課程設計。11 心 得 體 會這是本學期的第二次課程設計。 我個人比較喜歡微機原理這門課程,因為它可以讓冷冰冰的機器聽話地運行,執行各種指令。 剛剛開課之初也是抱著很

17、高的積極性去學的。 但是最初接觸微機原理這門課時感覺很深奧,很晦澀難懂。 因為是和機器打交道, 因此要說些機器聽得懂的語言,就是所謂的匯編語言, 但是匯編語言靈活多變, 有各種省略和等效的形式, 有較多的指令和要求, 而每一條指令又有不同的使用情況, 但是經過了一個學期的學習和磨練,我對與微機原理這門課程也越來越熟悉了, 本次課設也是一次不可多得的檢驗自己所學知識的好機會。因此做的比較認真。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務, 從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題, 可以說得是困難重重, 這畢竟第一次做的, 難免會遇到過各種各樣的問題, 同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。在這次課程設計中,我真正體會到了合作的重要性,遇到很多的問題,當我看書查看資料不能解決時,去找同學討論收獲很大,可以使很多問題迎刃而解,知道問題最終解決。 不可否認, 本程序存在很多不足和缺點,但通過這次課程設計找出了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論