《微機原理課設報告》由會員分享,可在線閱讀,更多相關《微機原理課設報告(14頁珍藏版)》請在裝配圖網上搜索。
1、計算機與信息工程系
《系統接口設計》報告
專業(yè) 計算機與信息工程系
班級 Z090551
學號 Z09055109
姓名 王承玲
報告完成日期 2011-6-10
指導教師 趙國增
評語:
成績:
批閱教師簽名: 批閱時間:
摘要
《微型計算機原理與接口技術》這門課以Intel微處理器為背景,圍繞“基礎”
“主線”和“關鍵技術”展開。使我們掌握微型計算機的基本概念,介紹CPU、匯編程序設計及32位匯編程序
2、設計簡介、存儲器、I/O接口;結合微處理器的發(fā)展歷程,使我們了解微型計算機在不斷克服瓶頸效應,提高性能和速度方面,采用的技術和方法,如Cache、虛擬存儲、超標 量流水線,將微型計算機的發(fā)展作為貫穿教材的主線;將微型計算機的關鍵技術如存儲器的管理、中斷、DMA、系統總線、與外設的接口作為重點。微型計算機是現代社會不可缺少的智力輔導工具,面向21世紀的學子,只有學好《0微型計算機原理與接口技術》這門課,掌握匯編語言的編輯,調試技術及接口芯片的編程與使用,才能為以后應用微機解決工程實踐中的各種技術問題(參數測試,數據的采集處理,工程控制,生產自動化,設備的改造與研制)打下良好的基礎。而作為計算機專
3、業(yè)的學生學習這門課是必須的,是我們學習更深層次的專業(yè)知識的基礎。比如我們以后將要接觸更多的單片機,對單片機進行編程,用到的語言的就有匯編語言,當然也有用其他的語言的,如C語言,
匯編程序設計是計算機應用開發(fā)人員必須接受的最重要的專業(yè)基礎訓練之一,是計算機軟件、硬件研究的基礎,是一個優(yōu)秀的計算機工作者必須掌握的基礎知識和基本技能,匯編語言也是計算機能夠提供給用戶的最快而又有效的語言,也是能夠利用計算機所有硬件特性并能直接控制的唯一語言,因而,對程序的空間和時間的要求很高的場合,匯編語言是必不可少的。
目錄
4、
第一章 設計背景...............................................................3
1.2 本次設計目的 3
1.3 本次程序設計的原理 3
第二章 設計思想及題目分析 4
2.1 設計的指導思想 4
2.2 對設計題目的分析......................................................
第三章 源程序及流程圖 6
3.1 整個程序的流程圖: 6
3.2.程序源程序 8
第四章 運行結果 12
4.1 輸入時間前程序運行的界面 12
4.2
5、輸入時間后運行的界面 13
第五章 遇到的問題及解決的方法 13
第六章 心得體會 13
參考文獻 14
第一章 設計背景
1.1 本次設計的內容
編寫一個8086/8088匯編語言程序,是程序運行后屏幕顯示器成為一臺電子鐘。首先屏幕上顯示提示符,要求輸入當前時間,然后每隔一秒使顯示的秒之值加1,秒值清零;達到60 分時使小時加1,分值清零;達到24 小時則小時清零。上述過程一直進行下去,當按Ctrl+C時推退出“電子鐘”的狀態(tài),返回DOS。
1.2
6、本次設計目的
1..理解掌握定時/計數器和中斷的使用方法。
2.掌握微機常用的輸入輸出方式及接口技術。
3.掌握一定的匯編語言知識,培養(yǎng)自己的動操作手能力。
4.掌握程序設計的基本思路和方法。
1.3 本次程序設計的原理:
首先在數據段開辟一顯示緩沖區(qū),用來存儲輸入時間。調用DOS中斷,返回時間,并將來返回的二進制時間轉換成ASCII碼,方便時間顯示時的調用。分別將來小時數、分鐘數、秒數存入顯示緩沖區(qū),并最終存入一結束字符號‘$’。調用DOS字符串顯示功能將時間顯示出來,并調用屏幕I/O中斷,定位光標的開始位置,結合者將時間顯示在我們
7、預先定義好的位置上。由于獲取的時間不會自動刷新,所以我們要設計成刷新的方式來不斷獲取時間,這樣就形成了會跳動的電子時鐘了。調用延時中斷服務程序,累加到存放秒值的存儲器DL中,并進行十進制調整。在累加的過程中,不斷地對時分秒值進行比較,秒值不能等于60,分值不能等于60時不能等于24。秒值等于限制值時,則使秒值為0分值加1,分值等于限制值時,則使分值為0時值加1;時值等于限制值時,則使時值為0;時分秒值都不超過限制值時,就轉顯示屏輸出。時間顯示的刷新要配合延時程序進行,為了得到良好的顯示效果,延時程序要盡量接近1秒,但又不超過1秒,所以本程序調用了一段較精確的時間延時程序,利用BIOSS設計窗口
8、,選擇適當的背景和前景,使屏幕更加完美。程序一旦進入運行,就將不間斷地在顯示時間,要想停止時間,可按下Ctrl+C鍵返回DOS系統。
第二章 設計思想及題目分析
2.1 設計的指導思想:
彩色圖形是在圖形的方式下,由一組像素點在屏幕上形成的。圖形方式相對于文本方式所要處理的數據量大,而且不同的顯示適配器所支持的分辨率不同,因此同一彩色圖形在不同分辨率的情況下,處理的數據量差別很大。
在屏幕上繪制彩色的圖形,可用BIOS中的INT 10H的0號、11號、12號和13號功能調用。利用INT 10H的這些功能調用,就可以使屏幕上的繪圖比較簡單。通常情況下,有以下幾
9、步:
(1)用INT 10H的0號功能將顯示方式設置成320*200彩色圖形的方式。
MOV AH,0 ;設置顯示方式
MOV AL,4 ;置CGA為320*220彩色圖形方式
INT 10H ;BIOS中斷的調用
(2)用INT 10H的11號功能設置彩色圖形方式下的調色板或者背景顏色
MOV BH,0 ;設置背景色
MOV
10、 BL,C ;C=顏色值(0-16)
MOV AH,11 ;功能號送入AH
INT 10H
MOV BH,1
MOV BL,N
MOV AH,11
INT 10H
如果保持色調不變那么只需設置一次就可以了。若需要改變調色板,要注意的是調色板的改變將使整個屏幕的顏色發(fā),發(fā)生變化。
(3)在上述工作的基礎上,利用INT 10H的12號功能調用或13號
11、功能調用在屏幕上寫彩色像素點或讀彩色像素點。
MOV AH,12 ;12號功能調用,寫像素點
MOV AL,C ;C=像素點顏色(0-3)
MOV DX,ROW ;ROW=行號(0-199)
MOV CX,COL ;COL=列號(0-319)
INT 10H ;BIOS中斷調用
MOV AH,13
12、 ;13號功能調用,讀像素點
MOV DX,ROW ;ROW=行號(0-199)
MOV CX,COL ;COL=列號(0-319)
INT 10H ;BIOS功能調用
2.2 對題目進行分析:
顯示一個字符串,以及從鍵盤上接收一個字符串可分別通過09號和0AH號和DOS功能調用實現。延時一秒可以編寫一個延時子程序。程序中對時、分、秒三個時間單位與許多類似的操作。例如,分別將它們由ASCII碼轉換成BCD
13、碼,或由BCD碼轉換成ASCII碼,以及將時、分、秒值分別加1,可以采用宏處理偽指令,以便縮短源程序的長度,是程序更加清晰,有利于結構的模塊化。此外,還可以利用BIOS調用設計窗口,選擇適當的背景色和前景色等,使屏幕更加美觀。
第三章 源程序及流程圖
3.1 整個程序的流程圖:
圖3-1
3.2.源程序代碼:
DATA SEGMENT
BUF1 DB Please input the time : $
BUF2 DB 10
DB 10 DUP(?)
DATA ENDS
14、
STACK SEGMENT STACK
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS: CODE,DS:DATA
ASSUME SS: STACK
CURSOR MACRO ROW,CLM
MOV AH,2
MOV BH,0
MOV DH,ROW
MOV DL,
15、CLM
INT 10H
ENDM
WIN MACRO ROWL,CLML,ROWR,CLMR,COLOR
MOV AH,6
MOV AL,0
MOV CH,ROWL
MOV CL,CLML
MOV DH,ROWR
MOV DL,CLMR
MOV BH,COLOR
INT 10H
ENDM
ASCBCD
16、 MACRO REG
INC BX
INC BX
MOV REG,[BX]
MOV CL,4
SHL REG,CL
INC BX
MOV AL,[BX]
AND AL,0FH
OR REG,AL
ENDM
BCDASC MACRO REG
INC BX
INC BX
MOV AL,REG
17、 MOV CL,4
SHR AL,CL
OR AL,30H
MOV [BX],AL
INC BX
MOV AL,REG
AND AL,0FH
OR AL,30H
MOV [BX],AL
ENDM
INCBCD MACRO REG,COUNT
MOV AL,REG
INC AL
DAA
MOV REG,
18、AL
CMP AL,COUNT
JNZ DISPY
MOV REG,0
ENDM
STRDSPY MACRO ADRS
LEA DX,ADRS
MOV AH,9
INT 21H
ENDM
CLOCK PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS
19、,AX
WIN 0,0,24,79,7
WIN 9,28,15,52,01010111B
CURSOR 11,32
STRDSPY BUF1
CURSOR 13,36
LEA DX,BUF2
MOV AH,0AH
INT 21H
LEA BX,BUF2
ASCBCD CH
ASCBCD DH
ASCBCD DL
TIMER: CALL DELY
20、
INCBCD DL,60H
INCBCD DH,60H
INCBCD CH,24H
DISPY: LEA BX,BUF2
BCDASC CH
BCDASC DH
BCDASC DL
INC BX
MOV AL,$
MOV [BX],AL
PUSH DX
21、 CURSOR 13,36
STRDSPY BUF2
POP DX
JMP TIMER
DELY PROC
PUSH CX
PUSH AX
MOV AX,3FFFH
X1: MOV CX,0FFFFH
X2: DEC CX
JNE X2
DEC AX
22、 JNE X1
POP AX
POP CX
RET
DELY ENDP
CLOCK ENDP
CODE ENDS
END START
第四章 運行結果
4.1 輸入時間前程序運行的界面:
4.2 輸入時間后運行的界面:
第五章 遇到的問題及解決的方法
在這次課設中遇到的最大的問題就是如何讓使用BIOS中斷,為了
23、解決這個問題,我上網搜到了好多資料,并認真比對,學習如何應用,還有就是如何使用子程序的調用,我們又重新翻閱了平時的課本,對其進行深入的研究,總算解決了這個問題。
第六章 心得體會
這是我第一次接觸到匯編語言,并編寫一個大一點的程序,說實話,這個過程是比較艱難的,這個世道并不歡迎孤獨的英雄,因為一個人的力量有限,唯有團隊合作才能發(fā)揮出最大的能量。在這次課設中,,我真正體會到合作的重要性,我們這個班集體在這次課設中總在一起,從要實現的程序到流程圖的繪制,從程序的編寫到程序的檢查,,從程序的調試再到實驗報告的寫作,其間,每個過程都凝聚了我們班級的力量。在遇到的
24、棘手的問題,我們總是在一起討論,一起把問題解決;在我遇到不明白的程序時,是同學們給我耐心的講解;在我面對出錯的程序不知所措的時候,也是同學們幫我一步步地調試,耐心得指導,直至程序能正常運行,在查閱了大量的資料和參考了別人編的程序,最終合成出這個程序。
在這次課程設計中,我認識到自己在一些知識上還是一知半解,還有待進一步提高,我更加明白了做任何事都要腳踏實地、認真鉆研、嚴格謹慎。
參考文獻
【1】王士元,等.IBM PC/XT接口技術及其應用.天津:南開大學出版社,1990
【2】朱傳乃,等.微機系統原理分析與維修(上冊).北京:科學出版社,1990
【3】李伯成,等.80486/386系統設計和應用.成都:電子科技大學出版社,1992
【4】齊志儒,等.8086/8088匯編語言程序設計.北京:科學出版社,1994
【5】王閔,等PC匯編語言程序設計. 西安:西安電子科技大學出版社,2001
【6】鄭初華,等.匯編語言、微機原理及接口技術.北京:清華大學出版社,2003
【7】戴梅萼,等.微機原理及應用技術.北京:電子工業(yè)出版社,2006