第一篇:微機原理課程設(shè)計——輸出楊輝三角
目錄
第一章 緒論...................................................................................................................................1 第二章 分析與設(shè)計.......................................................................................................................2 2.1 題目.......................................................................................................................................................2 2.2 要求.......................................................................................................................................................2 2.3 方案設(shè)計與論證...................................................................................................................................3 2.3.1 整體設(shè)計思路...........................................................................................................................3 2.3.2 方案選擇...................................................................................................................................3 2.4 結(jié)構(gòu)框圖...............................................................................................................................................4 3.1 宏定義換行...........................................................................................................................................5 3.2 階數(shù)輸入過程.......................................................................................................................................5 3.3 數(shù)據(jù)判斷功能.......................................................................................................................................6 3.4 詢問繼續(xù)模塊...................................................................7 3.5 數(shù)值計算模塊.......................................................................................................................................7 3.6 顯示模塊...............................................................................................................................................9 3.6.1 數(shù)據(jù)顯示.................................................................9 3.6.2 空格顯示................................................................10
第四章 實驗結(jié)果及問題處理.....................................................................................................12 4.1 實驗結(jié)果.............................................................................................................................................12 4.2出現(xiàn)的問題以及解決的方案..............................................................................................................13 4.2.1 數(shù)據(jù)輸入問題.........................................................................................................................13 4.2.2 除法溢出問題.........................................................................................................................13 4.2.3 數(shù)據(jù)計算問題.........................................................................................................................14 第五章 總結(jié)與體會.....................................................................................................................15 參考文獻.......................................................................................................................................17 附錄...............................................................................................................................................18
第一章 緒論
隨著電子計算機技術(shù)的不斷發(fā)展,微型計算機系統(tǒng)的功能越來越強,而關(guān)于計算機的程序設(shè)計語言也經(jīng)歷了一個發(fā)展的過程。從最基本的機器語言到匯編語言,并發(fā)展到高級的智能化語言,如visual C++、Visual Basic等。
匯編語言(Assembly Language)是一種采用助記符表示的程序設(shè)計語言,即用助記符來表示指令的操作碼和操作數(shù),用符號或標號代表地址、常量或變量。助記符一般都是英文單詞的縮寫,便于識別和記憶。使用匯編語言編寫的程序稱為匯編語言源程序。匯編語言源程序不能由機器直接執(zhí)行,而必須翻譯成有機器代碼組成的目標程序,這個翻譯的過程稱為匯編。把匯編語言源程序翻譯成目標程序的軟件稱為匯編程序。
匯編語言與機器語言密切相關(guān),它們之間有明顯的對應關(guān)系。一條匯編語言指令對應一條機器語言代碼,所以匯編語言和機器語言一樣都是面向機器的語言。使用匯編語言進行程序設(shè)計能充分利用機器的硬件功能和結(jié)構(gòu)特點,從而有效地加快程序的執(zhí)行速度,減少程序占用的存儲空間。所以匯編語言大量用于編寫計算機系統(tǒng)程序、實時通信程序和實時控制程序等。
匯編語言作為最基本的編程語言之一,匯編語言雖然應用的范圍不算很廣,但重要性卻勿庸置疑,因為它能夠完成許多其它語言所無法完成的功能。就拿Linux內(nèi)核來講,雖然絕大部分代碼是用C語言編寫的,但仍然不可避免地在某些關(guān)鍵地方使用了匯編代碼,其中主要是在Linux的啟動部分。由于這部分代碼與硬件的關(guān)系非常密切,即使是C語言也會有些力不從心,而匯編語言則能夠很好揚長避短,最大限度地發(fā)揮硬件的性能。
第二章 分析與設(shè)計
2.1 題目
匯編顯示楊輝三角
2.2 要求
基本內(nèi)容:在提示信息下,從計算機鍵盤輸入一個滿足要求的數(shù)據(jù),在輸出提示信息后顯示相應的楊輝三角。
具體要求如下:
(1)要有提示信息的輸出顯示,例如程序執(zhí)行時直接顯示輸出提示信息“Please input a number:”然后等待用戶從計算機鍵盤輸入具體數(shù)值,例如輸入“4”,然后換行顯示下一步提示信息,例如“The YangHui triangle:”最后顯示通過程序獲得的楊輝三角如下:
(2)分析楊輝三角具體算法,計算結(jié)果要求正確。輸出的楊輝三角要求上下左右對稱顯示,上下分別為兩個等腰三角形的形式,即要求分析總結(jié)每行行首空格數(shù)量,及三角中各個數(shù)之間空格的安排方法;(3)要求最少要能夠輸出10階的楊輝三角;
(4)提高要求:增大階數(shù)(最少到20階),可任意選擇正反三角顯示。
2.3 方案設(shè)計與論證
2.3.1 整體設(shè)計思路
本課題要求用匯編顯示楊輝三角形,首先得了解什么是楊輝三角形。楊輝三角形,又稱賈憲三角形,帕斯卡三角形,是二項式系數(shù)在三角形中的一種幾何排列。其每一行的數(shù)據(jù)都有其特定的規(guī)律,楊輝三角形又有其獨特的性質(zhì):
1、每行數(shù)字左右對稱,由1開始逐漸變大,然后變小,最后回到1。
2、第n行的數(shù)字個數(shù)為n個。
3、第n行數(shù)字和為2^(n-1)。
4、每個數(shù)字等于上一行的左右兩個數(shù)字之和,故可用此性質(zhì)寫出整個帕斯卡三角形。
5、第n行的第1個數(shù)為1,第二個數(shù)為1×(n-1),第三個數(shù)為1×(n-1)×(n-2)/2,第四個數(shù)為1×(n-1)×(n-2)/2×(n-3)/3···依此類推。
在熟悉了楊輝三角形的產(chǎn)生原理,楊輝三角形內(nèi)各數(shù)據(jù)的計算方法之后,再在掌握了相關(guān)匯編知識以及一定編程能力的基礎(chǔ)上,我們對課題進行了相關(guān)分析,總體來說,這個課題的關(guān)鍵點分為以下部分,厘清這些關(guān)鍵點也是作為明確整體設(shè)計思路的重要過程:
(1)、提示信息的顯示。題目明確要求顯示中要有提示信息,實際上,根據(jù)需要,在本課題中我們又加了一些功能,當然也必須要增加額外的提示信息。
(2)、階數(shù)的輸入功能。通過DOS系統(tǒng)功能調(diào)用,確定需要顯示楊輝三角形的行數(shù)與大小,能夠?qū)崿F(xiàn)簡單的人機交互。
(3)、編程得到需要在楊輝三角中顯示的數(shù)?;谝韵滤枷耄旱趎行的第1個數(shù)為1,第二個數(shù)為1×(n-1),第三個數(shù)為1×(n-1)×(n-2)/2,第四個數(shù)為1×(n-1)×(n-2)/2×(n-3)/3···依此類推。
(4)、某數(shù)的顯示及換行。為了顯示的規(guī)范和美觀,必須考慮到數(shù)與數(shù)之間的空格數(shù),當然,某數(shù)的顯示是能夠完整輸出楊輝三角形的基礎(chǔ)和前提。
(5)、新增功能,判斷輸入數(shù)據(jù)是否滿足條件,判斷是否繼續(xù)執(zhí)行??紤]到本程序的使用范圍及使用者能連續(xù)使用顯示楊輝三角形的方便性,特增加了數(shù)據(jù)判斷和詢問繼續(xù)功能,使用者想要繼續(xù)執(zhí)行即輸入“Y”,程序自動從頭開始執(zhí)行,若輸入“N”,則退出。2.3.2 方案選擇
1.對于階數(shù)輸入功能,我們想到兩種方案。
方案(1):參考相關(guān)文獻上得知,可以通過DOS系統(tǒng)功能調(diào)用:鍵盤輸入單字符——
號系統(tǒng)功能調(diào)用,同時實現(xiàn)字符的輸入與顯示。
調(diào)用格式:MOV INT
AH,1 21H 說明:1號功能調(diào)用無入口參數(shù),執(zhí)行時系統(tǒng)首先等待鍵盤輸入,待程序員按下任何一鍵,系統(tǒng)先檢查是否是Ctrl-Break鍵。如果是則退出,否則將鍵入的字符的ASCII碼置入AL寄存器,并在屏幕上顯示該字符。
方案(2):同樣是DOS系統(tǒng)功能調(diào)用,鍵盤輸入字符串——0AH號系統(tǒng)功能調(diào)用。說明:其功能是將鍵盤輸入的字符串寫入到內(nèi)存緩沖區(qū),因此調(diào)用之前必須事先定義一個緩沖區(qū)。緩沖區(qū)的第一個字節(jié)給出用來存放鍵入的字符數(shù),第二個留給系統(tǒng)填寫實際鍵入的字符個數(shù),從第三字節(jié)開始用來存放鍵入的字符串,最后鍵入回車(↙)鍵表示字符結(jié)束。
對于方案(1),格式簡單,使用方便,易于理解,但是對于輸入多位數(shù),相對有點復雜。對于方案(2),從實際編程水平出發(fā),不太能夠嫻熟的使用該系統(tǒng)功能,調(diào)用格式復雜,而且鑒于該程序輸入的位數(shù)不超過兩位,所以我們最后選擇了方案(1)。
2.4 結(jié)構(gòu)框圖
在編寫程序之前,明確其整個思路的流程圖是相當重要的,所以我們花了一些時間來畫出流程圖,根據(jù)流程圖來寫實際程序。如圖2.4.1為本程序的總體匯編思路圖。
圖2.4.1 程序總體流程圖
第三章 實驗程序及分析
3.1 宏定義換行
為了簡化匯編語言源程序,可以把一些頻繁出現(xiàn)的程序段定義為“宏指令”,當遇到這段程序時,只要按宏指令名調(diào)用即可,不必重復寫許多指令,匯編程序在遇到宏指令時將其期待成相應的代碼,這樣就有效地縮短匯編語言源程序的長度,使源程序易讀,也減少了由于重復書寫而引起的錯誤。在本課題中,為了顯示楊輝三角,必然需要多次使用換行代碼,故將換行代碼定義為“宏指令”,有以上所述的諸多好處。宏定義如下:
HUANH
MACRO
;宏名為HUANH
;使用2號功能,顯示器輸出字符;13即ASCII為0DH是回車符
;DOS系統(tǒng)功能調(diào)用
;10即ASCII為0AH是換行符;DOS系統(tǒng)功能調(diào)用;宏定義結(jié)束
MOV AH, 2
MOV DL, 13 INT 21H
MOV DL, 10 INT 21H ENDM
3.2 階數(shù)輸入過程
過程是程序的一部分,它可以被程序調(diào)用。每次可調(diào)用一個過程,當過程中的指令執(zhí)行之后,控制返回調(diào)用它的地方。過程的定義是用過程定義偽指令完成的。過程的定義有三個注意點:①、過程名是自定義符,定義開始和結(jié)束時的過程名必須相同。②、過程名有三個屬性:段地址,偏移量和距離屬性(NEAR和FAR),匯編程序在匯編時根據(jù)過程類型生成段內(nèi)或段間的調(diào)用或返回指令代碼。③、在一個過程中,可以有多個RET指令。一個過程總是通過RET指令返回,RET常作為過程的最后一條指令。在了解以上說明及注意點的基礎(chǔ)上,我們根據(jù)實際需要定義了一個實現(xiàn)階數(shù)輸入功能的過程。具體定義如下:
SHURU
PROC XOR
BP,BP MOV BX,10 MOV CX,3
;控制輸入位數(shù),外加一位回車
;輸入過程定義,數(shù)字存在BP
input:
MOV AH,1 INT CMP JZ
SUB 21H
;DOS功能調(diào)用,鍵盤輸入和顯示數(shù)據(jù)
AL,0DH OK AL,30H
;判斷是否以回車結(jié)束輸入
;將ASCII碼轉(zhuǎn)為16進制數(shù)
;字節(jié)擴展為字,為了下一條交換指令 CBW
XCHG AX,BP MUL ADD BX
;擴大10倍;加一位 BP,AX
LOOP input RET
;返回調(diào)用過程的地方;過程定義結(jié)束 OK: SHURU
ENDP
3.3 數(shù)據(jù)判斷功能
在第一套程序編寫完畢,試運行時,我們發(fā)現(xiàn),本程序能夠支持輸入的數(shù)據(jù)最大值為14,當數(shù)據(jù)大于等于15時,則程序出現(xiàn)除法溢出問題,并且自動關(guān)閉,所以為了能讓使用者不至于輸入不合法的數(shù)據(jù),我們特增加了數(shù)據(jù)判斷功能,輸入數(shù)據(jù)滿足條件,允許執(zhí)行。否則,提示輸入數(shù)據(jù)超過范圍,要求重新輸入。程序段如下:
MAIN: MOV
DX,OFFSET MSG
;輸出字符串,請輸入一個數(shù);9號功能調(diào)用,輸出字符串 MOV AH,9 INT 21H CALL SHURU CMP JB BP,15 MZTJ
;調(diào)用輸入函數(shù),顯示輸入的數(shù);輸入的數(shù)存在BP,與15比較;滿足條件,允許執(zhí)行;否則換行 HUANH MOV DX,OFFSET ERROR;準備顯示錯誤信息
MOV AH,9
INT 21H
HUANH
;繼續(xù)換行
JMP MAIN
;無條件跳轉(zhuǎn)到MAIN,重新開始 6
MZTJ: HUANH
··· ··· ···
3.4 詢問繼續(xù)模塊
在首套程序編寫完畢運行時,每次我們只能運行一次顯示楊輝三角的程序,以后還得重新鍵入相關(guān)命令,才能運行,如此調(diào)試程序,效率低下,且可能混亂我們對現(xiàn)象的記錄。所以考慮到我們調(diào)試程序的高效性及對于使用者的便利性,我們又增加了一個詢問繼續(xù)模塊,當?shù)谝淮螚钶x三角顯示完畢,提示是否繼續(xù),如果鍵入“Y”,則程序自動重新開始執(zhí)行;如果鍵入“N”,則程序運行結(jié)束,退出。程序段如下:
input1: HUANH MOV DX,OFFSET CON
;顯示提問字符串,繼續(xù)?
MOV AH,9
INT
21H
;判斷是否繼續(xù);鍵盤輸入數(shù)據(jù) MOV AH,1 INT CMP JNZ HUANH JMP 21H AL,59H exit1
;判斷輸入的是否是Y NEAR PTR MAIN
;段內(nèi)直接近轉(zhuǎn)移,可以轉(zhuǎn)移到段內(nèi)的任何一個位置;結(jié)束程序,返回DOS exit1:
MOV AH,4CH
INT 21H 3.5 數(shù)值計算模塊
本段數(shù)值計算,是正確顯示楊輝三角的關(guān)鍵,所以能否找到一種既簡便又能保證計算正確性的方法,是我們本階段工作的中心,我們參閱了很多資料,從幾種計算方法中,選取了最符合我們實際編程水平的,又在保證計算正確性的基礎(chǔ)上,寫出了如下的程序段,它的思想是基于:第n行的第1個數(shù)為1,第二個數(shù)為1×(n-1),第三個數(shù)為1×(n-1)×
(n-2)/2,第四個數(shù)為1×(n-1)×(n-2)/2×(n-3)/3···依此類推。
如圖3.5.1為本段程序的流程圖,文字描述即為上段。
Calculate:DEC
MUL
DIV
INC
CMP
JZ
PUSH
MOV
CALL
MOV
SUB
CALL
POP
CALL ok1:RET
圖3.6.1
數(shù)值計算流程圖
b;b每次減1相乘
b c;除以c,再加1 c b,0;b是否為0 ok1 AX;保存所得數(shù)據(jù)
d,0;此處d為位數(shù),為了顯示后面的空格 ShowNum AX,6;預設(shè),總共顯示的空格數(shù)為6個單位 AX,d;還需顯示多少空格
Showspace1 AX
Calculate;繼續(xù)執(zhí)行 8
3.6 顯示模塊
3.6.1 數(shù)據(jù)顯示
得到楊輝三角中的某一個數(shù)后,接下來的任務就是如何將它顯示出來。不能完成這項工作,就不能完成整個課題。我們小組在參考平時微機實驗的基礎(chǔ)上,自己分析,找到了一種正確的顯示方法:可以將某數(shù)不斷除以10,取出余數(shù)顯示,直到商為0,停止除法。例如:要顯示的數(shù)是345,除以10后,商為34,余數(shù)為5,5壓入堆棧。然后將34除以10,商為3,余數(shù)為4,4壓入堆棧。最后將3除以10,商為0,余數(shù)為3,3壓入堆棧。彈出堆棧,依次顯示,在匯編中,使用無符號數(shù)除法指令DIV OP。指令DIV BL,被除數(shù)存在AX中,整數(shù)商存在AL,余數(shù)存在AH。所以在除以10后,只需將AH中的值取出,下一次除法,可以用邏輯指令AND將其高八位屏蔽,調(diào)用2號功能,依次顯示。
為了能充分體現(xiàn)我們編程的思想,如圖3.6.1是數(shù)據(jù)顯示部分的流程圖,以下編寫的程序也是基于這種思想。
圖3.6.1
數(shù)據(jù)顯示流程圖
具體程序段如下:
ShowNum: MOV BX, 10
;BX中存除數(shù)10
CMP AX, 0 JZ
INC d ok2
;除法運算是否完畢
;此處d為位數(shù),以確定輸出的空格數(shù);除以10,整數(shù)商存在AL,余數(shù)存在AH DIV BL PUSH AX
AND AX, 00FFH;屏蔽高八位,取商 CALL
SHOWNum POP DX
;取出高八位,即為要顯示的余數(shù);轉(zhuǎn)為ASCII碼
MOV DL, DH OR DL, 30H
MOV AH, 2 INT RET 21H ok2: 3.6.2 空格顯示
空格的顯示,是為了調(diào)整整體楊輝三角的布局,使其輸出為美觀的等腰三角形。前期,我們采用在方格紙上試書寫的方式,確定需要顯示的空格數(shù)。實際編程中,使用到了3中空格形式,第一種是首數(shù)字1之前的空格,定義為AHEAD,第二種是首數(shù)字1后面的空格,定義為BETWEEN,第三種是和需顯示的數(shù)字位數(shù)相關(guān)的空格,定義為BACK,具體在程序中定義如下:AHEAD
DB
BETWEEN DB
BACK
DB
'
$' '
$' ' $' 定義了這三種空格后,需要將其顯示,這里我們使用DOS功能調(diào)用,9號系統(tǒng)功能調(diào)用——輸出字符串。功能是將指定的內(nèi)存緩沖區(qū)中的字符串在屏幕上顯示出來,緩沖區(qū)的字符串以“$”為結(jié)束標志。
Showspace: MOV BX, AX
nexts: MOV AH, 9 MOV DX,OFFSET AHEAD CMP BX, 0
;BX減1,控制輸出的空格數(shù)
;首行顯示空格,空格數(shù)即為輸入的階數(shù)
JZ dones
dones: INT DEC JMP RET 21H BX nexts
;完成顯示,返回;AX為6-數(shù)據(jù)位數(shù) Showspace1: MOV BX, AX
MOV AH, 9
MOV DX,OFFSET BACK next: CMP BX, 0
JZ done
INT 21H
DEC BX
JMP next done: RET
第四章 實驗結(jié)果及問題處理
4.1 實驗結(jié)果
通過對程序的多次完善,現(xiàn)在能夠達到的要求為:最小輸出1階,最大輸出14階的正反楊輝三角形,能夠判斷輸入數(shù)據(jù)是否合法,能夠詢問是否繼續(xù)輸出,當輸入階數(shù)較小時,也能夠很好的顯示輸出,輸出的正反楊輝三角形美觀、清晰,實現(xiàn)了題目所提出的基本要求,對于遇到的一些問題,將在下節(jié)討論,下面附上一些運行調(diào)試圖片。
如圖4.1.1和圖4.1.2為正反楊輝三角顯示圖,圖4.1.3為當輸入階數(shù)超出范圍時的提示錯誤信息,并要求重新輸入數(shù)據(jù)。
圖4.1.1
11階楊輝三角
圖4.1.2
繼續(xù)輸出的4階和6階楊輝三角
圖4.1.3
輸入階數(shù)不合法的提示界面
4.2出現(xiàn)的問題以及解決的方案
4.2.1 數(shù)據(jù)輸入問題
對于數(shù)據(jù)輸入,我們當初考慮到了兩種方法,在方案選擇中已論證了兩種方法各自的優(yōu)缺點,本來想使用0AH號系統(tǒng)功能調(diào)用,因為它能直接得到輸入的字符串,而不像1號系統(tǒng)功能調(diào)用那樣,只能夠輸入單字符,但是使用0AH號系統(tǒng)功能調(diào)用實際編寫程序時,卻不清楚輸入的字符串存放在內(nèi)存的哪個區(qū)域,雖然參考文獻上有相關(guān)說明,但是我們還是未能取出輸入的字符串,這對于我們是極大的打擊,因為階數(shù)輸入是完成整個課題的第一步,這一步基礎(chǔ)不做好,更不要提后面的計算、顯示了。
在要求首先能實現(xiàn)功能的情況下,我們還是選擇了1號系統(tǒng)功能調(diào)用,但是要加一個循環(huán)控制,控制輸入最大位數(shù)和ENTER的ASCII碼判斷輸入結(jié)束語句,因為是輸入的單字符,其ASCII碼存在AL寄存器中,所以對于2位數(shù),必須要先將其ASCII碼轉(zhuǎn)為16進制數(shù),將首先輸入的數(shù)乘以10,再加上第二次輸入的數(shù),得到實際鍵入的數(shù)值?;谝陨纤枷耄覀儗懗隽松鲜?.2節(jié)的階數(shù)輸入功能程序。4.2.2 除法溢出問題
由查閱資料可知,對于高階的楊輝三角形,其內(nèi)部的數(shù)據(jù)會變得相當大,當階數(shù)為15階時,其最大的數(shù)已經(jīng)超過65536,在數(shù)學上65536并不是一個特殊的數(shù),但是在計算機系統(tǒng)中,65536=2^16,在8086CPU內(nèi)部,有8個16為的內(nèi)部寄存器,當然累加器AX
也為16位,AX中能存放的最大的數(shù)為65536,分為高八位(AH)和低八位(AL),使用匯編的無符號數(shù)除法指令DIV OP,指令中給出的操作數(shù)是除數(shù),它可以是8位/16位通用寄存器及存儲器;被除數(shù)隱含在AX(字節(jié)除)或DX、AX(字除法)中。
查閱資料得到,可以使用特定指令,實現(xiàn)整數(shù)商存至AX,余數(shù)存至DX中,這樣能夠提高數(shù)值的上限,但是隨之而來的問題是,對于編程的復雜度的提高,楊輝三角的顯示格式問題,數(shù)據(jù)除以10取余數(shù)的顯示問題,從而影響到整個課題。所以考慮到限定的時間,輸出的美觀等因素,取折中選擇,我們只做到了14階,對于大于等于15階的階數(shù)輸入,我們增加了判斷語句,避免除法溢出問題。4.2.3 數(shù)據(jù)計算問題
眾所周知,楊輝三角形中的數(shù)據(jù)是有規(guī)律排列的,在上文整體設(shè)計思路中已經(jīng)闡述了一些規(guī)律。對于數(shù)據(jù)的計算,我們一開始考慮到的是某數(shù)等于其上一行左右兩數(shù)之和,依照此規(guī)律也可以寫出整個楊輝三角形,而且不需要進行乘除法運算,不會出現(xiàn)除法溢出問題。但是如何得到這個數(shù)的上一行的左右兩數(shù),這兩個數(shù)該存在哪里,卻是一個不容忽視的問題,而且會占用很大的內(nèi)存空間。
后來我們查閱資料,又得到一些規(guī)律,即第n行的第1個數(shù)為1,第二個數(shù)為1×(n-1),第三個數(shù)為1×(n-1)×(n-2)/2,第四個數(shù)為1×(n-1)×(n-2)/2×(n-3)/3···依此類推。這樣可以用DEC n和INC c,用乘除法指令就可運算出正確結(jié)果,但是前提是輸入的階數(shù)有限制,上一節(jié)已經(jīng)論證。為了能知道這一行到底要運算多少次,我們又加了一個CX控制其運算次數(shù),在計算前,對某一行的n,都要進行壓棧保護。綜上所述,我們寫出了上節(jié)結(jié)束輸入模塊的程序。事實表明,這樣的方法能夠計算出正確的數(shù)值。
第五章 總結(jié)與體會
微機原理與接口技術(shù),是我們電子科學與技術(shù)專業(yè)學生的專業(yè)課,由此可知,這門課對于我們的意義是多么重大。所以,在做這次微機的課程設(shè)計時,更是不敢怠慢。唯恐不能正確得到設(shè)計效果。
這次我們的課程設(shè)計的題目是:匯編顯示楊輝三角。剛拿到這個題目的時候,確實不知道從何下手,但是有句話說得好:不逼自己一把,怎么知道自己不可以?我們首先從什么是楊輝三角下手,查閱了相關(guān)資料,總結(jié)體會了楊輝三角的一些規(guī)律,這些規(guī)律能夠在我們編程過程中得以體現(xiàn),所以這個過程是必須的。
接下來,在熟悉了楊輝三角的基礎(chǔ)上,我們結(jié)合編程,總結(jié)了有幾個工作要做,一是:字符串的顯示;二是:楊輝三角值得計算;三是:這些數(shù)值的顯示;四是:輸出的排版問題,保證輸出美觀正確。把整個課題,分為以上四個部分后,各個擊破,從而高效的完成整個課題是一種很實用、有效的方法。雖然在這個過程中遇到了不少問題,但是我們小組成員都很積極的討論解決問題的方法。最后通過整合,得到了整個程序??傮w來說,這個程序雖然還不完美,但是代表著我們這一段時間以來的成果,我們都很欣慰,能夠?qū)崿F(xiàn)題目的要求。
這次微機原理課程設(shè)計歷時兩個星期,在整整兩星期的日子里,可以說苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。以前在上課的時候,老師經(jīng)常強調(diào)在寫一個程序的時候,一定要事先把程序原理方框圖化出來,但是我開始總覺得這樣做沒必要,很浪費時間。但是,這次課程設(shè)計完全改變了我以前的那種錯誤的認識,以前我接觸的那些程序都是很短、很基礎(chǔ)的,但是在課程設(shè)計中碰到的那些需要很多代碼才能完成的任務,畫程序方框圖是很有必要的。因為通過程序方框圖,在做設(shè)計的過程中,我們每一步要做什么,每一步要完成什么任務都有一個很清楚的思路,而且在程序測試的過程中也有利于查錯。
其次,以前對于編程工具的使用還處于一知半解的狀態(tài)上,但是經(jīng)過一段上機的實踐,對于怎么去排錯、查錯,怎么去看每一步的運行結(jié)果,怎么去了解每個寄存器的內(nèi)容以確保程序的正確性上都有了很大程度的提高。
通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服
務,從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。
這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在老師的辛勤指導下,終于游逆而解。同時學得到很多實用的知識,在此我表示感謝!同時,對給過我?guī)椭乃型瑢W表示忠心的感謝!
參考文獻
[1] 朱金鈞,麻新旗,等.微型計算機原理及應用技術(shù).機械工業(yè)出版社,第2版.附錄
匯編輸出楊輝三角程序代碼: HUANH MACRO
;宏定義5句代碼實現(xiàn)換行
MOV
AH, 2
DL, 13 21H DL, 10 21H
MOV
INT
MOV
INT ENDM
DATA SEGMENT
MSG
RESULT CON DB DB DB
'Please input a number: $' 'The YiangHui triangle:$'
'Do you want to continue?(Y/N): $' 'Data out of range!$' ERROR
DB
AHEAD
DB
'
$' BETWEEN DB BACK a
DB DW DW DW DW
'
$' ' $' ? ? ? ?
;記錄位數(shù),控制空格數(shù)
;a為階數(shù);b是行數(shù) b c
d
DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA
;輸入子程序,數(shù)字存在BP SHURU PROC
XOR
MOV
MOV BP,BP BX,10 CX,3
;控制輸入位數(shù),外加一位回車
input:
MOV
INT AH,1
21H
;鍵盤輸入數(shù)據(jù)
CMP
JZ AL,0DH
OK AL,30H
;以回車結(jié)束輸入
SUB
CBW
;化ASCII為HEX;字節(jié)擴展為字
OK:
SHURU START:
MAIN:
MZTJ:
XCHG MUL
ADD
LOOP
RET ENDP MOV
MOV
MOV
MOV
INT
CALL
CMP JB
HUANH MOV MOV
INT
HUANH JMP
HUANH MOV
MOV AX,BP BX
;擴大10倍 BP,AX
;加一位
input AX,DATA DS,AX
DX,OFFSET MSG;輸出字符串,請輸入一個數(shù) AH,9 21H SHURU
;調(diào)用輸入函數(shù),顯示輸入的數(shù)BP,15
;輸入的數(shù)在BP里 MZTJ
;滿足條件
DX,OFFSET ERROR
;準備顯示錯誤信息
AH,9
21H
MAIN DX,OFFSET RESULT;顯示提示字符串
AH,9
INT
HUANH
MOV
CALL
MOV
MOV
INT
CMP
JZ
MOV
MOV
MOV
DEC
CALL
exit: HUANH MOV
CALL
MOV
MOV
INT
JMP
yhsj: MOV
HUANH
DEC
MOV
CALL
MOV
MOV
INT
MOV 21H
AX,BP
;準備顯示楊輝三角,AX=BP=階數(shù)
Showspace DL,'1'
;第一行顯示空格完畢,輸出'1' AH,2 21H BP,1
;階數(shù)BP與1比較
exit b,2
;b=2 CX,BP;CX為階數(shù) a,BP;a為階數(shù) a
yhsj AX,BP
;準備顯示楊輝三角,AX=BP=階數(shù)
Showspace DL,'1'
;第一行顯示空格完畢,輸出'1' AH,2 21H NEAR PTR input1 c,1
;楊輝三角
BP AX,BP Showspace
;控制首數(shù)字前面的空格數(shù) DL,'1'
;首數(shù)字必為1
AH,2 21H DX,OFFSET BETWEEN
MOV
INT
MOV
PUSH
CALL
POP
INC
DEC
CMP
JA
DEC
CMP
JZ
CALL
ok3:
HUANH
INC
MOV
CALL
MOV
MOV
INT
input1: HUANH MOV
MOV
INT
MOV
INT
CMP
JNZ
HUANH AH,9 21H AX,1 b Calculate b b
;b為行數(shù)
CX CX,1 yhsj b b,2 ok3 fyhsj a AX,a Showspace DL,'1' AH,2 21H
;判斷是否繼續(xù)
DX,OFFSET CON;顯示提問字符串,繼續(xù)? AH,9 21H AH,1
;鍵盤輸入數(shù)據(jù)
21H AL,59H
;以回車結(jié)束輸入 exit1
JMP exit1: MOV
INT
fyhsj: MOV
HUANH
INC
MOV
CALL
MOV
MOV
INT
MOV
MOV
INT
MOV
DEC
PUSH
CALL
POP
INC
CMP
JB
RET Showspace:
MOV
MOV
MOV
nexts:
CMP
JZ NEAR PTR MAIN AH,4CH 21H c,1
;反楊輝三角
BP AX,BP Showspace DL,'1' AH,2 21H
DX,OFFSET BETWEEN AH,9 21H AX,1 b b Calculate b CX CX,a fyhsj BX, AX;首行顯示空格,空格數(shù)即為輸入的階數(shù)AH, 9 DX,OFFSET AHEAD BX, 0;BX減1,控制輸出的空格數(shù)
dones
INT
DEC
JMP
dones:
RET Calculate: DEC
MUL
DIV
INC
CMP
JZ
PUSH
MOV
CALL
MOV
SUB
CALL
POP
CALL
ok1:
RET ShowNum: MOV
CMP
JZ
INC
DIV
PUSH
AND
CALL
POP 21H BX nexts b b c c b,0 ok1 AX;保存所得數(shù)據(jù)
d,0 ShowNum AX,6 AX,d Showspace1 AX Calculate BX, 10;顯示某數(shù),并記錄位數(shù)AX, 0 ok2 d BL AX AX, 00FFH SHOWNum DX
ok2:
MOV
OR DL, DH DL, 30H AH, 2 21H MOV
INT
RET BX, AX AH, 9 DX,OFFSET BACK BX, 0 done 21H BX next Showspace1:MOV
next:
done:
RET
MOV
MOV
CMP
JZ INT
DEC
JMP
CODE ENDS
END START
第二篇:微機原理課程設(shè)計
電子信息科學與技術(shù)《微機原理》課程設(shè)計
一、本次課程設(shè)計的目的和意義
學習和掌握計算機中常用接口電路的應用和設(shè)計技術(shù),充分認識理論知識對應用技術(shù)的指導性作用,進一步加強理論知識與應用相結(jié)合的實踐和鍛煉。通過這次設(shè)計實踐能夠進一步加深對專業(yè)知識和理論知識學習的認識和理解,使自己的設(shè)計水平和對所學的知識的應用能力以及分析問題解決問題的能力得到全面提高。
二、設(shè)計時間、基本要求
(一)、設(shè)計時間:二周(二)、基本要求:
a.每題2人;b.設(shè)計出完整的接口電路;c.編寫出全部程序;d.在實驗系統(tǒng)上調(diào)試通過。
三、設(shè)計選題與要求
選題一:多路模擬數(shù)據(jù)采集系統(tǒng)設(shè)計
要求:設(shè)計一個2路以上的模擬數(shù)據(jù)采集系統(tǒng)。
1、用按鍵選擇那一路;
2、用LED顯示轉(zhuǎn)換結(jié)果(十進制數(shù));
3、將每一路采集的100個數(shù)據(jù)存放到各自的存儲區(qū)中。
選題二:溫度測控系統(tǒng)的設(shè)計
要求:利用ADC0809設(shè)計一個溫度測控系統(tǒng),在LED數(shù)碼顯示器上顯示溫度值,并對溫度進行測試和控制,當檢測溫度到達溫度上限60℃時開風扇(即開啟電動機,或以一個燈的亮滅表示),低于下限30℃時關(guān)閉風扇,LED上的顯示內(nèi)容為:XX ℃(采用十進制顯示)。
選題三:函數(shù)發(fā)生器的設(shè)計(一)要求:利用DAC0832設(shè)計一個函數(shù)發(fā)生器,并利用按鍵選擇輸出波形,能分別產(chǎn)生三角波、階梯波(每階梯1V)、正向鋸齒波、負向鋸齒波和方波。并利用按鍵(自行定義)進行輸出波形選擇,同時將當前輸出波形代號顯示在LED上(左邊位):0為方波、1為正向鋸齒波、2為負向鋸齒波、3 為三角波、4為階梯波。
選題四:函數(shù)發(fā)生器的設(shè)計(二)要求:設(shè)計一個三角波發(fā)生器,可利用鍵盤改變其輸出波形的幅值。例如,可利用1-5這5個數(shù)字鍵改變其輸出波形的幅值,當按下1-5數(shù)字鍵時使D/A輸出幅值從1V增加到5V。
選題五:電子音樂播放器
要求:設(shè)計要求:利用8253作為音階頻率發(fā)生器,應先對“2008年奧運會主題歌”進行編碼后存入音符表,并建立好音階表(只建立一個8度即可),音符長度不能少于60個,連續(xù)播放3遍后停止。
選題六:鍵盤電子樂器
要求:利用并行接口8155作為鍵盤接口,設(shè)計一個具有2個八度音階的鍵盤樂器,音階鍵不少于16個,采用掃描方式管理鍵盤,音域范圍自行定義。
選題七:電子時鐘設(shè)計
要求:利用8253定時器設(shè)計一個具有時、分、秒顯示的電子時鐘,并定義一個啟動鍵,當按下該
鍵時時鐘從當前設(shè)定值(可在顯示緩沖區(qū)中予置)開始走時。
選題八:壓力測控系統(tǒng)的設(shè)計(一)要求:對壓力傳感器的信號進行檢測并在LED數(shù)碼顯示器上顯示壓力值,當壓力低于30pa時,黃燈閃爍,閃爍周期為1秒。當壓力高于150pa時,紅燈閃爍。LED的顯示內(nèi)容為P=XXX。X為測試值。
選題九:可變輸出頻率方波發(fā)生器設(shè)計
要求:設(shè)計一個輸出方波頻率可利用按鍵改變的方波信號發(fā)生器(可以使用D/A也可以直接使用8253產(chǎn)生方波),利用鍵盤選擇方波發(fā)生器的輸出頻率并驅(qū)動喇叭。輸出頻率=鍵號*100HZ
選題十:直流電機速度控制器設(shè)計
要求:利用D/A轉(zhuǎn)換器和按鍵設(shè)計一個直流電動機轉(zhuǎn)速控制器。按鍵定義如下:0 停止,1-1/10轉(zhuǎn)速,2-2/10轉(zhuǎn)速?? 9 最高速(D/A輸出滿量程),鍵號每加1,D/A輸出增加0.5V
選題十一:可任意啟動/停止的電子秒表設(shè)計
要求:6位LED數(shù)碼顯示,計時單位為1/100秒。利用功能鍵進行啟/??刂?。其功能為:上電后計時器清0,當?shù)谝淮危ɑ蚱鏀?shù)次)按下啟/停鍵時開始計數(shù)。第2次(或偶數(shù)次)按下該鍵時停止計時,再一次按啟/停鍵時清零后重新開始計時??
選題十二:溫度測試系統(tǒng)設(shè)計
要求:利用溫度傳感器和ADC0809設(shè)計一個溫度測試系統(tǒng),將測試結(jié)果(十進制)在LED上顯示出來,并定義一個保持按鍵,當按下該鍵時,將當前測試值保持不變(按鍵不動作時為正常測量顯示)。溫度顯示格式為:XXX ℃。(可以每隔0.3秒測量一次)
選題十三:壓力測試系統(tǒng)設(shè)計(二)要求:利用壓力傳感器和ADC0809設(shè)計一個壓力測試系統(tǒng),并將測試結(jié)果(十進制)在LED上顯示出來,并定義一個測試最大值按鍵,當按下該鍵時,可進行最大值測量(按鍵不動作時為正常測量顯示),即:只有當當前測量值大于上次測量值時才刷新顯示,顯示格式為:P=XXX。可以每隔0.3秒測量一次。
選題十四:簡易計算器系統(tǒng)設(shè)計
要求:設(shè)計一個可以進行2位數(shù)四則運算的計算器。
1、用按鍵輸入數(shù)和運算符號;
2、用LED顯示運算過程和結(jié)果(十進制數(shù));
3、可以表示出當前的運算類型;
4、具有清零和復位功能;
5、具有連續(xù)運算功能。
選題十五:交通燈控制系統(tǒng)
要求:按照時間控制原則,利用并行接口和定時器,設(shè)計一套十字路口的交通燈管理系統(tǒng),通行時間(或禁止時間)30秒,準備時間3秒,在準備時間里黃燈閃爍3次,閃爍頻率為0.5秒,周而復始??衫?255、8253等接口電路。
選題十六:計件系統(tǒng)設(shè)計
要求:利用8253計數(shù),對外界脈沖技術(shù),并將計數(shù)值在數(shù)碼管上顯示,可通過鍵盤控制重新計數(shù)。
四、設(shè)計任務及要求
1、接口設(shè)計:根據(jù)所選題目和所用的接口電路芯片設(shè)計出完整的接口電路,并在實驗系統(tǒng)上完成電路的連接和調(diào)試通過。
2、程序設(shè)計:要求畫出程序框圖,設(shè)計出全部程序并給出程序設(shè)計說明和程序注釋。
3、課程設(shè)計報告:(1)設(shè)計題目;
(2)系統(tǒng)的主要功能、作用以及主要技術(shù)性能指標;
(3)總體設(shè)計方案、工作和組成原理(框圖)或設(shè)計說明、采用的技術(shù)路線等;
(4)系統(tǒng)設(shè)計:接口電路設(shè)計,程序設(shè)計(程序框圖和程序清單及注釋)其他有關(guān)的理論分析和計算;
(5)設(shè)計總結(jié):對整個設(shè)計工作過程進行歸納和綜合,對設(shè)計中所存在的問題和不足進行分析和總結(jié),提出解決的方法、措施、建議和對這次設(shè)計實踐的認識、收獲和提高。
第三篇:微機原理課程設(shè)計
匯編程序設(shè)計題
題目一 密碼設(shè)置模擬
該程序可以進行密碼的設(shè)置(第一次)和修改(已設(shè)置密碼)。要求輸入的密碼不顯示。題目二 計算器
編輯程序可以實現(xiàn)鍵盤輸入數(shù)據(jù)與運算符,進行“加減乘除”運算。(提示:先輸入數(shù)據(jù)與運算符,保存,再按照運算符選擇對應的子程序;輸入的數(shù)據(jù)是用字符表示的,需要轉(zhuǎn)換;要有良好的界面(提示信息))
題目三工作周期判斷程序
輸入年、月、日,能夠判斷當日的星期數(shù),并進行輸出。(以校歷為依照,可設(shè)某日為起點,根據(jù)相差的天數(shù)與7的關(guān)系進行判斷)。
題目四 PC揚聲器發(fā)聲
利用8253驅(qū)動PC機內(nèi)揚聲器發(fā)聲,PC結(jié)構(gòu)參考相關(guān)文獻資料。題目五 樂曲播放
利用PC機內(nèi)8253實現(xiàn)樂曲播放。題目六 按鍵選擇樂曲播放
利用按鍵選擇播放不同樂曲。(★)(自制交互界面實現(xiàn)按鍵選擇★★)題目七 實現(xiàn)閃爍文字效果 編程提示:
提示信息于屏幕中央顯示出來,用光標定位子程序?qū)⒐鈽硕ㄎ挥?0*25顯示方式的第8行第10列,然后輸出一條提示信息,接著調(diào)用屏幕上卷子程序上卷一行,接著再定位光標,然后顯示下一條提示信息,直到所有信息顯示完畢,對于閃爍的信息,同樣是定位光標,然后用BIOS功能調(diào)用13H來顯示閃爍信息,當BL的高位為1時,字符閃爍。mov ah,00h mov al,03h ;設(shè)置顯示方式為80*25,16色文本 int 10h 題目八
數(shù)字秒表
設(shè)計可以顯示1~60秒的無存儲功能的秒表,最小單位為毫秒。題目九
倒計時牌
設(shè)計日期倒計時牌界面,可輸入設(shè)定日期,顯示當前日期的統(tǒng)計天數(shù),如奧運計時牌。題目十
數(shù)字時鐘
編程實現(xiàn)時鐘功能,按秒刷新,要求定位在屏幕右上角。
硬件設(shè)計題
總體要求:根據(jù)題意自行設(shè)計電路,編寫相關(guān)匯編程序。題目一
交通燈控制系統(tǒng)
1.利用8253定時,8259中斷及8255設(shè)計電路,實現(xiàn)十字路口交通燈模擬控制。2.實現(xiàn)能自動控制和手動應急控制。
3.實現(xiàn)能隨時可以調(diào)整自動模式的綠燈和紅燈時間。題目二 實現(xiàn)特定功能的鍵盤及LED顯示
了解鍵盤及LED顯示接口原理,設(shè)計實驗電路圖完成以下功能: 1.按1鍵顯示年; 2.按2鍵顯示月日; 3.按3鍵顯示GOOD ;
4.按4鍵數(shù)碼管由左到右字符“0”循環(huán)顯示。5.自行設(shè)計特效顯示功能。題目三
LED七段數(shù)碼管數(shù)字鐘
設(shè)計并完成LED七段數(shù)碼管數(shù)字鐘電路,數(shù)字鐘顯示格式為:HH:MM:SS。要求:具有通過鍵盤能夠調(diào)整時、分、秒的功能。題目四
閃爍燈
利用8253和LED燈相結(jié)合實現(xiàn)閃爍燈效果。題目五
電子鐘
利用8253定時器設(shè)計一個電子鐘,并定義一個啟動鍵。當按下該鍵時電子時鐘從當前設(shè)定值開始走時。
附錄:實驗箱功能模塊電路圖
第四篇:2008微機原理課程設(shè)計
《微機原理及接口》課程設(shè)計任務書
適用專業(yè):05電子信息工程 通信工程
一、本次課程設(shè)計的目的和意義
學習和掌握計算機中常用接口電路的應用和設(shè)計技術(shù),充分認識理論知識對應用技術(shù)的指導性作用,進一步加強理論知識與應用相結(jié)合的實踐和鍛煉。通過這次設(shè)計實踐能夠進一步加深對專業(yè)知識和理論知識學習的認識和理解,使自己的設(shè)計水平和對所學的知識的應用能力以及分析問題解決問題的能力得到全面提高。
二、設(shè)計時間和設(shè)計題目
(一)、設(shè)計時間:一周(二)、設(shè)計題目:可從以下題目中任選一題,原則上每班每題不超過5人。每題的設(shè)計要求:a、設(shè)計出完整的接口電路。B、編寫出全部程序。
1、交通燈控制系統(tǒng):按照時間控制原則,利用并行接口和定時器,采用時間中斷方式設(shè)計一套十字路口的交通燈管理系統(tǒng),通行時間(或禁止時間)30秒,準備時間3秒,在準備時間里黃燈閃爍3次,閃爍頻率為0.5秒,周而復始??衫?255、8253、8259等接口電路。
2、溫度測控系統(tǒng)的設(shè)計:利用ADC0809采用中斷式設(shè)計一個溫度測控系統(tǒng),在LED數(shù)碼顯示器上顯示溫度值,并對溫度進行測試和控制,當檢測溫度到達溫度上限60℃時開風扇(即開啟電動機),低于下限30℃時關(guān)閉風扇,LED上的顯示內(nèi)容為:XX ℃(采用十進制顯示)。
3、函數(shù)發(fā)生器1的設(shè)計:利用D/A設(shè)計一個函數(shù)發(fā)生器,并利用按鍵選擇輸出波形,能分別產(chǎn)生三角波、階梯波(每階梯1V)、正向鋸齒波、負向鋸齒波和方波。并利用按鍵(自行定義)進行輸出波形選擇,同時將當前輸出波形代號顯示在LED上(左邊位):0為方波、1為正向鋸齒波、2為負向鋸齒波、3 為三角波、4為階梯波。
4、函數(shù)發(fā)生器2的設(shè)計:設(shè)計一個三角波發(fā)生器,可利用鍵盤改變其輸出波形的幅值。例如,可利用1---5這5個數(shù)字鍵改變其輸出波形的幅值,當按下1---5數(shù)字鍵時使D/A輸出幅值從1V增加到5V。
5、電子音樂播放器:設(shè)計要求:利用8253作為音階頻率發(fā)生器,應先對一段音樂進行編碼后存入音符表,并建立好音階表(只建立一個8度即可,音階表見附錄),音符長度不能少于60個,連續(xù)播放3遍后停止。
6、鍵盤電子樂器:利用并行接口8255作為鍵盤接口,設(shè)計一個具有2個八度音階的鍵盤樂器,音階鍵不少于16個,采用掃描方式管理鍵盤,音域范圍自行定義。
7、電子時鐘設(shè)計:利用8253定時器設(shè)計一個具有時、分、秒顯示的電子時鐘,并定義一個啟動鍵,當按下該鍵時電子時鐘從當前設(shè)定值開始走時。
8、壓力測控系統(tǒng)的設(shè)計:對壓力傳感器的信號進行檢測并在LED數(shù)碼顯示器上顯示壓力值,當壓力低于30pa時,黃燈閃爍,閃爍周期為1秒。當壓力高于150pa時,紅燈閃爍。LED的顯示內(nèi)容為P=XXX為測試值。
9、可變輸出頻率方波發(fā)生器設(shè)計:設(shè)計一個輸出方波頻率可利用按鍵改變的方波信號發(fā)生器(可以使用D/A也可以直接使用8253產(chǎn)生方波),利用鍵盤選擇方波發(fā)生器的輸出頻率并驅(qū)動喇叭。輸出頻率=鍵號*100HZ。
10、直流電機速度控制器設(shè)計:利用按鍵控制直流電動機的轉(zhuǎn)速。按鍵定義如下:0 停止,1 1/10轉(zhuǎn)速,2 2/10轉(zhuǎn)速…… 9 最高速(D/A輸出滿量程),鍵號每加1,D/A輸出增加0.5V。
11、可任意啟動/停止的電子秒表設(shè)計:6位LED數(shù)碼顯示,計時單位為1/100秒。利用功能鍵進行啟/??刂啤F涔δ転椋荷想姾笥嫊r器清0,當?shù)谝淮危ɑ蚱鏀?shù)次)按下啟/停鍵時開始計數(shù)。第2次(或偶數(shù)次)按下該鍵時停止計時,再一次按啟/停鍵時清零后重新開始計時……。12簡易計算器系統(tǒng)設(shè)計:設(shè)計一個可以進行2位數(shù)四則運算的計算器,要求:1,用按鍵輸入數(shù)和運算符號;2,用LED顯示運算過程和結(jié)果(十進制數(shù));3,可以表示出當前的運算類型;4,具有清零和復位功能;5,具有連續(xù)運算功能。
13點陣LED顯示系統(tǒng)設(shè)計:設(shè)計一個點陣式LED顯示系統(tǒng)。要求:1,每次顯示一個文字和圖形;2,每隔一固定時間更變需要顯示的文字或圖形;3,可以現(xiàn)實循環(huán)顯示幾個文字或圖形;4,可以根據(jù)按鍵來控制顯示的文字的替換時間的長短;5,具有復位功能。
三、設(shè)計任務及要求:
1、接口電路設(shè)計:根據(jù)所選題目和所用的接口電路芯片設(shè)計出完整的接口電路,并進行電路連接和調(diào)試。
2、程序設(shè)計:要求畫出程序框圖,設(shè)計出全部程序并給出程序設(shè)計說明和程序注釋。
3、設(shè)計文件:a、設(shè)計圖紙(接口電路原理圖);b、使用或操作說明;c、設(shè)計報告:字數(shù)約3000~4000字,內(nèi)容包括:(1)設(shè)計題目;(2)系統(tǒng)的主要功能作用及主要技術(shù)性能和指標;(3)總體設(shè)計方案及組成原理(框圖)或設(shè)計說明及技術(shù)路線;(4)系統(tǒng)設(shè)計:接口電路設(shè)計,程序設(shè)計(程序框圖和程序清單及注釋)其他有關(guān)的理論分析和計算;(5)設(shè)計總結(jié):對設(shè)計中所存在的問題和不足進行分析和總結(jié),提出解決的方法、措施、建議和對這次設(shè)計實踐的認識、收獲和提高。
4、設(shè)計要求:
不允許抄襲和復印,否則取消設(shè)計成績。
四、設(shè)計時間和成績分配:
(一)設(shè)計時間:一周(二)設(shè)計成績分配:
1、接口電路設(shè)計占30%(包括電路圖設(shè)計、電路連接和調(diào)試通過)。
2、設(shè)計文件占30%
3、答辯占40%
第五篇:微機原理課程設(shè)計
接口技術(shù)課程設(shè)計
一、設(shè)計內(nèi)容
設(shè)計一個投票統(tǒng)計器,完成投票、計票統(tǒng)計和票數(shù)顯示等功能。
二、設(shè)計原理及方案
在8086最小工作模式下,連接一塊8255A芯片。在 8255A的C端口連接8個開關(guān),開關(guān)按下表示支持,燈亮,開關(guān)不按便是反對,燈不亮,從8255A的C端口輸入投票結(jié)果,經(jīng)8086運算統(tǒng)計出結(jié)果;在 8255A的A端口連接一塊7段LED數(shù)碼管,將輸出結(jié)果通過數(shù)碼管顯示出來。電路圖:
接口技術(shù)課程設(shè)計
程序代碼: A_PROT B_PROT C_PROT CT_PROT DATA DATA CODE
MOV DX,C_PROT IN AL,DX EQU EQU EQU EQU 200H 202H 204H 206H
;可通過計算獲得,連接的是IO1 SEGMENT ENDS SEGMENT MOV AX,DATA MOV DX,AX MOV AL,10001001B MOV DX,CT_PROT OUT DX,AL
;控制字寫入
;A端口輸出,C端口輸入 TAB1 DB 7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FH ASSUME CS:CODE,DS:DATA
START: MOV DX,C_PROT MOV AL,0 OUT DX,AL
;C端口清零
AGAIN: TJ: XOR AH,AH
MOV CX,8 LOOP1: SAL AL,1
ADC AH,0
LOOP LOOP1
MOV AL,AH
PUSH BX
LEA BX,TAB1
XLAT
MOV DX,A_PROT
OUT DX,AL
PUSH CX
MOV CX,2801 WAIT1: LOOP WAIT1
POP CX
JMP AGAIN
MOV AH,4CH INT 21H CODE ENDS END START
接口技術(shù)課程設(shè)計
;統(tǒng)計1個數(shù)
;進位加CF,以統(tǒng)計出C端口中1的個數(shù)
;延時10ms
接口技術(shù)課程設(shè)計
三、運行結(jié)果
程序結(jié)果圖:
接口技術(shù)課程設(shè)計
四、設(shè)計總結(jié)與體會
為期一周的微機原理課程實踐終于結(jié)束了,回過頭來,感慨萬千。過了一個多月,書本上的好些知識已然忘卻,剛開始拿到課題時,看到一大堆傳說中的神器,霎時凌亂了,選來選去,從僅剩的課題中挑了“投票統(tǒng)計器”,上網(wǎng)搜索了一下,大體上把設(shè)計的方向搞清了,接下來,便是開始設(shè)計了。
畫模擬圖對于我們來說,還是比較困難的,特別是8086那一塊兒,大家參考網(wǎng)上的資料,反復討論,著實花了不少時間。接下來的畫圖連線就比較簡單了,為了節(jié)省時間,在做模擬圖的同時,其他兩個人便開始編寫程序了。將設(shè)計流程圖簡略寫下來,對照流程圖,分塊兒編寫程序,顯得很有條理,簡單輕松些。
就這樣,三次課之后,設(shè)計的圖和程序都好了,只剩下調(diào)試程序,查看模擬結(jié)果了。這是檢錯和糾錯的過程,輕松但也不輕松,因為那么多東西,如果看不仔細了,你就找不到錯誤,也就沒法兒解決問題了,費事費力還一無所獲,這是最傷腦筋的事情。還好,運氣不錯,只是程序出現(xiàn)了小小的問題,改好之后,得到了很滿意的結(jié)果。
最后的驗收,是對書本與實踐知識的融匯總結(jié),本以為毫無問題的我們,沒想到被程序中的一個問題給秒殺了,大家四處找資料,和別的組的同學討論,反復演算了半天,終于會了。當然,就算是會了,我們也只是懂得了微機原理中的一點皮毛而已,學的扎實很重要,因為這樣才能把理論知識運用到實踐中去,不斷地提高自己。
五、參考文獻 1.周明德.微型計算機系統(tǒng)原理及應用.北京:清華大學出版社
2.張彌左,王兆月,邢立軍等.微型計算機接口技術(shù).北京:機械工業(yè)出版社 3.戴梅萼,史嘉權(quán).微型計算機技術(shù)及應用.北京:清華大學出版社 4.沈美明,溫冬嬋.IBM-PC匯編語言程序設(shè)計.北京:清華大學出版社