久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

微機原理實驗三子程序設計實驗

時間:2019-05-12 17:57:21下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《微機原理實驗三子程序設計實驗》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《微機原理實驗三子程序設計實驗》。

第一篇:微機原理實驗三子程序設計實驗

實驗三 子程序設計實驗

一、實驗目的

1.學習子程序的定義和調用方法。2.掌握子程序的程序設計、編制及調用。

二、實驗設備

TDN86/88教學實驗系統一臺

三、實驗內容及步驟

1.求無符號字節序列中的最大值和最小值

設有一字節序列,其存儲首址為3000H,字節數為08H。利用子程序的方法編程求出該序列中的最大值和最小值。實驗程序及流程如下:

主程序STACK1SEGMENT STACK

開始DW 64 DUP(?)STACK1 ENDS CODE SEGMENT ASSUME CS:CODE START: MOV SI,3000H MOV CX,0008H CALL branch A1:JMP A1 branch: JCXZ A4 PUSH SI PUSH CX PUSH BX

結束序列的字節個數→CX數據區首址→SI調用求最大最小值子程序 MOV BH,[SI] MOV BL,BH A1: LODSB CMP AL,BH JBE A2 MOV BH,AL JMP A3 A2: CMP AL,BL JAE A3

Y子程序CX=0?NSI、CX、BX入棧[SI]→BHBH→BLSI+1→SI[SI]→ALNAL﹤BHAL→BHMOV BL,AL A3: LOOP A1 MOV AX,BX POP BX POP CX

YAL﹥BLYCX-1→CXNNAL→BLCX=0?POP SI A4: RET CODE ENDS END START

實驗步驟

(1)輸入源程序,進行編譯、鏈接和加載。

YSI、CX、BX出棧RET

(2)在調試區鍵入E0000:3000↙,輸入8個字節的數據:D9、07、8B、C5、EB、04、9D、F9。

(3)運行程序,查看結果,在調試區鍵入R AX↙,顯示結果應為AX=F9 04,AH中為最大值,AL中為最小值。

2.數組求和

設有一字節序列(存儲地址和字節數可自定義),編寫程序,求出該序列的和,求和工作由子程序來實現。

程序:

STACK1 SEGMENT STACK DW 64 DUP(?)STACK1 ENDS CODE

SEGMENT ASSUME CS:CODE START: MOV SI,3000H MOV CX,0008H XOR AX,AX CALL branch A5: JMP A5 branch: JCXZ A4 PUSH SI

PUSH CX A1: ADD AL,[SI] INC SI A3: LOOP A1

POP CX POP SI A4: RET CODE

ENDS END START

8個01,總和為08

第二篇:微機原理實驗總結

微機原理實驗總結

不知不覺,微機原理與接口技術實驗課程已經結束了?;叵肫饋硎芤娣藴\,主要是加深了對計算機的一些硬件情況和運行原理的理解和匯編語言的編寫匯編語言,對于學習機電工程的自動控制和計算機都是很重要的,因為它是和機器語言最接近的了,如果用它來編程序的話,會比用其它高級語言要快得多。本學期我們在老師的帶領下,進行了微機原理實驗六到十這五組實驗。它們分別是: 實驗六

8255 PA口控制PB口

實驗目的掌握單片機系統中擴展外圍芯片的方法,了解 8255 芯片的結構及編程方法。實驗內容

用 8255 PA 口作開關量輸入口,PB 口作輸出口。

實驗步驟

1、用8 芯線將8 255 PA口接至開關Kl~K8,PB口接至發光二極管L1~L8;

2、運行程序 HW06.ASM,撥動開關K1~K8,觀察L1~L8發光二極管是否對應點亮。

實驗七

8255控制交通燈

實驗目的進一步了解8 255 芯片的結構及編程方法,學習模擬交通控制的實現方法。

實驗內容

用8255 做輸出口,控制六個發光二極管燃滅,模擬交通燈管理。

實驗步驟

1、用雙頭線將 8 255 PA0~PA2 口接至發光二極管L3~L1,PA3~PA5口接至發光二極管L7~L5;

2、執行 程序HW07.ASM,初始態為四個路口的紅燈全亮,之后,東西路口的綠燈亮,南北路口的紅燈亮,東西路口方向通車,延時一段時間后東西路口的綠燈熄滅,黃燈開始閃爍,閃爍若干次后,東西路口紅燈亮,而同時南北路口的綠燈亮,南北路口方向開始通車,延時一段時間后,南北路口的綠燈熄滅,黃燈開始閃爍,閃爍若干次后,再切換到東西路口方向,之后重復以上過程。實驗八

簡單I /O口擴展

實驗目的學習單片機系統中擴展簡單I/O 口的方法; 學習數據輸入輸出程序的編制方法。實驗內容

利用74LS244 作為輸入口,讀取開關狀態,并將此狀態,通過74LS273再驅動發光二極管顯示出來。

五、實驗步驟

1、用8 芯線將Y0~Y7接至開關K1~K8,Q0~Q7 接至發光二極管L1~L8,用雙頭線將 CS1 接至8 000 孔,CS2 接至9 000 孔,用8 芯線將J X0 接至JX7(D0~D7數據線);

2、執行程序 HW08.ASM,按動開關K1~K8,觀察發光二極管L1~L8是否對應點亮。

實驗九

A/D 0809轉換實驗

實驗目的)掌握A/D 轉換與單片機接口的方法;)了解A/D 芯片0809轉換性能及編程方法;)通過實驗了解單片機如何進行數據采集。實驗內容

利用實驗系統上的 0809 做A /D 轉換器,實驗系統上的電位器提輸入,編制程序,將模擬量轉換成數字,通過數碼管顯示出來。實驗步驟

1、用雙頭線將可調電壓區的VOUT接至ADC0809 模數轉換區的IN0,可調電壓區的VIN 接至電源+5V,ADC0809 模數轉換區的CS4 接至系統接口區的8000H 端口,ADC0809模數轉換區的WR接至系統接口區的/IOWR端口,ADC0809 模數轉換去的 RD 接至系統接口區的/IORD,ADC0809 模數轉換區的ADDA、ADDB、ADDC接至G ND,CLK接至單脈沖與時鐘區的500K,用8 芯線將數據總線JX0 接至A DC0809模數轉換區的JX6;

2、運行程序 HW09.ASM,數碼管上顯示0809.XX,后二位顯示當前采集的電壓轉換的數字量,調節可調電壓,該二位將隨著電壓變化而相應變化,變化范圍為00至FF。

實驗十

D/A 0832轉換實驗

實驗目的(1)了解D/A 轉換與單片機的接口方法;

(2)了解D/A 轉換芯片 0832 的性能及編程方法;

(3)了解單片機系統中擴展D/A 轉換芯片的基本方法。

實驗步驟

1、用雙頭線將DAC0832 數模轉換區的CS5 端口接至系統接口區的8000H端口,WR端口接至系統接口區的/IOWR端口,AOUT輸出接電壓表或小直流電機DJ,用8 芯線將DAC0832 數模轉換區的JX2 接至數據總線JX0

2、運行程序HW10.ASM,數碼管上顯示不斷加大或減小的數字量,數字變化范圍 00 到FF,用萬 用表測試 D/A 輸出孔 AOUT 應能測出不斷加大或減小的電壓值,電壓變化范圍 0V 到5V。

這次實驗課程加深了我們對匯編語言指令的熟悉和理解。不僅鞏固了書本所學的知識,還具有一定的靈活性,發揮了操作,加深了我們對硬件的熟悉,鍛煉了動手能力,發揮創造才能。

通過這次課程使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。

這門課程可以闡明微處理器,匯編語言程序設計,計算機結構和操作系統等基本概念。詳盡地論述了有關微處理器及其指令系統的概念和程序設計方法,介紹構成微型計算機的存儲器,接口部件,總線等各項技術。.微機的最基礎語言--匯編語言是一個最基礎最古老的計算機語言,依賴于計算機的低級程序設計語言。匯編語言是我們理解整個計算機系統的最佳起點和最有效途徑。匯編是對寄存的地址,以及數據單元進行最直接的修改,而在某些時候,這種方法的確是最有效,也是最可靠的.然而有優點,自然也就有缺點,最重要的一點就是匯編語言很繁瑣,對某個數據進行修改時,本來很簡單一個操作會用很多條繁瑣的語句來解決,而這些語句本身在執行和操作的過程中,占用大量的時間和成本。并有大量的程序和硬件設計類題目,使我們能夠深入了解計算機的原理、結構和特點,以及如何運用這些知識來設計一個實用的微型計算機系統。具體來說,就是掌握Intel8086/8088微型計算機系統地組成原理,熟練運用8086宏匯編語言進行程序設計,熟悉各種I/O接口芯片的配套使用技術,并通過一定的課程實驗與實踐,進一步提高系統設計的能力,使學生能夠完成實用的微型計算機系統的軟硬件設計。

學習該門課程知識時,其思維方法也和其它課程不同,該課程偏重于工程思維,具體地說,在了解了微處理器各種芯片的功能和外部特性以后,剩下額是如何將它們用于實際系統中,其創造性勞動在于如何用計算機的有關技術和廠家提供的各種芯片,設計實用的電路和系統,再配上相應的應用程序,完成各種實際應用項目。

這次實驗并不是很難,主要的困難來自對程序的理解。我們最后對實驗的原理有了清晰的認識。讓我們知道了實驗臺上各個模塊的用法;而且它還讓我們對自己動手寫程序來控制實驗臺的運作有了一定的基礎。雖然實驗臺只是一個小型的模擬平臺,但是通過對它的學習和操作,我們對有關接口的知識將會有一個更廣泛的認識,而且它對我們以后的學習也會有幫助的。

實驗中個人的力量是不及群體的力量的,我們分工合作,做事的效率高了很多。雖然有時候會為了一些細節爭論不休,但最后得出的總是最好的結論。而且實驗也教會我們在團隊中要善于與人相處,與人共事,不要一個人解決所有問題??傊@次課程設計對于我們有很大的幫助,通過課程設計,我更加深入地理解了,微機原理課程上講到的各種芯片的功能,以及引腳的作用,同時加深了對于主要芯片的應用的認識,同時在試驗室的環境里熟悉了匯編程序的編寫過程和運行過程,最后還提高了自己的動手能力 對課程設計的建議

本次課程設計的幾個實驗相對都比較簡單,而且經過老師的講解以及實驗書上的指導,幾乎把我們要用到的程序和實驗臺電路的接線方法都告訴我們了,所以做起來很容易。

實驗過程中,獲得了很多收獲,獲得了很多感悟,當然也遇到了很多困難。但我們都一一克服了他們,成功的完成了實驗。并在解決問題,克服困難的過程中,發現了自己平時忽略的,隱藏的問題,以及一些不該出現的粗心大意的小毛病。通過這些,我們認識的更加深刻,了解的更加深入。做到了學以致用,對知識掌握得更加牢固。通過了這一學期對微機原理的學習,真的對它有了一個全新的認識,我會堅持對它的學習,使自己在匯編語言上有一個長足的提高!

第三篇:微機實驗心得

微機實驗心得

這學期通過對微機原理和微機實驗課的學習,對微機系統和它的工作原理有了很大的了解。微機實驗課,總共做了十幾個實驗,回想起來受益匪淺,主要是加深了對計算機的一些硬件情況和運行原理的理解和匯編語言的編寫匯編語言,它是和機器語言最接近的,用它來編程序,會比用其它高級語言要快得多。實驗課程加深了我們對匯編語言指令的熟悉和理解。不僅鞏固了書本所學的知識,還具有一定的靈活性,發揮了操作,加深了我們對硬件的熟悉,鍛煉了動手能力,發揮創造才能。

通過這次課程使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正提高自己的實際動手能力和獨立思考的能力。

對于這門課,我們收獲了很多,我覺得這門課偏重于工程思維,主要難點在于對程序的理解。但是老師讓我們通過手打程序,控制實驗平臺很好的理解了各實驗的實驗程序。對于課程的建議,實驗講義給的程序很清楚,大大降低了實驗預習和自主編程的難度,給實驗講義可以更多的給方法和方式,提供一些程序建議而減少直接給出程序內容。實驗課上,請一個或兩個同學講解一下實驗程序設計思路,通過講解與其他人互動,可以收獲更多。微機原理課程上講到的各種芯片的功能,以及引腳的作用,在實驗中都得到了運用,使我們加深了對于主要芯片的應用的認識,同時在實驗室的環境里熟悉了匯編程序的編寫過程和運行過程,最后還提高了自己的動手能力。總結這門課,個人感覺很有必要,學習理論的過程中邊通過實驗輔助,使我們更容易的接受微機原理的知識。實驗過程中,獲得了很多收獲,獲得了很多感悟,當然也遇到了很多困難。但我們都一一克服了他們,成功的完成了實驗。并在解決問題,克服困難的過程中,發現了自己平時忽略的,隱藏的問題,以及一些不該出現的粗心大意的小毛病。通過這些,我們認識的更加深刻,了解的更加深入。做到了學以致用,對知識掌握得更加牢固。

這學期的課程告一段落,但是對微機原理的理解和認識,我深知我們做的還遠遠不夠,我們接下來還要繼續努力多學習更多知識,當然動手實踐很重要,我們平時也應該多編寫多運用。通過了這一學期對微機原理的學習,真的對它有了一個全新的認識,我會堅持對它的學習,使自己在匯編語言上有一個長足的提高!

第四篇:微機原理與接口技術實驗總結

微機原理與接口技術實驗總結

11107108

徐寒黎

一、實驗內容以及設計思路

1、①試編寫一程序,比較兩個字符串STRING1、STRING2 所含字符是否相同,若相同輸出“MATCH”,若不相同輸出 “NO MATCH”。設計思路:定義一個數據段,在數據段中定義兩個字符串作為STRING1、STRING2以及幾個用于輸入提示的和輸出所需內容的字符串,定義一個堆棧段用于存放,定義代碼段。關鍵步驟以及少量語句:第一步將STRING1和STRING2都實現用鍵盤輸入,方法是

MOV DX,OFFSET STRING2 MOV AH,0AH INT 21H 并且顯示在顯示器上,顯示方法將0AH改成09H,語句與上面類似。然后進行比較第一個單元,MOV AL,[STRING1+1] CMP AL,[STRING2+1] JNZ NOMATCH 若字符串長度不等,則直接跳轉,輸出輸出 “NO MATCH”; 若長度相等再逐個比較 LEA SI,[STRING1+2] LEA DI,[STRING2+2] MOV CL,[STRING1+1] MOV CH,0 CLD REPE CMPSB JCXZ MATCH,意思是全部相同就跳轉MATCH,輸出“MATCH”;不然進入下面的NOMATCH。退出。

②試編寫求級數1^3+2^3 +3^3 …..前幾項和剛大于10000的程序。

設計思路:原先編寫的程序,設定和為10000,結果是14。但要求高一點的話,可以自己設置,實現用鍵盤輸入和的值。

一個難點是將輸入的ASCII碼字符串,轉換成與之相同的十進制數的數值。關鍵的思路部分是:從1開始求級數,將和的值存在AX里,要加下一項級數前,比如這時已經加到4,PUSH一下AX,然后將5乘三遍,將乘積MOV到BX里,再POP AX,然后將BX的值加到AX里,然后將AX與N比較,如果比N小就繼續上述步驟,知道剛比N大就輸出數字。

③試編寫一程序,完成字符串中各字符出現頻度的統計,統計結果在屏幕上輸出。

設計思路:因為這個程序需要統計所有的字符,所以首先要定義一個存儲區,用來存放26個字符以及每個字符出現的個數。用鍵盤控制輸入字符串以后,將字符串的第一個字符與這二十六個字符逐個比較,若有相同,在存放相應次數的存儲單元的值上加1。然后比較第二個字符,依次類推,將字符串里的字符全部比較完。將個數大于1的字符以及字符的個數都輸出到屏幕上。退出語句。缺點和不足:這樣需要定義一個非常繁的存儲區??梢愿鶕斎氲淖址缓筮M行比較和統計。

④設計一個動畫程序。

設計思路:這個程序參考了網上的資料,沒有什么新意,是小鳥的圖形,可以用上下左右鍵進行移動,可以退出。

步驟:首先設置堆棧段,數據段,代碼段,設置顯示方式等一些屬性,設置背景色,設置小鳥的初始位置以及寫出小鳥圖形的像素的點。功能性的語句是,用鍵盤接受一個輸入,將其與1bh比較,用JZ語句跳轉到退出。若不是便與48h比較,看是否為向上,是則跳轉到相應語句,不是則繼續與50h比較;,看是否向下,是則跳轉到關于向下移動的相關語句,否則再與4bh比較,看是否向左,依次類推,根據鍵盤輸入的上下左右跳轉到不同的語句。再將小鳥的位置進行與上下左右鍵的輸入相應的移動。

最后編寫好退出語句。

2、硬件接口主要是了解8255與8253的功能,以及控制字。①I/O地址譯碼

只要對硬件概念清晰,很簡單的?;旧蠜]有什么創造性。收獲:熟悉實驗箱結構,了解每部分元件和標注的意義。掌握I/O地址譯碼電路的工作原理。②可編程定時器8253 1,對照實驗電路圖,將計數器0設置為方式0,即數初值設為N(N<0fh),用手動逐個輸入單脈沖,編程使計數值在屏幕上顯示,并用邏輯筆觀察OUT0點平變化。

2,將計數器0、計數器1分別設置為方式3,計數初值設為1000用邏輯筆觀察out1輸出電平的變化。

收獲:掌握8253的基本工作原理和編程方法

③并行接口8255 1,試驗電路如圖所示,8255C口接邏輯電平開關K0~K7,A口接LED顯示電路L0~L7。3,數碼管靜態顯示:按下圖接好電路,將8255A口PA0~PA6分別與七段數碼管的段碼驅動輸入端a~g相連,位碼驅動輸入端S1接5V(選中),S0和dp接地(關閉)。編程從鍵盤輸入一位十進制數(0-9),在七段數碼管上顯示。

4,數碼管動態顯示:按下圖接好電路,七段數碼管的連接不變,位碼驅動輸入端S1、S0接8255 C口的PC1和PC0。編程在兩個數碼管上顯示“56”。

動態顯示時,先送“5”的段碼送A口,再送02h到C口為位碼;經一定延時后,送“6”的段碼送A口,再送01h到C口為位碼。循環完成,可以顯示數碼。5,數碼管動態顯示(選做):同圖接好電路,編程在兩個數碼管上顯示循環顯示“00-99”。只要搞清楚各個口的地址,以及選擇適當的控制字,其實很簡單的。

收獲:掌握8255的基本工作原理和編程方法,對方式0的認識加深了。

二、試驗中遇到的問題 1在編寫程序時,我深深體會到,畫程序框圖的重要性,每一步跳轉的條件一定要搞清楚,Y和N不能搞反了,否則就錯了。

2實驗2,里面涉及的寄存器很多,很容易就會用亂了,還是很需要注意的。3比如那個小鳥動畫的題目,當時在控制左右移動的時候,選擇的起始位置的語句沒寫對位置,每次按一個移位的鍵以后,都從最初的初始位置向某個方向移動。

4硬件方面的,一開始沒搞懂地址什么意思,所以連線時很懵懂,后來清楚了,發現就沒什么了。

三、心得感受

微機原理與接口技術的課程實驗歷時大半個學期,通過自己編寫、運行程序,不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。以前對于編程工具的使用還處于一知半解的狀態上,但是經過一段上機的實踐,對于怎么去排錯、查錯,怎么去看每一步的運行結果,怎么去了解每個寄存器的內容以確保程序的正確性上都有了很大程度的提高。

前四個簡單程序設計,加深了我們對初學的匯編語言指令的熟悉和理解,匯編語言直接描述機器指令,比機器指令容易記憶和理解。通過學習和使用匯編語言,向上為理解各種軟件系統的原理,打下技術理論基礎;向下為掌握硬件系統的原理,打下實踐應用基礎。不僅鞏固了書本所學的知識,還具有一定的靈活性,發揮了我們的創造才能。

后面幾個實驗是并行輸入輸出接口8255和計數器8253的功能的操作,加深了我們對硬件的熟悉,鍛煉了動手能力,發揮創造才能。

通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在自己的思考以及和同學的討論中,終于迎刃而解。

第五篇:北京郵電大學 微機原理軟件實驗3

北京郵電大學

微機原理軟件實驗·第三次實驗

題目一:

一、實驗目的1、2、初步掌握中斷程序的設計方法;

初步掌握修改 DOS 系統中斷,以適應實際使用的方法。

二、實驗內容

編一程序,在顯示器上顯示時、分、秒。借用計數器8253的Timer0作為中斷源,通過8259A向CPU發中斷,每10ms產生一次中斷。在中斷服務程序中管理刷新時、分、秒。

要求:

1、輸入文件名(如:CLK)后清屏后顯示:

2、Current time is: xx:xx:xx(時分秒鍵盤輸入)

3、打回車,時、分、秒開始計時。時鐘不停的刷新。

4、當鍵入CTRL+C時,停止計時,返回系統,且系統正常運行不死機。

提示:

8253的初始化程序段可借用。口地址為40H、41H、42H、43H,控制字為36H=00110110B,時間常數TC=11932:1.1932MHz/11932=100Hz,輸出方波頻率為100Hz,其周期為1000/100=10ms。

三、設計思路

1、開始程序流程圖

重新在屏幕上打印時間是判斷鍵盤緩沖區有無按鍵按下定義數據段和堆棧段回車是否按下判斷內存中的時間是否被修改保存源中斷向量否是秒表功能否否將timer子程序地址設置為中斷向量顯示字符串:“Now the time is:”是判斷“S”是否按下否設置8253工作狀態,使其輸出方波100Hz判斷設定時間是否符合規范否輸出一條錯誤信息判斷Ctrl+C是否按下是設置8259A工作狀態輸出一條提示信息,要求用戶設定時間是退出程序

2、中斷子程序流程圖

子程序開始記下進入中斷的次數判斷次數是否為100是計數清零,修改內存中存儲的時間查看是否有進位否進位調整結束

3、可能用到的指令

① STI 置中斷允許位.CLI 清中斷允許位.格式:CLI STI 功能:開關中斷允許標志,用于在程序中防止中斷嵌套,設置中斷。

② STOS(STOre into String)存入串指令 格式:STOS DST STOSB //存放字節串(DI)= AL STOSW //存放字串(DI)= AX 執行操作:把AL或AX中的內容存放由DI指定的附加段的字節或字單元中,并根據DF值修改及數據類型修改DI的內容。字節操作:((DT))←(AL),(DI)←(DI)±1

4、① 字操作:((DI))←(AX),(DI)←(DI)±2無條件轉移指令

IN輸入指令

長格式為:IN AL,PORT(字節)IN AX,PORT(字)執行的操作:(AL)<-(PORT)(字節)(AX)<-(wPORT+1,PORT)(字)短格式為:IN AL,DX(字節)IN AX,DX(字)

OUT輸出指令

長格式為:OUT PORT,AL(字節)OUT PORT,AX(字)執行的操作:(PORT)<-(AL)(字節)(PORT+1,PORT)<-(AX)(字)短格式為:OUT DX,AL(字節)OUT DX,AX(字)執行的操作:((DX))<-(AL)(字節)((DX)+1,(DX))<-AX(字)

設置中斷向量 格式:

mov al,8 mov ah,25h int 21h DS:DX=中斷向量 AL=中斷類型號

查看中斷向量 格式:

mov al,8

mov ah,35h AL=中斷類型 ES:BX=中斷向量

計數器芯片8253簡介 初始化

使用8253前,要進行初始化編程。初始化編程的步驟是:

A向控制寄存器端口寫入控制字對使用的計數器規定其使用方式等。B 向使用的計數器端口寫入計數初值。

② 8253控制字

D7D6=00:使用0號計數器,D7D6=01:使用1號計數器

D7D6=10:使用2號計數器,D7D6=11:無效 D5D4=00:鎖存當前計數值

D5D4=01:只寫低8位(高8位為0),讀出時只讀低8位 D5D4=10:只寫高8位(低8位為0),讀出時只讀高8位 D5D4=11:先讀/寫低8位,后讀/寫高8位計數值

D3D2D1=000:選擇方式0,D3D2D1=001:選擇方式1 D3D2D1=X10:選擇方式2,D3D2D1=X11:選擇方式3 D3D2D1=100:選擇方式4,D3D2D1=101:選擇方式5 D0=0:計數初值為二進制,D0=1:計數初值為BCD碼數

四、源程序

data segment count100 db 100

;100個10ms=1s,此處count100起計數作用 msg1 db 'Please enter the current time(XX:XX:XX)!(Press ENTER to use default time)$' msg2 db 'Sorry,your date entered incorrectly ,please try again!$' msg3 db 'Now, the time is:',0ah,'(Press Ctrl+C to EXIT.)',0ah,'(Press Enter to use as a Stopwatch.)',0ah,'(Press S or s to set current time again.)(XX:XX:XX)$' msg4 db 0ah,'Program EXIT normally.$' tenhour db '0';小時十位數 hour db '0',':';小時個位數 tenmin db '0';分鐘十位數 minute db '0',':';分鐘個位數 tensec db '0';秒十位數 second db '0’;秒個位數 data ends

stack segment stack 'stack' db 256 dup(0)stack ends

code segment assume cs:code,ds:data,es:data

start: mov ax,seg data mov es,ax mov ds,ax

cli;使中斷標志IF=0 mov al,8;保存源中斷向量 mov ah,35h int 21h push es push bx

mov ax,0

mov es,ax;es置零,這是準備中斷向量的寫入 mov di,20h

mov ax,offset timer;中斷子程序timer的偏移量 stows

;字符串填充,將AX的內容

;(timer偏移量)存入di所指向的單元,;di的增減取決于DF,默認段基址總是ES mov ax,cs

stosw;timer端基址

mov al,36h

out 43h,a;設置8253控制字為36H

mov bx,11932

;分頻系數為11932,分頻結

;果1.1932MHz/11932=100Hz,10ms變化一次

mov al,bl;分兩次設置分頻系數 out 40h,al

mov al,bh out 40h,al

mov al,0fch;主PIC端口設置為0fch out 21h,al

sti;開中斷,允許外部中斷

mov ax,seg data mov es,ax mov ds,ax

mov dx,offset msg1;打印提示信息1 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h

settime:mov si,offset tenhour;設定時間 mov ah,01h int 21h cmp al,0dh jz forever1 cmp al,'0' jc error2;如果輸入不合法,報錯 cmp al,'3' jnc error2 mov [si],al inc si cmp al,'2' jz ershi

mov ah,01h;如果小時高位為1,;低位可以設置0~9 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error2 cmp al,'9'+1 jnc error2 mov [si],al inc si jmp fen

ershi: mov ah,01h;如果小時高位為2,低位可以設置0~4 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error2 cmp al,'4' jnc error2 mov [si],al inc si jmp fen

fen: mov ah,01h;分高位可設置0~5 int 21h cmp al,0dh jz forever1 cmp al,':' jnz error1 mov [si],al inc si

mov ah,01h int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'6' jnc error1 mov [si],al inc si

zcy4: mov ah,01h;分低位0~9 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'9'+1 jnc error1 mov [si],al inc si jmp zcy

settime2:jmp settime;用來跳轉接力 error2: jmp error1 forever1:jmp next2

zcy: mov ah,01h;秒高位可設置0~5 int 21h cmp al,0dh jz forever1 cmp al,':' jnz error1 mov [si],al inc si

mov ah,01h int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'6' jnc error1 mov [si],al inc si

mov ah,01h;秒低位可設置0~9 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'9'+1 jnc error1 mov [si],al inc si

jmp next2

error1: mov dl,0ah;用來報錯:設置時間不合法 mov ah,02h int 21h

mov dx,offset msg2;打印提示信息2 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h

jmp settime

settime3: jmp settime2;跳轉接力

next2: MOV AX,0003H;做時鐘顯示初始化 INT 10H;清屏顯示 mov dl,0ah mov ah,02h int 21h mov dx,offset msg3;打印提示信息3 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h forever:mov bx,offset tenhour;這個程序段循環執行 mov cx,8 cmp tenhour,'2';如果超過24點,置為0點 jnz dispclk cmp hour,'4' jnz dispclk mov tenhour,'0' mov hour,'0' dispclk:mov dl,[bx];用來顯示當前時間 call dispchar inc bx loop dispclk

;調用顯示子程序,顯示初始狀態時間,;比如”11:11:11"

mov dl,0dh;輸出一個換行 call dispchar

xor al,al;讀鍵盤緩沖區 mov ah,0bh int 21h cmp al,0FFH jnz next3 mov ah,08h;取其字符 int 21h cmp al,03h;Ctrl+C退出 jz stop cmp al,'s';S/s設定時間 jz settime3 cmp al,'S' jz settime3 cmp al,0dh jnz next3 mov dl,0ah;回車則使用秒表功能 mov ah,02h int 21h jmp forever

next3: mov al,second

next: cmp al,second;判斷second是否發生變化je next;如果沒有,循環比較

jmp forever;如果有變化,刷新輸出

stop: mov dx,offset msg4;打印提示信息4 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h

pop dx;恢復中斷向量 pop ds mov al,8 mov ah,25h int 21h mov ah,4ch int 21h

timer proc far;中斷程序timer push ax

dec count100;計數100次

jnz timerx;如果計數小于100,跳出中斷 mov count100,100

;否則重置count100<=100;1s已經到達

inc second;加一秒 cmp second,'9'

;判斷大小,用于進位,以下原理相同 jle timerx

mov second,'0' inc tensec cmp tensec,'6' jl timerx

mov tensec,'0' inc minute cmp minute,'9' jle timerx

mov minute,'0' inc tenmin cmp tenmin,'6' jl timerx

mov tenmin,'0' inc hour cmp hour,'9' ja adjhour cmp hour,'3' jnz timerx

cmp tenhour,'1' jnz timerx mov hour,'1' mov tenhour,'0'

jmp short timerx;段內短轉移

adjhour:inc tenhour mov hour,'0' timerx: mov al,20h out 20h,al;主PIC口地址 pop ax;出?;謴?iret;中斷返回 timer endp

dispchar proc near;顯示子函數 push bx mov bx,0 mov ah,02h

int 21h

;DOS功能調用,輸出DL內容 pop bx ret

dispchar endp

code ends end start

五、實驗結果(反色)

這幅圖是運行程序之后,設定時間,輸入的時間不合法的截圖。當輸入不合法的字符時,對彈出一條錯誤信息,然后要求重新輸入時間。

這幅圖是輸入一個合法字符串后,時鐘被設定為該值,并且正常計數的程序截圖。

這幅圖是在時鐘運行的過程中,按下Enter鍵,進入秒表模式的截圖。秒表模式,會將按下Enter的時間保存下來。

這幅圖是在時鐘運行的過程中,按下S鍵,進入設定模式的截圖。該截圖輸入字符串不合法。當輸入合法的字符串后,程序將清屏,這是截圖和正常計時狀態一樣。

這幅圖是按下Ctrl+C,程序正常退出的截圖。程序正常退出后,與之前的運行情況完全一樣,程序運行不死機。

六、實驗總結:

這次微原實驗是我設計比較大型的匯編程序,從如何使用8253/8255開始,到程序被完整調通為止,這個實驗帶給我的是對于課本第七章、第八章的知識更加清晰的認識與了解,和對于微機運行的原理的進一步認識。在這次實驗中,我都要求自己先做整體思路規劃,再去做代碼實現,這樣節省了我大量時間。也給我帶來了很多收獲。

整體的思路規劃:我認識到,相比于直接悶頭就上的編程方法,有一個好的整體思路規劃,會節省很多后期的力氣,對于任務的完成大有裨益。

嚴謹認真的代碼風格:匯編語言的編譯器不如C++等高級語言,當程序出錯時,并不會給出錯誤。我們要有嚴謹的代碼風格,才能保證效率。

學會調試:匯編語言的編譯器較差,當程序出錯時,我們要善用DEBUG工具,去認真地分析程序的每一部動向,找到問題所在。

回歸課本基本概念:在編程的過程中,曾經出過一個bug,總是無法正常的進入計時中斷Timer。經過我查閱課本,發現是8253的控制字設置有問題。這說明我對課本的內容掌握的還不夠好,應該多多回歸課本基本概念,才可以順利的編程。

下載微機原理實驗三子程序設計實驗word格式文檔
下載微機原理實驗三子程序設計實驗.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    【微機實驗】2018東南大學微型計算機原理及應用實驗二

    實驗二 基本算術和邏輯運算 學院:信息科學與工程學院 姓名:周信元學號:04016523 實驗日期:2018.4.4 一、實驗目的 1.熟悉算術和邏輯運算指令的功能。 2.進一步了解標志寄存器各......

    (語言、微機原理及接口技術)實驗交通燈

    課程設計說明書課程設計名稱:微機原理與接口技術課程設計課程設計題目:微機打印口外接交通燈模擬LED顯示器學院名稱:信息工程學院專業:計算機科學與技術班級:學號:姓名:評分:教師:201......

    微機硬件實驗心得

    實訓四底板LED點陣控制實訓個人總結 通過led點陣實驗的實踐,使我在理論的基礎上更深刻的掌握了嵌入式系統的深層內容及實際生活中的應用,實踐鍛煉了自己動手能力和思維能力,還......

    微機實驗指導書20160425(本站推薦)

    實驗一 匯編語言程序設計(分支/循環) 1. 實驗目的: 熟悉8088/8086指令系統 了解程序設計過程 掌握匯編語言程序設計和調試方法 2. 實驗內容 上機任務1: ① 熟悉進入......

    2013微機原理課綜合實驗題目及要求5篇

    計算機原理及接口技術綜合實驗 2011320601-02班 計算機原理及接口技術課程綜合實驗一、綜合實驗的目的 通常,學習知識是由淺入深、由此及彼,一點點的學習和積累的,而應用知識則......

    化工原理實驗

    吸收實驗 ? 一、 實驗目的 1、? 熟悉填料吸收塔結構和流程 2、? 觀察填料塔流體力學狀況,測定壓降與氣速的關系曲線 3、? 掌握氣相總體積系數kYa和氣相總傳質單元高度HOG的測......

    實驗二 定時器程序設計121

    一、 實驗目的學會使用單片機定時器產生定時中斷,并利用定時中斷產生更長時間延時。二、實驗設備及器件 IBM PC機一臺 DP-51PRO.NET單片機仿真器、編程器、實驗儀三合一綜......

    UML程序設計實驗指導書

    《UML程序設計》 實驗指導教程 適合專業:計算機類專業 浙江樹人大學信息科技學院 2016.02 課程與實驗綜述 第一部分實驗綜述 一.課程簡介及實踐要求: 《UML程序設計》是以介紹......

主站蜘蛛池模板: 精品无码人妻| 欧美精品偷自拍另类在线观看| 一本久久a久久精品vr综合| 亚洲最新版av无码中文字幕| 久久99精品久久只有精品| 国模吧无码一区二区三区| 久久国产一区二区三区| 国产性生大片免费观看性| 少妇私密会所按摩到高潮呻吟| 中文字幕肉感巨大的乳专区| 亚洲v欧美v国产v在线观看| 四虎成人精品国产永久免费| 国产精品美女久久久久av爽李琼| 成人一区二区免费中文字幕视频| 男女啪啪无遮挡免费网站| 波多野结衣爽到高潮大喷| 精品亚洲国产成人蜜臀av| 伊人色综合一区二区三区影院视频| 亚洲精品无码久久久久y| 久久天天躁狠狠躁夜夜av浪潮| 日本japanese丰满少妇| 无码毛片视频一区二区本码| 国产作爱视频免费播放| 人妻系列av无码专区| 亚洲图片另类图片激情动图| 国产麻豆精品传媒av国产婷婷| 国产亚洲精品综合一区| 久久人妻少妇嫩草av蜜桃| 无码午夜人妻一区二区三区不卡视频| 青青草无码免费一二三区| 亚洲中字幕日产av片在线| 国产一精品一av一免费| 好男人日本社区www| 国产精品国产高清国产av| 午夜精品国产精品大乳美女| 熟妇人妻va精品中文字幕| 欧美自拍另类欧美综合图片区| 波多野结衣在线精品视频| 国产欧美日韩久久久久| 日本欧美视频在线观看三区| 精品国产三级a在线观看|