匯編語言課程設計-pdf_第1頁
匯編語言課程設計-pdf_第2頁
匯編語言課程設計-pdf_第3頁
匯編語言課程設計-pdf_第4頁
匯編語言課程設計-pdf_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 匯編語言課程設計 題目:中斷技術程序設計 姓名:、大川 學號:、 班級:12計算機應用技術(1)班 指導老師:、 日期: 2013年12月13日 目 錄 第 9 頁 12計算機應用技術(1)班 大川一、匯編語言 1、匯編語言(Assembly Language)是面向機器的程序設計語言。在匯編語言中,用助記符Memoni)代替機器指令的操作碼,用地址符號(Symbol)或標號(Label)代替指令或操作數的地址,如此就增強了程序的可讀性并且降低了編寫難度,象這樣符號化的程序設計語言就是匯編語言,因此亦稱為符號語言。使用匯編語言編寫的程序,機器不能直接識別,還要由匯編程序或者叫匯編語

2、言編譯器轉換成機器指令。匯編程序將符號化的操作代碼組裝成處理器可以識別的機器指令,這個組裝的過程稱為組合或者匯編。因此,有時候人們也把匯編語言稱為組合語言。簡介匯編語言是直接面向處理器(Processor)的程序設計語言。處理器是在指令的控制下工作的,處理器可以識別的每一條指令稱為機器指令。每一種處理器都有自己可以識別的一整套指令,稱為指令集。處理器執行指令時,根據不同的指令采取不同的動作,完成不同的功能,既可以改變自己內部的工作狀態,也能控制其它外圍電路的工作狀態如圖所示,在電路中,每條機器指令都表現為一組電信號,通過一排導線進入處1 理器。這些電信號有的呈高電平,有的呈低電平,哪些為高,哪

3、些為低,取決于不同的機器指令。如果把高電平記為“1”,低電平記為“0”,那么,不同的機器指令將表現為不同的二進制序列,由于它們的無規律性,這就使得機器指令難以理解、書寫和記憶人類最容易接受自己每天都使用的自然語言。為了使機器指令的書寫和理解變得容易,需要借鑒自然語言的優點,為此就引入了匯編語言。匯編語言使用符號來代表不同的機器指令,而這些符號非常接近于自然語言的要素。基本上,匯編語言里的每一條指令,都對應著處理器的一條機器指令。匯編語言包括兩個部分:語法部分和編譯器。語法部分提供與機器指令相對應的助記符,方便指令的書寫和閱讀。當然,匯編語言的符號可以被人類接受,但不能被處理器識別,為此,還要由

4、匯編語言編譯器將這些助記符轉換成機器指令。根據應用領域的不同,處理器的種類繁多,比如用于工業控制和嵌入式計算的Z80、MC68000和MCS-51、廣泛應用于個人計算機的INTELx86系列,以及基于ARM體系結構的處理器,包括蘋果公司在內的大企業都是ARM的客戶。事實上,今天的ARM是最受歡迎的32位嵌入式處理器,而且,今天的ARM處理器比INTEL奔騰系列賣得還多,基本上是3:1的比例。不同的處理器有不同的指令集。正是因為這個原因,每一種處理器都會有自己專屬的匯編語言語法規則和編譯器。即使是同一種類型的處理器,也可能擁有不同的匯編語言編譯器。一個明顯的例子是INTEL x86系列的處理器,

5、圍繞它就開發出好多種編譯器來,如MASM、NASM、FASM、TASM和AT&T等。而且,這每一種編譯器,都使用不同的語法。2、優缺點優點 1、因為用匯編語言設計的程序最終被轉換成機器指令,故能夠保持機器語言的一致性,直接、簡捷,并能像機器指令一樣訪問、控制計算機的各種硬件設備,如磁盤、存儲器、CPU、I/O端口等。使用匯編語言,可以訪問所有能夠被訪問的軟、硬件資源。3、目標代碼簡短,占用內存少,執行速度快,是高效的程序設計語言,經常與高級語言配合使用,以改善程序的執行速度和效率,彌補高級語言在硬件控制方面的不足,應用十分廣泛。4、缺點1、匯編語言是面向機器的,處于整個計算機語言層次結

6、構的底層,故被視為一種低級語言,通常是為特定的計算機或系列計算機專門設計的。因此,不同的處理器有不同的匯編語言語法和編譯器,編譯的程序無法在不同的處理器上執行,缺乏可移植性; 5、難于從匯編語言代碼上理解程序設計意圖,可維護性差,即使是完成簡單的工作也需要大量的匯編語言代碼,很容易產生bug,難于調試; 6、使用匯編語言必須對某種處理器非常了解,而且只能針對特定的體系結構和處理器進行優化,開發效率很低,周期長且單調。3應用歷史上,匯編語言曾經是非常流行的程序設計語言之一。隨著軟件規模的增長,以及隨之而來的對軟件開發進度和效率的要求,高級語言逐漸取代了匯編語言。但即便如此,高級語言也不可能完全替

7、代匯編語言的作用。就拿Linux內核來講,雖然絕大部分代碼是用C語言編寫的,但仍然不可避免地在某些關鍵地方使用了匯編代碼。由于這部分代碼與硬件的關系非常密切,即使是C語言也會顯得力不從心,而匯編語言則能夠很好揚長避短,最大限度地發揮硬件的性能。二、匯編語言的特點 一方面,匯編語言指令是用一些具有相應含義的助憶符來表達的,所以,它要比機器語言容易掌握和運用,但另一方面,它要直接使用CPU的資源,相對高級程序設計語言來說,它又顯得難掌握。匯編語言程序歸納起來大概有以下幾個主要特性。 1、與機器相關性匯編語言指令是機器指令的一種符號表示,而不同類型的CPU有不同的機器指令系統,也就有不同的匯編語言,

8、所以,匯編語言程序與機器有著密切的關系。由于匯編語言程序與機器的相關性,所以,除了同系列、不同型號CPU之間的匯編語言程序有一定程度的可移植性之外,其它不同類型(如:小型機和微機等)CPU之間的匯編語言程序是無法移植的,也就是說,匯編語言程序的通用性和可移植性要比高級語言程序低。 2、執行的高效率正因為匯編語言有“與機器相關性”的特性,程序員用匯編語言編寫程序時,可充分發揮自己的聰明才智,對機器內部的各種資源進行合理的安排,讓它們始終處于最佳的使用狀態,這樣做的最終效果就是:程序的執行代碼短,執行速度快。現在,高級語言的編譯程序在進行寄存器分配和目標代碼生成時,也都有一定程度的優化(在后續課程

9、編譯原理的有關章節會有詳細介紹),但由于所使用的“優化策略”要適應各種不同的情況,所以,這些優化策略只能在宏觀上,不可能在微觀上、細節上進行優化。而用匯編語言編寫程序幾乎是程序員直接在寫執行代碼,程序員可以在程序的每個具體細節上進行優化,這也是匯編語言程序執行高效率的原因之一。 3、編寫程序的復雜性匯編語言是一種面向機器的語言,其匯編指令與機器指令基本上一一對應,所以,匯編指令也同機器指令一樣具有功能單一、具體的特點。要想完成某件工作(如計算:A+B+C等),就必須安排CPU的每步工作(如:先計算A+B,再把C加到前者的結果上)。另外,在編寫匯編語言程序時,還要考慮機器資源的限制、匯編指令的細

10、節和限制等等。由于匯編語言程序要安排運算的每一個細節,這就使得編寫匯編語言程序比較繁瑣、復雜。一個簡單的計算公式或計算方法,也要用一系列匯編指令一步一步來實現。 4、調試的復雜性在通常情況下,調試匯編語言程序要比調試高級語言程序困難,其主要原因有四: 匯編語言指令涉及到機器資源的細節,在調試過程中,要清楚每個資源的變化情況; 程序員在編寫匯編語言程序時,為了提高資源的利用率,可以使用各種實現技巧,而這些技巧完全有可能破壞程序的可讀性。三、課程設計的目的  培養學生熟練掌握匯編語言指令系統,深化和鞏固指令系統和編程方法,提高學生的編程應用能力。為將來從事專業工作打下基礎,培良好的職業道

11、德和嚴謹的工作作風。 綜合運用匯編語言的理論知識進行中斷處理程序設計,通過理論推導得出相應結論,通過修改中斷向量表,實現自己的中斷,在DOS環境下,能夠每隔一段時間中斷一次,并記錄次數。即在DOS環境上顯示次數。所使用的軟件主要有記事本、宏匯編6.0等。 四、課程設計的要求 要求:編寫一個中斷處理程序,要求在主程序運行過程中,每隔10秒響鈴一次,并記錄響鈴次數。同時在屏幕上顯示信息次數,按鍵后恢復原狀。 (1) 學會DOS的使用,掌握程序設計方法。 (2)掌握匯編語言的基本概念、基本理論和基本方法。 注意事項: (3)必須由中斷來實現

12、本設計。 (4)每次響鈴時間間隔必須相等。(5)具備初步的獨立分析和解決問題的能力;(6)初步掌握問題分析、系統設計、程序編碼、測試等基本方法和技能;(7)提高綜合運用所學的理論知識和方法的能力;(8)訓練用系統的觀點和軟件開發一般規范進行軟件開發,培養科學的工作方法和作風;(9)設計的題目要求達到一定工作量,并具有一定的深度和難度;五、課程設計報告內容 5.1設計思想本設計通過修改中斷向量表,將自己的中斷程序寫入中斷向量表。然后通過調用該中斷功能號來實現每隔10秒系統每調用一次該中斷并響一次鈴,而且在屏幕上顯示中斷次數,按回車鍵結束顯示。5、2設計方案 在本次課程設計的中

13、斷處理程序中,我們運用了寄存器和計數器、中斷指令INT1CH,在時鐘每中斷一次并計一次數時,先將各個工作寄存器的內容入棧,然后次數計數器就開始計數并轉換成ASCII顯示。其次,揚聲器發音、次數計數器在延時、關閉中斷,最后中斷返回。5、3設計步驟 a.分析問題 對于接受的任務要進行認真的分析,研究所給定的條件,分析最后應達到的目標,找出解決問題的規律,選擇解題的方法,完成實際問題。 b.設計算法 即設計出解題的方法和具體步驟。 c.編寫程序根據得到的算法,用一種高級語言編寫出源程序。并通過測試。 d .對源程序進行編輯、編譯和連接 e .運行程序,分析結果運行可執行程序,得到運行結果。能得到運行

14、結果并不意味著程序正確,要對結果進行分析,看它是否合理。不合理要對程序進行調試,即通過上機發現和排除程序中的故障的過程。 f.編寫程序文檔許多程序是提供給別人使用的,如同正式的產品應當提供產品說明書一樣,正式提供給用戶使用的程序,必須向用戶提供程序說明書。內容應包括:程序名稱、程序功能、運行環境、程序的裝入和啟動、需要輸入的數據,以及使用注意事項等。5.4流程圖: 設置中斷向量 清屏 開始 返回中斷 允許中斷 延 時 關中斷 恢復中斷向量 延時各工作寄存器內容入棧 揚聲器發音次數計數器加1轉換成ASCII顯示5.5程序源代碼:=DATAS SEGMENT org 2000hcount dw 1

15、mess db 0dh,0ah,'$'buf db 1 dup(1)asc db ?,?,'$'DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX mov al,1ch mov ah,35h int 21h push es push bx push ds mov dx,offset ring mov ax,seg ring mov ds,ax mov al,3ch mov ah,14h int 21h pop ds in al,21h and al,ofeh

16、out 21h,al sti mov di,1000delay: mov si,offfhdelay1: dec si jnz delay pop ds pop ax mov al,1ch mov ah,25h int 21h jmp startring proc push ds push ax push cx push al mov ds,datas mov ds,ax sti dec count jnz exit mov dx,offset mess mov ah,9 int 21h mov al,buf xor al,ah mov dl,10 div dl or al,30h mov a

17、sc,al or ah,30h lea dx,asc mov ah,9 int 21h mov dx,300h in al,61h and al,ofchsound: xor al,02h out 61h,al mov cx,oaffhwait1: loop wait1 dec al jnz sound mov count,181 inc bufexit:cli pop dx pop cx pop ds pop ax iretring endpCODES END END START= 5.6運行結果:6、 總結: 通過本次課程設計讓我充分了解了匯編在實際軟件開發中的作用和地位。在這次課程設計過

18、程中我們把課堂上的知識充分運用了還是不能完成實際軟件開發。這說明程序開發是不能夠停留在書本上的,想要把程序作好,必須要不斷通過各種途徑掌握更多更好的知識,并且最重要的是要將獲得的知識運用到實際編程中,要學以致用。本次課程設計是自由分組、自由選題。 兩周的課程設計結束了,在這次的課程設計中不僅檢驗了我所學習的知識,也培養了我如何去做一件事情,又如何完成一件事情的能力。在設計過程中,與同學分工設計、相互探討、相互學習。使我學會了合作,學會了寬容,學會了理解。 課程設計是我們專業課程知識綜合應用的實踐訓練,也是我們邁向社會,從事職業前一個必不少的過程。通過這次課程設計,我深深體會到“千里之行始于足下”這句千古名言的真正含義。今天認真的進行課程設計,學會腳踏實地邁開這一步,就是為明天能穩健地在社會中奮力前進打下堅實的基礎在這次課程設計過程中,體現出自己單獨設計學生管理系統,綜合運用知識的能力,體會了學以致用、突出自己勞動成果的喜悅心情,從中發現自己平時學習的不足和薄弱環節,從而加以彌補。雖然說在設計

溫馨提示

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

評論

0/150

提交評論