




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、東華大學信息學院信控實驗中心實驗1 存儲器讀寫實驗一、實驗目的 1.掌握PC機外存擴展的方法。 2.熟悉6264芯片的接口方法。 3.掌握8086十六位數據存儲的方法 。二、實驗設備 微機實驗箱、8086CPU模塊。三、實驗內容 向02000020FFH單元的偶地址送入AAH,奇地址送入55H。四、實驗原理介紹本實驗用到存儲器電路五、實驗步驟和要求1、實驗接線:本實驗無需接線。2、編寫調試程序3、運行實驗程序,可采取單步、設置斷點方式,打開內存窗口可看到內存區的變化。本實驗的主要目的是學會用使用工具軟件,掌握用單步執行和斷點方式運行程序,觀察寄存器和內存中的數據變化等程序調試的手段。六、實驗提
2、示1、RAM區的地址為02000H,編程時可將段地址設為0100H,則偏移地址為1000H。 2、如果按字節進行存儲,則AL為55H或AAH;如果按字進行存儲,則AX應為55AAH。3、6264、62256等是計算機系統擴展中經常用到的隨機存儲器芯片(RAM),主要用作數據存儲器擴展。本實驗所進行的內存置數在程序中經常用到。計算機系統運行中會頻繁地進行內存與外設或者內存與內存之間的數據傳輸,所以本實驗雖然簡單但對理解系統程序的運行很關鍵,望學習和實驗時認真對待。七、實驗范例程序框圖及源代碼(實驗程序名:RAM.ASM)八、思考題1、 單步執行到“intram”標號的語句時,ds寄存器的數據是什
3、么?采用斷點方式運行時執行到第一個斷點處,2000H202FH內存單元的數據是什么?執行到第二個斷點處,2000H200FH內存單元的數據是什么?并根據觀察結果和對源程序的判讀簡述源程序的運行效果。如圖,單步執行到“intram”標號的語句時ds寄存器的數據為0100采用斷點方式運行時執行到第一個斷點處,2000H202FH內存單元的數據如圖所示。由源程序知道第一個斷點前的程序是為了把數據段內存單元清0,符合上圖結果其實清零在這里可以不用,直接進行后面的置數執行到第二個斷點處,2000H200FH內存單元的數據如圖所示。由源程序可知程序的運行結果為向02000020FFH單元的偶地址送入AAH
4、,奇地址送入55H,符合上圖的結果2、 修改程序,實現從2000H到200FH單元依次賦值00H0FH的功能。設計思想:通過把AL值賦給【si】,然后使AL,si同時自加1,循環16次即可程序流程圖:初始化DS初始化SI開始循環次數CX=01hAL賦初值0h目標單元置數AL=AL+1SI=SI+1CX=0?空操作NY結束代碼:code segment assume cs:code org 0100h ; 在代碼段0100h偏移地址處開始存放代碼start: mov ax,0100h; mov ds,ax; 數據段地址 mov es,ax mov si,1000h;偏移地址 mov cx,010
5、0h;循環次數 mov al,0; al的值置0intram: mov si,al ;0賦給si inc si ;si加1 loop intram; 使得0100:1000開始處的256個單元中的數據清0 mov si,1000h; 設置斷點處 mov cx,0010h; 設置循環次數為16fil: mov si,al; RAM區循環置數 inc si ;地址指針加1 inc al ; al中的值每執行一次循環加1,初始值為00,加到0F loop fil nop;設置斷點處 jmp startcode ends end start結果:九、實驗中的問題及其解決方法問題:(1)范例程序中按題目
6、要求設置兩個斷點時,全速運行時只能運行第一個斷點處的程序,而不知道怎么運行下一個斷點處的程序,導致出不來結果(2)做思考題時,運行所寫程序時發現內存空間中上一個題目的運行結果還在里面解決方法:(1)針對問題(1),當執行完第一個斷點執行完畢應該取消該斷點,這樣在全速運行時可以運行到下一個斷點,就可以觀察到程序運行結果了。(2)針對問題(2),發現在初始化程序時,自己把所有的循環初值都設成了0010H(16),導致只有前16個內存單元清零,而后面的內存單元沒有初始化,保留了上次運行的程序運行結果。所以將初始化(清零)的循環初值設成0100H,這樣就可以初始化256個內存單元了,把上次的結果初始化
7、為0。而后一個賦值循環的循環次數仍然為0010十、體會這個題目比較簡單,程序很簡單,主要是把循環值設置對。但是由于對軟件使用的不熟悉,因此導致了一些問題。在調試運行上還是花了一些時間。通過發現問題,解決問題的過程,使我對這個軟件的使用更加熟練,為后面的程序設計中打下良好的基礎。實驗2 簡單I/O口擴展實驗一、實驗目的 1、 熟悉74LS273,74LS244的應用接口方法。 2、掌握用鎖存器、三態門擴展簡單并行輸入、輸出口的方法。二、實驗設備 微機實驗箱、8086CPU模塊。三、實驗內容 邏輯電平開關的狀態輸入74LS244,然后通過74LS273鎖存輸出,利用LED顯示電路作為輸出的狀態顯示
8、。四、實驗原理介紹本實驗用到兩部分電路:開關量輸入輸出電路,簡單I/O口擴展電路。五、實驗步驟1、實驗接線:(«表示相互連接)CS0 «CS244; CS1«CS273; 平推開關的輸出K1K8 « IN0IN7(對應連接); O0O7«LED1LED8。2、編輯程序,單步運行,調試程序3、調試通過后,全速運行程序,觀看實驗結果。4、編寫實驗報告。六、實驗提示74LS244或74LS273的片選信號可以改變,例如連接CS2,此時應同時修改程序中相應的地址。七、實驗結果程序全速運行后,邏輯電平開關的狀態改變應能在LED上顯示出來。例如:K2置于L
9、位置,則對應的LED2應該點亮。八、實驗范例程序框圖(實驗程序名: T244273.ASM)九、程序源代碼清單十、思考題:將74LS244的片選信號CS244改接CS2,將74LS273的片選信號CS273改接CS3,修改程序實現與范例程序相同的功能。程序流程圖:代碼:assume cs:code code segment public org 100hstart: mov dx,04c0h ;74LS244地址 in al,dx ;讀輸入開關量 mov dx,04d0h ;74LS273地址 out dx,al ;輸出至LED jmp start code ends end start分析:
10、原CS244接CS0,CS0端口地址04a0h,CS273接CS1,CS1端口地址為04b0h。只需把接線換掉后,把對應的端口地址改正即可.即CS2的地址為04c0h,CS3的地址為04d0h十一、遇到的問題該實驗在調試的過程中,沒有遇到問題,只是第一次的那臺儀器壞了,發現燈都不亮,之后換了一臺儀器,連線,編譯,運行,就得到正確結果了。實驗3 8255并行口實驗一、實驗目的掌握8255A的編程原理。二、實驗設備 微機實驗箱、8086CPU模塊。三、實驗內容 8255A的A口作為輸入口,與邏輯電平開關相連。8255A的B口作為輸出口,與發光二極管相連。編寫程序,使得邏輯電平開關的變化在發光二極管
11、上顯示出來。四、實驗原理介紹本實驗用到兩部分電路:開關量輸入輸出電路和8255可編程并口電路。五、實驗步驟1、實驗接線CS0«CS8255; PA0PA7« 平推開關的輸出K1K8; PB0PB7«發光二極管的輸入LED1LED8。2、編程并全速或單步運行。3、全速運行時撥動開關,觀察發光二極管的變化。當開關某位置于L時,對應的發光二極管點亮,置于H時熄滅。六、實驗提示8255A是比較常用的一種并行接口芯片,其特點在許多教科書中均有介紹。8255A有三個8位的輸入輸出端口,通常將A端口作為輸入用,B端口作為輸出用,C端口作為輔助控制用,本實驗也是如此。實驗中,82
12、55A工作于基本輸入輸出方式(方式0)。七、實驗結果程序全速運行后,邏輯電平開關的狀態改變應能在LED上顯示出來。例如:K2置于L位置,則對應的LED2應該點亮。八、實驗范例程序框圖及源代碼(實驗程序名:t8255.asm)九、思考題:1、修改接線CS2«CS8255,并要求開關置“H”(下)位置時對應LED亮,修改程序實現相應功能。程序流程圖:開始設置8255工作方式讀A口AX取反輸出到B口結束代碼:assume cs:code code segment public org 100hstart: mov dx,04c6h;控制寄存器地址(改為04c6h) mov ax,90h;設
13、置為A口輸入,B口輸出 out dx,axstart1: mov dx,04c0h;A口地址(改為04c0h) in ax,dx xor ax,0ffffh; 取反輸入 mov dx,04c2h;B口地址(改為04c2h) out dx,ax;輸出 jmp start1code endsend start說明:由于換成CS2和CS8255相連,因此三個地址應分別修改為:04c6h,04c0h,04c2h由于要求開關置下時燈亮,因此需要從A口讀取開關狀態到AX后,對AX中的內容取反,即可實現要求。 取反的方法可以用not ax語句,也可以用異或xor的取反,要取反的位與1異或我這里采用
14、異或。實驗4 8253定時器/計數器接口實驗一、實驗目的掌握8253定時器的編程原理,用示波器觀察不同模式下的輸出波形。二、實驗設備 微機實驗箱、8086CPU模塊、示波器。三、實驗內容 了解8253計數器的不同工作方式,掌握其初始化控制字對定時/記數效果的影響。四、實驗原理介紹本實驗用到兩部分電路:脈沖產生電路、8253定時器/計數器電路五、實驗步驟1、實驗連線:CS0«CS8253 OUT0«8253CLK2 OUT2«LED1 OUT1«LED2CLK3«8253CLK0,CLK3«8253CLK12、編程調試程序3、全速運行,
15、觀察實驗結果六、實驗提示8253是計算機系統中經常使用的可編程定時器/計數器,其內部有三個相互獨立的計數器,分別稱為T0,T1,T2。8253有多種工作方式,其中方式3為方波方式。當計數器設好初值后,計數器遞減計數,在計數值的前一半輸出高電平,后一半輸出低電平。實驗中,T0、T1的時鐘由CLK3提供,其頻率為750KHz。程序中,T0的初值設為927CH(37500十進制),則OUT0輸出的方波周期為(37500*4/3*10-6=0.05s)。T2采用OUT0的輸出為時鐘,則在T2中設置初值為n時,則OUT2輸出方波周期為n*0.05s。n的最大值為FFFFH,所以OUT2輸出方波最大周期為
16、3276.75s(=54.6分鐘)。可見,采用計數器疊加使用后,輸出周期范圍可以大幅度提高,這在實際控制中是非常有用的。七、實驗結果程序全速運行后,LED1按一定周期閃爍(周期理論值為0.2s),LED2在高頻脈沖信號(約15KHz)影響下,有微弱的光亮,但無明顯的周期變化現象。八、實驗范例程序框圖及源代碼(實驗程序名:t8253.asm)九、思考題:1、為什么說范例程序運行時LED1閃爍周期的理論值是0.2秒?在范例程序設置LED2的最大閃爍周期是多少?請分析說明。(1)LED1 與OUT2連接 計數器0的初值設為927CH(37500),它的時鐘由CLK3提供,其頻率為
17、750KHz,所以OUT0輸出的方波周期為(37500*4/3*10-6=0.05s)。 計數器2采用OUT0的輸出為時鐘,它的頻率為(1/0.05)Hz,計數器2設置初值為04H(4)時,所以OUT2輸出方波周期為4*0.05s=0.2s 所以LED1的閃爍周期為0.2s (2) LED2與OUT1連接 所LED2的閃爍周期即為計數器1的周期計數器1的初值為32H(50),它的時鐘也由CLK3提供,頻率為750KHz,所以OUT1輸出的周期為(50*4/3*10-6=6.7*10(-5)s),即LED2的閃爍周期。 由于周期過小,人
18、眼無法識別所以實驗結果中,LED2有微弱變化,但無明顯閃爍。2、修改片選信號接線使CS1和CS8253連接,并要求LED1的閃爍周期變為4秒(亮2秒,滅2秒),修改程序實現功能。程序流程圖:開始寫T0方式控制字寫T0計數初值寫T1方式控制字寫T1計數初值寫T2方式控制字寫T2計數初值空操作結束求設置的計數初值:4/0.05=80=50h代碼及注釋:assume cs:codecode segment publicorg 100h ; 在代碼段0100h偏移地址處開始存放代碼start:mov dx,04b6h;控制寄存器mov ax,36h;計數器0,方式3out dx,axmov dx,04
19、b0h ;計數器0的地址mov ax,7Ch ;計數初值的低位為7Chout dx,ax mov ax,92h ;計數初值的高位為92hout dx,ax;計數值927Chmov dx,04b6h ;控制寄存器地址mov ax,76h;計數器1,方式3out dx,axmov dx,04b2h ;計數器1的地址 mov ax,32h ;計數初值的低位為32h out dx,ax mov ax,0;計數初值的高位為00h out dx,ax ;計數值32h mov dx,04b6h mov ax,0b6h;計數器2,方式3 out dx,ax mov dx,04b4h ;計數器2的地址 mov
20、ax,50h ; 計數值低位為50h out dx,ax mov ax,0;計數值高位為0 out dx,ax ;計數值50hnext:nopjmpnext ;讓程序一直循環執行code ends end start分析:將所有CS0的端口地址(04a_)都改為CS1的端口地址(04b_)。再將計數器2的計數初值改為50H(4/0.05=80=50H)遇到的問題:第一次連線調試的時候,發現燈閃爍得頻率很快,仔細檢查程序,發現初始計數值設計小了,通過公式計算,得到計數值需要設置為50H,才使得周期為4s。重新調試,得到了正確結果實驗58259中斷控制器實驗一、實驗目的1、掌握8259A的工作原理
21、。2、掌握編寫中斷服務程序方法。3、掌握初始化中斷向量的方法。二、實驗設備 微機實驗箱、8086CPU模塊。三、實驗內容了解中斷處理的原理,掌握利用中斷控制器進行中斷申請和中斷操作的方法。四、實驗原理介紹本實驗用到三部分電路:電平開關電路、簡單I/O口擴展電路和8259中斷控制器電路。五、實驗步驟1、實驗接線CS0 «CS8259 CS3 «CS273 O0O3«LED1LED4 K1K4«IR0IR3 INT«INT( 8086CPU板) INTA«INTA(8086CPU板)2、編譯調試程序3、全速運行程序,撥動某一電平開關,觀察
22、LED的亮滅情況。六、實驗提示1、 8259的使用說明請詳細閱讀教科書。2、8086的中斷系統是向量中斷方式。內存中特定位置有一中斷向量表,表內存有不同中斷類型的中斷向量(中斷入口地址)。不同中斷類型的中斷向量在表內有對應的偏移地址,其計算方法是:中斷類型*4。3、中斷類型由8259通過數據總線送給8086,8086內部電路會將該類型值自動乘4,而后賦給指令指針,從而轉向中斷向量表的相應單元取得中斷入口地址,之后就進入中斷服務程序。請仔細研讀8259的工作時序。4、中斷類型的高5位由8259寄存器ICW2決定,低3位由中斷源IRx的編碼自動填入。IR0IR7的編碼分別為000,001,010,
23、011,100,101,110,111。七、實驗結果全速運行程序,由上往下撥動開關時,相應位置的LED點亮,其余LED全滅。八、實驗范例程序框圖及源代碼(實驗程序名:t8259.asm) 九、思考題:1、 說明源代碼8259初始化所設置的所有中斷控制字的值和含義(按位說明)。(1)mov dx,04a0hmov ax,13hout dx,ax ICW1(初始化字),寫入的值為13h,化為二進制后:00010011。含義:邊沿觸發,地址間距為8,單片8259A,需要ICW4。 (2)mov dx,04a2hmov ax,80hout
24、160;dx,ax ICW2(中斷類型碼字),寫入的值為80h,化為二進制后:10000000。含義:說明對應于IR0IR7的中斷類型碼為80h87h。(3)mov ax,01hout dx,ax ICW4(中斷結束方式字),寫入的值為01h,化為二進制后:00000001。含義:普通全嵌套方式,非緩沖方式,正常EOI,8086/8088模式。 (4)mov ax,00hout dx,ax OCW1(屏蔽控制字),寫入的值為00h,即00000000b。含義:全部為復位屏蔽,開放所有中斷。2、 修改接線IR3«P+
25、(實驗箱右下角),并修改源程序,使按實驗箱右下角“Pules”鍵時LED1LED4全亮。程序流程圖:開始8259初始化開中斷AX=00H?YAX輸出N延時中斷服務流程關中斷AX置數開中斷中斷返回代碼及注釋:assume cs:code code segment public org 100h; 在代碼段0100h偏移地址處開始存放代碼start:mov cx,0start1: cli ;關中斷,防止有些硬件中斷對程序的干擾mov dx,04a0h ; 寫入ICW1的端口地址為04a0h mov ax,13h ; ICW1為13H,化為二進制為00010011 out dx,ax;ICW1, I
26、CW4需要 movdx,04a2h ;寫入ICW2的端口地址為04a2h mov ax,80h ; ICW2為80H,化為二進制為10000000out dx,ax ;ICW2中斷類型80h,IR0IR7的中斷類型碼為80h87hmov ax,01h; ICW4為01H,化為二進制為00000001out dx,ax;ICW4;普通全嵌套方式,非緩沖方式,正常EOI,8086/8088模式mov ax,00hout dx,ax ;OCW1, 開放所有中斷nop ;以上為8259初始化 mov ax,0mov ds,axmov di,200h ;初始化中斷向量表mov ax,offset int
27、0 ;IR0的中斷服務程序入口地址放入中斷向量表中mov ds:di,ax ;先放IPadd di,2mov ds:di,100h ;再放CS值adddi,2mov ax,offset int1 ; IR1的中斷服務程序入口地址放入中斷向量表中mov ds:di,axadd di,2mov ds:di,100hadddi,2mov ax,offset int2; IR2的中斷服務程序入口地址放入中斷向量表中mov ds:di,axadd di,2mov ds:di,100hadddi,2mov ax,offset int3 ; IR3的中斷服務程序入口地址放入中斷向量表中mov ds:di,a
28、xadd di,2 ;上述程序為芯片8259的初始化程序 mov ds:di,100h ;建議不熟練者不要修改。main: movax,0sti ;開中斷。waiting:cmp ax,0h je waiting ;沒發生中斷,則等待nopnopmov dx,04d0houtdx,ax ;對應LED燈亮movcx,0delay:loopdelay ;數字濾波,按鍵去抖jmp start1int0: cli ;關中斷。以下類推。nop ;此兩行為IR0的中斷服務程序movax,0feh ;用戶可修改。iret ;中斷返回,以下類推。int1:clinop ;此兩行為IR1的中斷服務程序,mova
29、x,0fdh ;用戶可修改。iretint2:clinop ;此兩行為IR2的中斷服務程序,movax,0fbh ;用戶可修改。iretint3:clinop ;此兩行為IR3的中斷服務程序,movax,0f0h ;用戶可修改。iretcode endsend start分析:原AX的內容為0f7H,最低四位為7(0111),從左到右依次表示LED4,LED3,LED2,LED1,所以原代碼IR3只接受LED4對應的開關K4產生的中斷。 將其改為0(0000)后,表示四盞燈同時產生中斷,所以同時亮。遇到的問題:一開始沒有弄清楚中斷服務程序的工作原理,導致不知從何下手去修改程序,通過查
30、閱微機課本有關中斷的內容,再對比程序,發現,只需要改變IR3中斷服務程序,把IR3全部置0,就代表四盞燈同時中斷,即同時亮實驗總結經過三周的微機硬件實驗,我學到了很多東西,對于書本上的知識也有了更深層次的認識,通過第一個給存儲單元賦值的操作,我明白了程序是如何運行的,以及各個寄存器及存儲器內容是如何變化的。這使得我用匯編語言編程的能力得到提升,同時也明白了匯編語言雖然是低級語言,但卻是最接近計算機核心結構的,因此匯編語言更易被計算機識別。后面幾個硬件實驗,不僅鍛煉了我的動手操作能力以及程序調試能力,更關鍵的是明白了幾個芯片8255以及計數器8253的工作原理,對中斷有了更深的理解,比如中斷控制
31、字是如何設定的等等。總之這次硬件實驗需要理論與實踐的結合,在知識點理解的基礎上,通過實驗來加深理解,這樣使得知識更加形象生動。當然還要感謝老師和同學們在我遇到困難時所給予的幫助,讓我順利的完成這次硬件實驗。二、綜合設計實驗部分一、實驗設備微機實驗箱、8086CPU模塊。二、實驗要求紅綠燈的定時切換(每10秒切換一次)設置燈光測試開關K1,當K1打開(高電平)時,LED1LED4全亮,關閉時恢復正常切換。三、實驗步驟1、實驗接線:CS0«8255CS;CS1«CS8253;CLK3«8253CLK0;OUT0«8253CLK2OUT2«PA0,PA1,PA2,PA3;PB0«LED1;PB1«LED4;PB2«LED2;PB3«LED3;PA4-K1 2、編輯程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴金屬壓延加工中的節能減排措施考核試卷
- 纖維制造企業運營與管理考核試卷
- 平遙現代工程技術學校
- 學生人工呼吸訓練方案
- 麻醉學科核心體系解析
- 皮膚軟組織感染(SSTI)
- 呼吸護理創新案例前沿進展
- 教育培訓總結匯報
- 2025年雇主品牌調研-中國大陸區報告-任仕達
- 2025年公交優先戰略對城市交通擁堵治理的促進作用研究報告
- 中國美術學院非教學崗位招聘筆試真題2024
- 2025年新高考1卷(新課標Ⅰ卷)語文試卷
- 2025-2030中國設施管理服務行業市場發展趨勢與前景展望戰略研究報告
- 貴金屬分析檢測方法考核試卷
- 2025-2030離子注入機行業市場現狀供需分析及投資評估規劃分析研究報告
- 2022-2023學年北京市朝陽區人教版五年級下冊期末測試數學試卷(原卷版+解析)
- ISO28000:2022供應鏈安全管理體系
- 深圳市失業人員停止領取失業保險待遇申請表樣表
- PDCA管理工具在治療室管理質量中的應用
- 橋面系及附屬工程施工合同
- PHC管樁選用表
評論
0/150
提交評論