電子科大計算機學(xué)院匯編語言程序設(shè)計實驗報告_第1頁
電子科大計算機學(xué)院匯編語言程序設(shè)計實驗報告_第2頁
電子科大計算機學(xué)院匯編語言程序設(shè)計實驗報告_第3頁
電子科大計算機學(xué)院匯編語言程序設(shè)計實驗報告_第4頁
電子科大計算機學(xué)院匯編語言程序設(shè)計實驗報告_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

..電子科技大學(xué)計算機科學(xué)與工程學(xué)院標(biāo)準(zhǔn)實驗報告〔實驗〕課程名稱匯編語言與微機接口技術(shù)綜合實驗電子科技大學(xué)教務(wù)處制表電子科技大學(xué)實驗報告〔一〕學(xué)生:郫縣英格拉姆學(xué)號:89指導(dǎo)教師:皮皮怪實驗地點:主樓A2_412實驗時間:2017年4月25日星期二一、實驗室名稱:主樓A2_412機房二、實驗工程名稱:匯編語言編程訓(xùn)練三、實驗學(xué)時:3學(xué)時四、實驗原理:〔包括知識點,電路圖,流程圖〕知識點〔一〕課后自學(xué)——使用DOSBox在win7x64位下搭建匯編環(huán)境1.軟件安裝a.安裝3DOSBoxb.準(zhǔn)備debug.exe,masm.exe,link.exe,edit.exe文件。2.使用a.DOSBox安裝完成后,翻開,可發(fā)下它的提示符是:"Z:\>〞,這是DOSBox里的虛擬盤。我們需要更改到我們自己的盤符,如果直接更改的話,會提示你錯誤。首先需要mount到自己的目錄。b.比方我們準(zhǔn)備將D:\DEBUG作為我們自己的匯編測試目錄,那么執(zhí)行"mountCD:\DEBUG〞命令,這樣C盤符也就虛擬成了自己本地電腦的D:\DEBUG目錄。我們在DOSBox中切換到C盤符時,也就實際上切換到了D:\DEBUG目錄。c.將debug.exe,masm.exe,link.exe,edit.放置于D:\DEBUG目錄下,我們就能在DOSBox下直接使用它們了。3.配置上面我們?yōu)槭褂肈OSBox,要mount到我們本地目錄,但是我們每一次翻開DOSBox都要進(jìn)展這兩步,有點麻煩,可以通過下面的操作來保存配置。開場->所有程序->DOSBox-0.74->Options->DOSBox0.74Options,在文本的最后位置找到"[autoexec]〞:[autoexec]#Linesinthissectionwillberunatstartup.#YoucanputyourMOUNTlineshere.b.然后將下面的2條命令寫在此處:第一條命令的作用是mount目錄,第二條命令的作用是mount之后切換到D盤符:mountCD:\DEBUGC:知識點〔二〕課堂講述——相關(guān)知識介紹1.生成可執(zhí)行程序的過程·建立匯編源程序〔*.asm〕·匯編源程序文件,生成目標(biāo)文件〔*.obj〕、·連接目標(biāo)文件,生成可執(zhí)行文件(*.exe)·運行調(diào)試程序2.匯編假設(shè)masm.exe在D盤根目錄下,編輯了一個名為demo.asm的源文件,那么通過命令D:\>masmdemo.asm;擴展名可以忽略,默認(rèn)為asm類型得到匯編結(jié)果,如以下圖所示:·擴展名為*.lst的文件稱為列表文件,該文件對于后續(xù)的調(diào)試十分有用。關(guān)于列表文件〔*.lst〕列表文件同時列出源程序和機器語言程序清單,并給出段表、段的大小及屬性,以及用戶定義的符號表、符號類型及屬性,對于調(diào)試程序十分有用。3.連接在生成了目標(biāo)文件demo.obj以后,通過輸入命令D:\>linkdemo.obj;LINK.EXE是連接程序,同樣的,擴展名可以忽略,默認(rèn)為obj類型得到連接結(jié)果,如以下圖所示:4.調(diào)試a.關(guān)于DEBUG.EXEb.DEBUG.EXE的用法在DOS的提示符下,如下鍵入:c.DEBUG.EXE的考前須知d.本實驗課需要的DEBUG指令運行命令G、追蹤命令T、繼續(xù)命令P、顯示存單元容命令D、退出命令Q修改存單元容命令E、檢查和修改存放器容的命令R流程圖五、實驗電路〔本次實驗無電路圖〕六、實驗容:〔介紹自己所選的實驗容〕實驗容一:學(xué)習(xí)"第4章順序、分支、循環(huán)程序例子.ppt〞,按照要求完成以下題目并給出實驗結(jié)果〔至少選擇兩個〕:我選擇1、21、利用學(xué)號查學(xué)生的數(shù)學(xué)成績表在數(shù)據(jù)段中建立一個成績表TABLE,表中的成績按照學(xué)生學(xué)號從小到大的順序存放。要查的學(xué)號存放在變量NUM中,查表的結(jié)果放在變量MATH中?!灿肵LAT指令進(jìn)展查表〕2、無符號數(shù)排序數(shù)據(jù)段的ARY數(shù)組中存放有10個無符號數(shù),試找出其中最大者送入MAX單元。〔用LOOP指令做循環(huán)〕實驗容二:學(xué)習(xí)"第4子程序設(shè)計例子(1).ppt〞,用"堆棧傳遞參數(shù)〞的方式編程并運行給出結(jié)果.將兩個給定的二進(jìn)制數(shù)(8位和16位)轉(zhuǎn)換為ASCII碼字符串。用堆棧傳遞參數(shù),要求:分步驟給出堆棧狀態(tài)和運行結(jié)果。七、實驗步驟:〔編輯調(diào)試的過程〕實驗一:題目1.利用學(xué)號查學(xué)生的數(shù)學(xué)成績表1、根據(jù)題目要求,建立匯編源程序,用Windows系統(tǒng)自帶的記事本進(jìn)展編輯,另存為projec1.asm,并保存至masm.exe所在目錄中。2、匯編源程序文件,生成目標(biāo)文件project1.obj;3、通過link命令連接目標(biāo)文件,生成可執(zhí)行文件project1.exe;4、運行調(diào)試程序,鍵入debugproject1.asm,參考LST文件,通過G命令、D命令進(jìn)展調(diào)試,分析結(jié)果?!卜治鲞^程見報告第九局部〕。題目2.無符號數(shù)排序根據(jù)題目要求,建立匯編源程序,用Windows系統(tǒng)自帶的記事本進(jìn)展編輯,另存為projec2.asm,并保存至masm.exe所在目錄中。匯編源程序文件,生成目標(biāo)文件project2.obj通過link命令連接目標(biāo)文件,生成可執(zhí)行文件project2.exe運行調(diào)試程序,參考LST文件,通過G命令、D命令進(jìn)展調(diào)試,分析結(jié)果,〔分析過程見報告第九局部〕。實驗二:題目:用"堆棧傳遞參數(shù)〞的方式編程,將兩個給定的二進(jìn)制數(shù)(8位和16位)轉(zhuǎn)換為ASCII碼字符串。1.根據(jù)題目要求,建立匯編源程序,用Windows系統(tǒng)自帶的記事本進(jìn)展編輯,另存為projec4.asm,并保存至masm.exe所在目錄中。2.匯編源程序文件,生成目標(biāo)文件project4.obj3.通過link命令連接目標(biāo)文件,生成可執(zhí)行文件project4.exe4.運行調(diào)試程序,,通過G命令、D命令進(jìn)展調(diào)試,分析結(jié)果〔分析過程見報告第九局部〕。八、實驗結(jié)果:〔源程序代碼,必要的中文注釋,以及運行結(jié)果,包括截圖或者拍照〕實驗一第一題源代碼及其注釋如下:TITLETABLELOOKUPDATASEGMENT;數(shù)據(jù)段TABLEDB01,02,03,04,05,06,07,82,09,10DB11,12,13,14,15,16,17,18,19,20;為了便于調(diào)試,把82之外的數(shù)據(jù)進(jìn)展特殊處理,使其數(shù)值等于所在的位置NUMDB8;學(xué)號為8MATHDB"DATAENDSSTACK1SEGMENTPARASTACK;堆棧段DW20HDUP(0)STACK1ENDSCOSEGSEGMENTASSUMECS:COSEG,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AX;裝入DSMOVBX,OFFSETTABLE;BX指向表首地質(zhì)XORAH,AH;AH清零MOVAL,NUM;NUM值賦給ALDECAL;因為實際學(xué)號從1開場XLAT;查表MOVMATH,AL;存結(jié)果MOVAH,4CHINT21HCOSEGENDSENDSTART運行結(jié)果介紹及截圖、分析:運行調(diào)試程序,通過G命令、D命令進(jìn)展調(diào)試,分析結(jié)果。查看PROJECT1.LST文件,可以分析出調(diào)試的方法,分析過程見圖標(biāo)記:根據(jù)上述分析輸入指令g0013、d0015l1進(jìn)展調(diào)試,結(jié)果見以下圖:結(jié)果分析:MATH中成績?yōu)?2h,對應(yīng)十進(jìn)制82,而在程序源代碼中對成績的定義情況如下,其中的學(xué)號為8對應(yīng)的成績確實為82:符合要求,實驗成功。實驗一:第二題源代碼及其注釋如下:DATASEGMENTARYDB01,16,02,03,04,05,06,07,08,09MAXDB"DATAENDSSTACK1SEGMENTPARASTACKDW20HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1BEGIN:MOVAX,DATAMOVDS,AX;裝入DSMOVSI,OFFSETARY;SI指向ARY第一個元素MOVCX,9;CX做計數(shù)器MOVAL,[SI];取第一個元素到ALLOP:INCSI;SI指向后一個元素CMPAL,[SI];比擬兩個數(shù)JAEBIGER;前元素>=后元素,那么跳到BIGER進(jìn)展處理MOVAL,[SI];取較大數(shù)到ALBIGER:LOOPLOP;循環(huán)執(zhí)行LOOPMOVMAX,AL;存最大數(shù)MOVAH,4CHINT21HCODEENDSENDBEGIN運行結(jié)果介紹及截圖、分析:運行調(diào)試程序,通過G命令、D命令進(jìn)展調(diào)試,分析結(jié)果。查看PROJECT2.LST文件,可以分析出調(diào)試的方法,分析過程見圖標(biāo)記:根據(jù)上述分析輸入指令g0019、d000al1進(jìn)展調(diào)試,結(jié)果見以下圖:MATH中成績?yōu)?0h,對應(yīng)十進(jìn)制數(shù)16,確實是我編寫的十個數(shù)中的最大數(shù):符合要求,實驗成功。實驗二:堆棧傳遞參數(shù),轉(zhuǎn)化ASCII碼代碼及注釋如下:DATASEGMENTBIN1DB35HBIN2DW0AB48HASCBUFDB20HDUP(")DATAENDSSTACK1SEGMENTPARASTACKDW20HDUP(65535);對應(yīng)OFFFFH便于查看存單元時確定堆棧位置STACK1ENDSCOSEGSEGMENTASSUMECS:COSEG,DS:DATA,SS:STACK1BEGIN:MOVAX,DATAMOVDS,AXXORAX,AX;清零AXMOVAH,BIN1;第一個數(shù)據(jù)送AHPUSHAX;待轉(zhuǎn)換數(shù)據(jù)壓棧MOVAX,8PUSHAX;待轉(zhuǎn)換位數(shù)壓棧LEADI,ASCBUFPUSHDI;存放ASCII碼首址壓棧CALLBINASC;調(diào)用轉(zhuǎn)換子程序MOVAX,BIN2;第二個數(shù)據(jù)送AXPUSHAX;待轉(zhuǎn)換數(shù)據(jù)壓棧MOVAX,10HPUSHAX;待轉(zhuǎn)換位數(shù)壓棧ADDDI,8PUSHDI;DI+8壓棧CALLBINASC;調(diào)用轉(zhuǎn)換子程序MOVAH,4CHINT21HBINASCPROCPUSHAXPUSHCXPUSHDXPUSHDIMOVBP,SPMOVDI,[BP+10];從堆棧取入口參數(shù)MOVCX,[BP+12]MOVDX,[BP+14]LOP:ROLDX,1;LOP為將所給轉(zhuǎn)化為ASCII的算法MOVAL,DLANDAL,1ADDAL,30HMOV[DI],ALINCDILOOPLOPPOPDIPOPDXPOPCXPOPAXRET6;返回并從堆棧中彈出6個字節(jié)BINASCENDPCOSEGENDSENDBEGIN分析:首先單步運行幾條指令,通過d00查看存單元狀態(tài),檢測堆棧段等的設(shè)置是否成功:空間看起來有問題:上面顯示00的局部是設(shè)置的ASCBUF應(yīng)該有用32個字節(jié),截圖顯示是45個;下面的STACK1應(yīng)該有64個字節(jié),截圖顯示是54個,但后面全部執(zhí)行完畢后結(jié)果是正確的。在網(wǎng)絡(luò)上查詢過后得知應(yīng)該是軟件的原因。繼續(xù)執(zhí)行至將第一個待轉(zhuǎn)換數(shù)據(jù)0035H壓棧,查看存單元,截圖如下:同樣的,執(zhí)行至待轉(zhuǎn)換位數(shù)、存放ASCII碼首址成功入棧,與上圖相似,省去截圖,直至調(diào)用轉(zhuǎn)化子程序,執(zhí)行完一系列入棧操作和取入口參數(shù)、數(shù)據(jù)位數(shù)、待轉(zhuǎn)換數(shù)據(jù)操作:進(jìn)入標(biāo)號為LOP的程序段,循環(huán)執(zhí)行求ASCII碼的算法,將數(shù)據(jù)一位一位地轉(zhuǎn)化為ASCII碼,循環(huán)過程中可以看到CX依次減1,減小至0時不再執(zhí)行LOP循環(huán):繼續(xù)執(zhí)行至第一個數(shù)據(jù)轉(zhuǎn)化完畢,查看存單元情況,與預(yù)期結(jié)果進(jìn)展比擬,第一個待轉(zhuǎn)換數(shù)據(jù)35H=00110101B,其對應(yīng)ASCII碼確實與存單元中顯示一樣,詳見圖片:第二個待轉(zhuǎn)換數(shù)據(jù)分析過程與第一個數(shù)據(jù)一樣,轉(zhuǎn)化完畢后同樣與預(yù)期結(jié)果進(jìn)展比擬:第二個待轉(zhuǎn)換數(shù)據(jù)AB48H=1010101101001000B,其對應(yīng)ASCII碼確實與存單元中顯示一樣,詳見圖片:九、結(jié)果分析和改良意見〔完成每次留的問答題,以及實驗過程中遇到的問題〕匯編語言編程作為低級語言,與高級語言相比,可讀性不如高級語言,更易出錯,調(diào)試更麻煩,但是邏輯性很強,更接近機器,分析起來很有意思,每一步都是很小的操作,最后能到達(dá)目的。在堆棧傳遞參數(shù)的實驗中,存中顯示00的局部是設(shè)置的ASCBUF,應(yīng)該有用32個字節(jié),截圖顯示是45個;下面的STACK1應(yīng)該有64個字節(jié),截圖顯示是54個,但后面全部執(zhí)行完畢后結(jié)果是正確的。在網(wǎng)絡(luò)上查詢過后發(fā)現(xiàn)有很多相似的情況,應(yīng)該是軟件的原因。后期可以研究一下產(chǎn)生這種現(xiàn)象的具體原因和解決方案。十、心得體會:做實驗很有趣,寫報告很煩。在大三下學(xué)期,保研考研找實習(xí)最忙的時候,要寫這么多報告,很難受。但是萬幸王教師很漂亮,講話又好聽,我超喜歡她的。如果她直接教匯編理論課我一定好好聽~~~報告評分:指導(dǎo)教師簽字:電子科技大學(xué)實驗報告〔二〕學(xué)生:郫縣英格拉姆學(xué)號:89指導(dǎo)教師:皮皮怪實驗地點:主樓A2_412實驗時間:2017年5月9日星期二一、實驗室名稱:主樓A2_411機房二、實驗工程名稱:8259A中斷控制器實驗三、實驗學(xué)時:3學(xué)時四、實驗原理:〔包括知識點,流程圖〕〔一〕知識點:〔教師上課提的問題寫在報告第九局部〕1.8259A的工作過程〔1〕中斷源在中斷請求輸入端IR0-IR7上產(chǎn)生中斷請求涉及問題:中斷請求的觸發(fā)方式有哪些?·電平觸發(fā)方式:用IR引腳上的有效高電平信號觸發(fā)中斷。常被用于需要重復(fù)執(zhí)行當(dāng)前中斷效勞程序的情況,直到IR信號變?yōu)闊o效?!み呇赜|發(fā)方式:采用IR輸入信號的上升沿觸發(fā)中斷,常被用于不希望產(chǎn)生重復(fù)響應(yīng)及中斷請求信號是一個短暫脈沖的情況。〔2〕中斷請求被鎖存在IRR中,并經(jīng)IMR屏蔽,結(jié)果送優(yōu)先權(quán)電路判優(yōu)涉及問題:IRR/IMR的數(shù)據(jù)是自動寫入還是通過軟件編程設(shè)定?·IRR的數(shù)據(jù)是根據(jù)中斷請求信號自動寫入的〔有中斷請求的對應(yīng)位為1,允許多個位為1,如果被響應(yīng)對應(yīng)位清零〕;·IMR的數(shù)據(jù)是通過軟件編程設(shè)定的〔通過對某位或某幾位置1屏蔽該位,使其不能進(jìn)入優(yōu)先級判別器〕〔3〕優(yōu)先權(quán)電路檢出優(yōu)先權(quán)最高的中斷請求位,設(shè)置ISR的對應(yīng)位(置1)涉及問題:中斷判優(yōu)的依據(jù)是什么?ISR是自動寫入還是通過軟件編程設(shè)定?·IRR的數(shù)據(jù)是根據(jù)中斷請求信號自動寫入的〔有中斷請求的對應(yīng)位為1,允許多個位為1,如果被響應(yīng)對應(yīng)位清零〕;·IMR的數(shù)據(jù)是通過軟件編程設(shè)定的〔通過對某位或某幾位置1屏蔽該位,使其不能進(jìn)入優(yōu)先級判別器〕〔4〕8259A控制邏輯承受中斷請求,向CPU輸出INT信號〔5〕CPU承受INT信號,進(jìn)入兩個INTA中斷響應(yīng)周期,第一個周期通知8259A做好響應(yīng)準(zhǔn)備,第二個周期8259A將響應(yīng)的中斷類型號輸出到DB上涉及問題:CPU中斷響應(yīng)過程中的"配套操作〞有哪些?·8259A接到來自CPU的第一個脈沖時,設(shè)置ISR并把IRR中的相應(yīng)位復(fù)位。同時,8259A準(zhǔn)備向數(shù)據(jù)總線發(fā)送中斷向量?!ぴ?259A發(fā)送中斷向量的最后一個脈沖期間,如果是在自動完畢中斷方式下,在這個脈沖完畢時復(fù)位ISR的相應(yīng)位。在其他方式下,ISR相應(yīng)位要由中斷效勞程序完畢時發(fā)出的EOI命令來復(fù)位?!?〕CPU讀取該中斷類型號,轉(zhuǎn)移到相應(yīng)的中斷處理程序涉及問題:如何通過中斷類型號找到中斷處理程序?2.8259A的命令字〔1〕ICW1/OCW2/OCW3復(fù)用同一個地址〔A0=0〕;剩下的命令字復(fù)用另一個地址〔A0=1〕,在本系統(tǒng)中,復(fù)用地址分別是0FFE0H和0FFE1H,預(yù)置數(shù)類別順序為先初始化命令字,再操作命令字,預(yù)置數(shù)設(shè)定順序為下標(biāo)順序〔見"第六章輸入輸出與中斷-2-8259〞P32〕〔2〕0FFE0H用于ICW1,OCW2和OCW3,0FFE1H用于ICW2,ICW3,ICW4和OCW1。本次實驗中,ICW3、OCW3不需要進(jìn)展設(shè)定?!?〕本實驗只需要用一片8259A進(jìn)展中斷控制,中斷源采用單脈沖信號,中斷觸發(fā)方式屬于邊沿觸發(fā),且8086/8088系統(tǒng)必須設(shè)定ICW4,因此ICW1=00010011B=13H〔4〕本系統(tǒng)中,設(shè)定使用中斷類型8來效勞IR7邊沿觸發(fā)產(chǎn)生的中斷,所以ICW2=00001000B=08H〔5〕對于單片8259A,不需要設(shè)定ICW3,而8086/8088系統(tǒng)需要確定ICW4。因此跳過ICW3的設(shè)定直接設(shè)定ICW4。在該實驗中,我們使用全嵌套方式〔最常用的也是默認(rèn)的工作方式,只開放比當(dāng)前中斷優(yōu)先級高的中斷,且中斷優(yōu)先權(quán)的級別固定,按照IR0-IR7逐級次之?!澈推胀‥OI方式〔一般的中斷完畢方式,在中斷程序返回前,輸出中斷完畢命令把ISR當(dāng)前優(yōu)先級最高的對應(yīng)位清零〕操作,因此ICW4=00001001B=09H〔6〕對于OCW,假設(shè)使用OCW1來屏蔽除IR7外其它所有中斷,這樣OCW1=01111111B=7FH;選用普通EOI,那么OCW2=00100000=20H3.有關(guān)中斷向量存儲地址的形成說明〔1〕ICW2是設(shè)置中斷類型碼的初始化命令字。其中,D7~D3是8086/8088系統(tǒng)中8259A的中斷指針地址的高5位,D2~D0的值恒為0。〔2〕本系統(tǒng)的中斷序號和中斷地址對應(yīng)表如下:4.有關(guān)ICW4的設(shè)置說明ICW4的位定義如下:·其中,D7-D5位總是為0·在IBMPC/XT系統(tǒng)中,BUF位設(shè)定為1,M/S設(shè)定為0·普通中斷完畢方式用于完全嵌套情況下,8259每得到一次EOI命令,將把ISR中已經(jīng)置位的各位中優(yōu)先級最高的位復(fù)位,以此類推?!ひ虼?,在本例中,ICW4=00001001B=09H5.有關(guān)OCW2的設(shè)置說明OCW2用于控制中斷完畢,其格式如下:·其中,R為優(yōu)先權(quán)控制位,R=1為循環(huán)優(yōu)先權(quán),R=0為固定優(yōu)先權(quán)·SL位決定了OCW2中L2,L1,L0是否有效,SL=1那么有效,否那么無效·EOI為中斷完畢命令位,在非自動中斷完畢命令下,EOI=1使得中斷效勞存放器ISR中具有最高優(yōu)先權(quán)的IS復(fù)位,EOI=0那么該位無效?!ぴ诒緦嶒炛?,OCW2=0010000=20H6.七段數(shù)碼管顯示相關(guān)知識數(shù)碼管字形口地址:0FFDCH,字形代碼如下表所示:上述不同的代碼實際上就是使得每只數(shù)碼管中八只發(fā)光二極管的不同"點亮〞組合,從而形成所謂不同的"字形〞。數(shù)碼管字位口地址:0FFDDH,字位代碼如下表所示:上述不同的代碼實際上就是"選通〞某一片數(shù)碼管工作的片選信號,顯然,對應(yīng)選通信號高電平有效。字位1對應(yīng)邏輯箱最左邊那只數(shù)碼管,字位6對應(yīng)最右邊那只數(shù)碼管。7.七段數(shù)碼管顯示電路圖〔ppt〕8.Dais微機接口實驗箱操作說明〔ppt〕9.Windows平臺操作方法〔ppt〕10.LED平臺操作方法說明〔ppt〕〔二〕流程圖:(用visio畫的)五、實驗電路:1、實驗參考電路及接線說明〔8259局部〕〔紅色連線為補充連線〕·SP插孔和8259A的IR7插孔相連,同時將SP插孔和8259A的IR6插孔也連接起來,提供兩個中斷源·連接138譯碼輸入端A.B.C,其中A連A2,B連A3,C連A4,138使能控制輸入端G與位于地址線A0引出孔所在位置下方的使能控制輸出端G作對應(yīng)連接。8259的CS端連138譯碼器的Y0孔。·將8259的單元總線接口D0-D7,用8芯排線或8芯扁平線與數(shù)據(jù)總線單元D0-D7任一接口相連。2、電路圖拍照:六、實驗容:〔介紹自己所選的實驗容〕編制程序,利用8259芯片的IRi作為中斷源,產(chǎn)生多級中斷,系統(tǒng)顯示中斷號,比方:IR7作為中斷源那么顯示7。七、實驗步驟:1.點擊桌面上"Intel8088微機實驗系統(tǒng)〞圖標(biāo);2.選擇通信串口和速率;3.檢查有無錯誤對話框,是否正確連接儀器;4.進(jìn)入dais集成開發(fā)環(huán)境;5.選擇本次實驗對應(yīng)的實驗指導(dǎo);6.調(diào)出連線指導(dǎo),按照實驗原理電路圖,在實驗箱上進(jìn)展連線;7.調(diào)出參考代碼,進(jìn)展修改,編寫本次實驗的源程序,源代碼及注釋按ppt要求,放在實驗結(jié)果局部;8.將源程序編譯、連接、裝載入儀器,假設(shè)出錯那么進(jìn)展修改,直到裝載成功;9.將LED平臺復(fù)位,然后點擊綠色按鈕運行;八、實驗結(jié)果:〔源程序代碼,必要的中文注釋,以及運行結(jié)果,包括截圖或者拍照〕〔一〕源程序代碼及中文注釋:CODESEGMENTASSUMECS:CODE,DS:CODE,ES:CODEORG3400HH8:JMPP8259ZXKEQU0FFDCH;數(shù)字管字形碼端口地址ZWKEQU0FFDDH;數(shù)字管字位碼端口地址LEDDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;LEDDB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HBUFDB",",",",",";預(yù)留6個字節(jié)空間存放的是需要顯示的字符,如123456PORT0EQU0FFE0H;偶地址PORT1EQU0FFE1H;奇地址P8259:CLI;關(guān)中斷CALLWP;初始化顯示"P.〞MOVAX,OFFSETINT8359MOVBX,0038H;6號中斷向量表MOV[BX],AXMOVBX,003AHMOVAX,0000HMOV[BX],AXMOVAX,OFFSETINT8259MOVBX,003CH;7號中斷向量表MOV[BX],AXMOVBX,003EHMOVAX,0000HMOV[BX],AXCALLFOR8259;命令字的設(shè)置MOVSI,0000HSTI;開中斷CALLWPCON8:CALLDISJMPCON8;------------------------------------INT8259:CLI;初始化8259IR7MOVBX,OFFSETBUFMOVBYTEPTR[BX+SI],07H;INCSICMPSI,0007HJZX59XX59:MOVAL,20H;OCW2MOVDX,PORT0OUTDX,ALMOVCX,0050HXXX59:PUSHCXCALLDISPOPCXLOOPXXX59POPCXMOVCX,3438HPUSHCXSTIIRETX59:MOVSI,0000HCALLWPJMPXX59;------------------------------------INT8359:CLI;初始化8259IR6MOVBX,OFFSETBUFMOVBYTEPTR[BX+SI],06H;INCSICMPSI,0007HJZY59YY59:MOVAL,20H;OCW2=0010000=20H一般EOI命令,全嵌套方式MOVDX,PORT0OUTDX,ALMOVCX,0050HYYY59:PUSHCXCALLDISPOPCXLOOPYYY59POPCXMOVCX,3438HPUSHCXSTIIRETY59:MOVSI,0000HCALLWPJMPYY59;==============================FOR8259:MOVAL,13H;ICW1=00010011B=13H單脈沖邊沿觸發(fā)MOVDX,PORT0OUTDX,ALMOVAL,08H;ICW2=00001000B=08H中斷類型8MOVDX,PORT1OUTDX,ALMOVAL,09H;ICW4=400001001B=09H全嵌套方式,普通EOI方式OUTDX,ALMOVAL,00H;OCW1=00000000B=00H不屏蔽中斷OUTDX,ALRET;---------------------------WP:MOVBUF,11H;初始化顯示"P.〞MOVBUF+1,10HMOVBUF+2,10HMOVBUF+3,10HMOVBUF+4,10HMOVBUF+5,10HRET;--------------------------------DIS:MOVCL,20H;字位碼指向左側(cè)第一個數(shù)碼管MOVBX,OFFSETBUFDIS1:MOVAL,[BX];取第一個需要顯示的字符PUSHBXMOVBX,OFFSETLED;BX指向字形碼表的表頭地址XLAT;查表得到需要顯示的字符對應(yīng)的字形碼,,并裝入ALPOPBXMOVDX,ZXKOUTDX,AL;將要顯示的字形碼輸出到字形碼端口MOVAL,CLMOVDX,ZWKOUTDX,AL;將要顯示的字位碼輸出到字位碼端口PUSHCXMOVCX,0100HDELAY:LOOP$;延時程序POPCXCMPCL,01H;檢測是否顯示到最右側(cè)的數(shù)碼管JZEXIT;如果是,退出INCBXSHRCL,1JMPDIS1;否那么繼續(xù)顯示下一個EXIT:MOVAL,00HMOVDX,ZWKOUTDX,AL;一個都不顯示RET;返回主程序;--------------------------CODEENDSENDH8〔二〕運行結(jié)果及分析1、運行結(jié)果介紹: 不按彈片時,初始化顯示"P.〞;短按彈片時,顯示"6〞;長按彈片時,先顯示"6〞,再顯示"7〞。2、照片:將關(guān)鍵局部合并到一圖片,便于觀察,如以下圖:3、結(jié)果分析:不按彈片時,初始化顯示"P.〞;短按彈片時,有IR6和IR7兩個中斷源,由于OCW2設(shè)置為固定優(yōu)先級,IR0優(yōu)先級最高,依次遞減,IR6優(yōu)先被處理,因此顯示"6〞,由于短按,處理完IR6之后IR7中斷信號源已經(jīng)消失;長按彈片時,有IR6和IR7兩個中斷源,IR6優(yōu)先被處理,因此顯示"6〞,后處理IR7,因此之后顯示變?yōu)?7〞。九、結(jié)果分析和改良意見〔完成每次留的問答題,以及實驗過程中遇到的問題〕〔一〕上課留的問答題1、pc機有幾塊8259,端口地址是多少〔1〕早期的微型計算機使用單片的8259A,如早期IBMPC/XT只有一個8259A,端口地址分別是20H、21H。〔2〕后期,設(shè)計師們意識到這是不夠的,到了IBMPC/AT,有2個8259A,一個稱作Master,另一個稱作Slave,Slave以基連的方式連接在Master上,如今大多數(shù)PC都有兩個8259A。課件相關(guān)知識:2、ret和iret的區(qū)別〔1〕ret是過程調(diào)用的返回指令,一般位于子程序的最后,如果是段返回,那么從堆棧中彈出一個字送IP,如果是段間返回,那么從堆棧中彈出兩個字送IP和CS,不需要恢復(fù)標(biāo)志存放器;〔2〕iret是中斷返回指令,是中斷效勞程序的最后一條指令,負(fù)責(zé)恢復(fù)斷點并恢復(fù)標(biāo)志存放器的容。3、中斷和過程調(diào)用的區(qū)別〔1〕中斷是隨機事件或異常事件引起,調(diào)用那么是事先已在程序中安排好;〔2〕響應(yīng)中斷請求不僅要保護(hù)斷點地址,還要保護(hù)FLAGS標(biāo)志存放器的容;〔3〕調(diào)用指令在指令中直接給出子程序入口地址,而中斷指令只給出中斷向量碼,入口地址那么在向量碼指向的存單元中。4、短按和長按的區(qū)別〔1〕短按,那么中斷時間短,處理完IR6中斷后,IR7的中斷信號源已經(jīng)不存在了;〔2〕長按,那么中斷時間長,處理完IR6中斷后,IR7源仍然存在,繼續(xù)處理IR7中斷。〔二〕實驗過程中遇到的問題一定要正確運用開關(guān)中斷的指令,為了防止其他中斷效勞影響當(dāng)前中斷效勞程序的運行,可以在當(dāng)前程序開場運行的時候加上CLI指令。在當(dāng)前程序運行完畢的時候,為了不影響其他中斷效勞程序的正常請求和響應(yīng),應(yīng)該加上STI指令開放中斷。做實驗很有趣,寫報告很煩。在大三下學(xué)期,保研考研找實習(xí)最忙的時候,要寫這么多報告,很難受。但是萬幸王教師很漂亮,講話又好聽,我超喜歡她的。如果她直接教匯編理論課我一定好好聽~~~可以把中斷源增加至3個、4個等,讓數(shù)碼管的顯示變化更復(fù)雜有趣。十一、心得體會:做實驗很有趣,寫報告很煩。在大三下學(xué)期,保研考研找實習(xí)最忙的時候,要寫這么多報告,很難受。但是萬幸王教師很漂亮,講話又好聽,我超喜歡她的。如果她直接教匯編理論課我一定好好聽~~~報告評分:指導(dǎo)教師簽字:電子科技大學(xué)實驗報告〔三〕學(xué)生:郫縣英格拉姆學(xué)號:89指導(dǎo)教師:皮皮怪實驗地點:主樓A2_412實驗時間:2017年5月16日星期二一、實驗室名稱:主樓A2_411機房二、實驗工程名稱:8253時鐘中斷計時實驗三、實驗學(xué)時:3學(xué)時四、實驗原理:〔包括知識點,流程圖〕〔一〕知識點:〔教師上課提的問題寫在報告第九局部〕〔一〕有關(guān)8253芯片8253根本工作方式就是對CLK時鐘脈沖進(jìn)展計數(shù)。CLK脈沖可以是均勻的、連續(xù)的、周期準(zhǔn)確的,也可以是不均勻的、斷續(xù)的、周期不定的。無論8253工作于何種方式,當(dāng)計數(shù)器減1到0時,在OUT引腳上必定有電平或脈沖輸出,OUT引腳輸出的信號可以是方波、電平或脈沖等,由工作方式?jīng)Q定。8253每個計數(shù)器都可以選擇6種工作方式之一進(jìn)展工作。在控制字中進(jìn)展設(shè)定。二進(jìn)制方式計數(shù)的最小值是0001H,最大值為0000H,即216=65536二-十進(jìn)制〔BCD碼〕計數(shù)的最小值是0001H,最大值為0000H,即10^4=10000〔二〕計數(shù)器和定時器的異同點一樣之處:都需要設(shè)定計數(shù)初值,在每個輸入脈沖的作用下進(jìn)展減1計數(shù),減到0后產(chǎn)生一個OUT輸出。不同之處:1.定時器方式下減到0后會自動恢復(fù)初始值進(jìn)展下一輪減1計數(shù);計數(shù)器方式下減到0后必須有新的外界因素的重觸發(fā)才開場新一輪減1計數(shù)。2.定時器方式下的輸入時鐘CLK必須是等周期的;計數(shù)器方式下的輸入時鐘CLK不一定是等周期的?!踩酬P(guān)于選擇分頻信號源的說明【目標(biāo)】產(chǎn)生一個1s周期的方波信號〔方式3〕和1s延時的信號〔方式0〕1s周期對應(yīng)的頻率是1HZ,當(dāng)計數(shù)初值=信號頻率時得到1s周期的信號輸出T0-T7中,最小的非小數(shù)頻率〔HZ為單位〕計數(shù)初值為76.8K【結(jié)論】任意一個通道的計數(shù)器最大值<76.8K,無法一次設(shè)定好需要的初值解決方案〔該系統(tǒng)CPU8088/8086采用主頻為14.3818MHz〕1.用多個定時/計數(shù)通道進(jìn)展分頻2.對單個定時/計數(shù)通道進(jìn)展設(shè)置,設(shè)定一定倍數(shù)的周期信號引發(fā)顯示刷新〔不是引發(fā)顯示中斷〕〔二〕流程圖:(用visio畫的)五、實驗電路:1、實驗參考電路及接線說明〔紅色連線為補充連線〕·8253的GATE接+5V〔方式3〕或者開關(guān)〔方式0〕。·8253的CLK插孔接分頻器74LS393的T0-T7插孔〔建議選擇76.8KHZ〕·8253的OUT輸出端與8259的IR7輸入端相連?!みB接138譯碼輸入端A.B.C,其中A連A2,B連A3,C連A4,138使能控制輸入端G與位于地址線A0引出孔所在位置下方的使能控制輸出端G作對應(yīng)連接,該端的尋址圍為0FFE0H~0FFFFH。8253、8259的CS孔與138譯碼器的Y0孔相連?!?259、8253的單元總線接口D0~D7用8芯排線或8芯扁平線與數(shù)據(jù)總線單元D0~D7任一接口相連〔要接兩根數(shù)據(jù)線〕。2、電路圖拍照:六、實驗容:〔介紹自己所選的實驗容〕利用8253的多個通道產(chǎn)生周期方波信號〔方式3〕,該信號作為8259芯片的中斷源,用邊沿觸發(fā)方式產(chǎn)生中斷〔單級中斷〕,從而在七段數(shù)碼管上構(gòu)成一個"秒表〞〔顯示圍為0-9或者00-59〕。要求正確設(shè)置參數(shù)和采用適當(dāng)?shù)木幊碳记桑沟闷叨螖?shù)碼管的顯示間隔為1s。七、實驗步驟:1.點擊桌面上"Intel8088微機實驗系統(tǒng)〞圖標(biāo);2.選擇通信串口和速率;3.檢查有無錯誤對話框,是否正確連接儀器;4.進(jìn)入dais集成開發(fā)環(huán)境;5.選擇本次實驗對應(yīng)的實驗指導(dǎo);6.調(diào)出連線指導(dǎo),按照實驗原理電路圖,在實驗箱上進(jìn)展連線;7.調(diào)出參考代碼,進(jìn)展修改,編寫本次實驗的源程序,源代碼及注釋按ppt要求,放在實驗結(jié)果局部;8.將源程序編譯、連接、裝載入儀器,假設(shè)出錯那么進(jìn)展修改,直到裝載成功;9.將LED平臺復(fù)位,然后點擊綠色按鈕運行;八、實驗結(jié)果:〔源程序代碼,必要的中文注釋,以及運行結(jié)果,包括截圖或者拍照〕〔一〕源程序代碼及中文注釋:CODESEGMENTASSUMECS:CODE,DS:CODE,ES:CODEORG3400HH8:JMPP8259ZXKEQU0FFDCH;數(shù)字管字形碼端口地址ZWKEQU0FFDDH;數(shù)字管字位碼端口地址LEDDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;LEDDB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HBUFDB",",",",",";預(yù)留6個字節(jié)空間存放的是需要顯示的字符,如123456IR_COUNTDB0SC_0EQUBUF+5PORT0EQU0FFE0H;8253計數(shù)器0&8259偶地址PORT1EQU0FFE1H;8253計數(shù)器1&8259奇地址PORT2EQU0FFE2H;8253計數(shù)器2PCEQU0FFE3H;8253控制存放器地址P8259:CLICALLWP;初始化顯示"P.〞MOVAX,OFFSETIR7_BEGIN;取IR7中斷效勞程序偏移地址MOVBX,003CHMOV[BX],AX;寫中斷向量表IPMOVBX,003EHMOVAX,0000HMOV[BX],AX;寫中斷向量表CSCALLFOR8253;8253初始化CALLFOR8259;8259初始化MOVSI,0000HSTICON8:CALLDISJMPCON8;------------------------------------IR7_BEGIN:CLIINCBYTEPTR[IR_COUNT]CMPBYTEPTR[IR_COUNT],4IR7_EMOVBYTEPTR[IR_COUNT],0CALLINCS0IR7_E:MOVAL,20H;OCW2,EOI命令MOVDX,PORT0OUTDX,ALMOVBX,OFFSETBUFPOPCXMOVCX,OFFSETCON8;也顯示當(dāng)前BUF中的數(shù)據(jù)PUSHCXSTIIRETINCS0:INCBYTEPTR[SC_0]CMPBYTEPTR[SC_0],10INCS0_CARRYMOVBYTEPTR[SC_0],0INCS0_CARRY:RET;==============================FOR8259:MOVAL,13H;ICW1單級中斷,需要ICW4,不需要ICW3MOVDX,PORT0OUTDX,ALMOVAL,08H;ICW2MOVDX,PORT1OUTDX,ALMOVAL,09H;ICW4,特殊全嵌套,緩沖方式,8086OUTDX,ALMOVAL,7FH;OCW1,中斷屏蔽操作字,屏蔽除IR7之外的所有中斷OUTDX,ALRET;==============================FOR8253:MOVDX,PCMOVAL,36H;00110110計數(shù)器0,先低后高,方式3,二進(jìn)制OUTDX,ALMOVDX,PORT0MOVAL,00H;低8位OUTDX,ALMOVAL,4BH;高8位OUTDX,AL;---------------------------WP:MOVBUF,11H;初始化顯示"P.〞MOVBUF+1,10HMOVBUF+2,10HMOVBUF+3,10HMOVBUF+4,10HMOVBUF+5,10HRET;--------------------------------DIS:MOVCL,20HMOVBX,OFFSETBUFDIS1:MOVAL,[BX];取第一個需要顯示的字符PUSHBXMOVBX,OFFSETLED;BX指向字形碼表的表頭地址XLAT;查表得到需要顯示的字符對應(yīng)的字形碼,并裝入ALPOPBXMOVDX,ZXKOUTDX,AL;將要顯示的字形碼輸出到字形碼端口MOVAL,CLMOVDX,ZWKOUTDX,AL;將要顯示的字位碼輸出到字位碼端口PUSHCXMOVCX,0100HDELAY:LOOP$;延時程序POPCXCMPCL,01H;檢測是否顯示到最右側(cè)的數(shù)碼管JZEXIT;如果是,退出INCBXSHRCL,1JMPDIS1;否那么繼續(xù)顯示下一個EXIT:MOVAL,00HMOVDX,ZWKOUTDX,AL;一個都不顯示RET;返回主程序;--------------------------CODEENDSENDH8〔二〕運行結(jié)果1、運行結(jié)果介紹:運行程序,數(shù)碼管左側(cè)顯示"P.〞不變,右側(cè)按照1s的時間間隔變化,依次顯示數(shù)字"0〞~"9〞,實現(xiàn)秒表,很好的完成了實驗要求。2、照片:將關(guān)鍵局部合并到一圖片,便于觀察,如以下圖:九、結(jié)果分析和改良意見〔完成每次留的問答題,以及實驗過程中遇到的問題〕〔一〕上課留的問答題1、在實驗中,先初始化8253還是8259?為什么?先初始化8253。因為8253和8259存在地址復(fù)用,8259的初始化程序中存在指令會干擾8253的初始化。2. PC機上有無8253,地址分配如何?有8253。PC/XT微機系統(tǒng)中使用一片8253,T0、T1、T2、控制口地址依次是:40H、41H、42H、43H。三個定時/計數(shù)器各自的用途是:定時/計數(shù)器T0:用于日歷時鐘計時;定時/計數(shù)器T1:用于DRAM存定時刷新;定時/計數(shù)器T2:用于揚聲器發(fā)聲。十一、心得體會:做實驗很有趣,寫報告很煩。在大三下學(xué)期,保研考研找實習(xí)最忙的時候,要寫這么多報告,很難受。但是萬幸王教師很漂亮,講話又好聽,我超喜歡她的。如果她直接教匯編理論課我一定好好聽~~~報告評分:指導(dǎo)教師簽字:電子科技大學(xué)實驗報告〔四〕學(xué)生:郫縣英格拉姆學(xué)號:89指導(dǎo)教師:皮皮怪實驗地點:主樓A2_412實驗時間:2017年5月23日周二一、實驗室名稱:主樓A2_411機房二、實驗工程名稱:8255A并行可編程接口芯片實驗三、實驗學(xué)時:3學(xué)時四、實驗原理:〔包括知識點,流程圖〕〔一〕知識點:〔教師上課提的問題寫在報告第九局部〕1.有關(guān)8255的工作方式方式0——根本輸入/輸出方式,不用聯(lián)絡(luò)信號,不用中斷。A組和B組都可以作為輸入/輸出,而且輸出是鎖存的。方式1——選通輸入輸出方式,與方式0相比,它的主要特點是當(dāng)A口、B口工作于方式1時,C口的某些I/O線被定義為A口和B口在方式1下工作時所需的聯(lián)絡(luò)信號線,這些線已經(jīng)定義,不能由用戶改變。A口工作于方式1輸出時,用PC3,PC6和PC7作聯(lián)絡(luò)線。C口剩余的兩個I/O線PC4和PC5工作于方式0。該方式下輸入輸出均帶鎖存器。2、實驗題目2考前須知【分析】PA口驅(qū)動LED,因此作為輸出,工作在方式1,需要正確連接和設(shè)置PC3/PC6/PC7三個聯(lián)絡(luò)信號,如以下圖所示:由于8255采用中斷方式傳送數(shù)據(jù),故INTEA=1〔PC6=1〕,需要通過C口置位/復(fù)位控制字來設(shè)定;INTRA由PC3連接8259A的IR,引發(fā)中斷;PC7未用。3、8255A的方式選擇控制字格式4、8255A通道C置位/復(fù)位控制字格式〔二〕流程圖:(用visio畫的)五、實驗電路:1、實驗參考電路及接線說明〔紅色連線為補充連線〕·用PC6連接單脈沖發(fā)生器模擬外設(shè)應(yīng)答信號,PC3連接8259的IR端〔單級中斷〕2、電路圖拍照:六、實驗容:〔介紹自己所選的實驗容〕設(shè)置8255的A組工作在方式1,用中斷的方式驅(qū)動PA口8只發(fā)光二極管,用PC6連接單脈沖發(fā)生器模擬外設(shè)應(yīng)答信號,PC3連接8259的IR端〔單級中斷〕,每按一次單脈沖就點亮一個LED〔從左往右或者從右往左依次點亮〕。七、實驗步驟:1.點擊桌面上"Intel8088微機實驗系統(tǒng)〞圖標(biāo);2.選擇通信串口和速率;3.檢查有無錯誤對話框,是否正確連接儀器;4.進(jìn)入dais集成開發(fā)環(huán)境;5.選擇本次實驗對應(yīng)的實驗指導(dǎo);6.調(diào)出連線指導(dǎo),按照實驗原理電路圖,在實驗箱上進(jìn)展連線;7.調(diào)出參考代碼,進(jìn)展修改,編寫本次實驗的源程序,源代碼及注釋按ppt要求,放在實驗結(jié)果局部;8.將源程序編譯、連接、裝載入儀器,假設(shè)出錯那么進(jìn)展修改,直到裝載成功;9.將LED平臺復(fù)位,然后點擊綠色按鈕運行;八、實驗結(jié)果:〔源程序代碼,必要的中文注釋,以及運行結(jié)果,包括截圖或者拍照〕〔一〕源程序代碼及中文注釋:CODESEGMENTASSUMECS:CODE,DS:CODE,ES:CODEORG3400HH8:JMPP8259PORT0EQU0FFE0H;偶地址PORT1EQU0FFE1H;奇地址PAEQU0FFD8H;A口PBEQU0FFD9H;B口PCEQU0FFDAH;C口PCTLEQU0FFDBH;控制口P8259:CLIMOVAX,OFFSETINT8259;7號中斷向量表MOVBX,003CHMOV[BX],AXMOVBX,003EHMOVAX,0000HMOV[BX],AXCALLFOR8259;設(shè)置命令字MOVSI,0000HSTARTP1:MOVDX,PCTLMOVAL,0A8H;SET10101000OUTDX,ALMOVAL,0DH;SET00001101OUTDX,ALMOVBX,0HSTICON8:CALLDISJMPCON8;------------------------------------INT8259:CLISHLBX,1;INCBX;MOVAL,20HMOVDX,PORT0OUTDX,AL;OCW2,EOI命令STIIRET;------------------------------------FOR8259:MOVAL,13H;ICW1MOVDX,PORT0OUTDX,ALMOVAL,08H;ICW2MOVDX,PORT1OUTDX,ALMOVAL,09H;ICW4,特殊全嵌套,緩沖方式,8086OUTDX,ALMOVAL,00H;OCW1不屏蔽OUTDX,ALRET;--------------------------------DIS:MOVAX,0FFFFHXORAX,0FFFFHMOVDX,PA;A口OUTDX,ALJMPDIS;--------------------------CODEENDSENDH8〔二〕運行結(jié)果及拍照1、運行結(jié)果介紹:開場運行后,發(fā)光二極管不會亮,每按一次彈片,產(chǎn)生一個單脈沖,就點亮一只發(fā)光二極管,從左向右依次點亮。2、照片:將關(guān)鍵局部合并到一圖片,便于觀察,如以下圖:九、結(jié)果分析和改良意見〔完成每次留的問答題,以及實驗過程中遇到的問題〕〔一〕上課留的問答題PC上有幾片8255,是如何與揚聲器和打印機連接的?有一片8255。與打印機連接情況如下:8255A工作在方式1,作為打印機的接口,其電路連接如下圖,采用中斷方式傳送數(shù)據(jù)。地址為0C0H、0C2H、0C4H、0C6H。與揚聲器連接情況如下:PB0輸出揚聲器發(fā)聲控制信號到8253的GATE2端,PB0=1,允許8253計數(shù)器2產(chǎn)生音調(diào)信號;PB1輸出揚聲器發(fā)聲信號。PB1=1允許8253輸出的音調(diào)信號加到揚聲器驅(qū)動電路。〔二〕實驗過程中遇到的問題一開場怎么調(diào)試是卡死狀態(tài),很絕望,后來發(fā)現(xiàn)居然是電腦前的板子連接的是其他的電腦。十一、心得體會:做實驗很有趣,寫報告很煩。在大三下學(xué)期,保研考研找實習(xí)最忙的時候,要寫這么多報告,很難受。但是萬幸王教師很漂亮,講話又好聽,我超喜歡她的。如果她直接教匯編理論課我一定好好聽~~~報告評分:指導(dǎo)教師簽字:電子科技大學(xué)實驗報告〔五〕學(xué)生:郫縣英格拉姆學(xué)號:89指導(dǎo)教師:皮皮怪實驗地點:主樓A2_412實驗時間:2017年6月7日周三一、實驗室名稱:主樓A2_411機房二、實驗工程名稱:交通燈綜合實驗三、實驗學(xué)時:3學(xué)時四、實驗原理:〔包括知識點,流程圖〕〔一〕知識點:〔教師上課提的問題寫在報告第九局部〕〔一〕實驗涉及的子程序1.顯示子程序2.控制子程序3.黃燈閃爍5次子程序〔二〕中斷效勞程序的功能調(diào)用顯示子程序并更新顯示緩沖區(qū)數(shù)據(jù)〔實現(xiàn)倒數(shù)計數(shù),時間間隔1s〕〔三〕主程序功能1.初始化8255,8253,8259,顯示緩沖區(qū)以及寫中斷向量2.往8255的端口送數(shù),驅(qū)動發(fā)光二極管模擬十字路口交通燈工作狀態(tài)3.調(diào)用控制子程序以及黃燈閃爍5次子程序4.循環(huán)操作第2、3步〔四〕編程提示8255局部1.該實驗中,8255選擇工作方式0;2.由于十字路口的交通燈在東西方向或南北方向的6只發(fā)光二極管的工作狀態(tài)完全一致,因此,12只燈可分為兩組,用PA或PB一個端口即可進(jìn)展模擬;3.用PC口一個位連接8253的GATE,作為中斷顯示數(shù)據(jù)的控制開關(guān);4.該實驗只需要正確設(shè)置方式選擇控制字存放器;5.黃燈閃爍的處理,實際上就是往對應(yīng)的黃燈位置0后再置1,循環(huán)5次;8253局部1.該實驗中,8253選擇工作方式3,產(chǎn)生周期性的方波信號;2.正確選擇CLK信號源,正確計算初始值,使得方波信號周期為1s或者接近1s;3.由于GATE信號為高電平時才會產(chǎn)生方波信號,因此用PC口某位連接GATE,通過不同的輸出進(jìn)展8253工作方式3的開關(guān)信號;8259局部1.只需要編寫單級中斷,中斷效勞程序主要完成倒計時的功能;2.正確設(shè)置命令字存放器和正確填寫中斷向量;3.中斷信號源為8253輸出的方波信號〔二〕流程圖:(教師ppt自帶流程圖)五、實驗電路:1、實驗參考電路及接線說明〔紅色連線為補充連線〕·138譯碼器的Y0對應(yīng)的地址圍為0FFE0H--0FFE3H,覆蓋了8253和8259的存放器地址,因此,8253和8259的CS端均連Y0?!?38譯碼輸入端ABC分別連A2、A3、A4,使能控制輸入端G與位于地址線A0引出孔所在位置下方的使能控制輸出端G作對應(yīng)連接?!?253和8259的單元總線接口D0--D7,與數(shù)據(jù)總線單元D0--D7任一接口相連?!?255的PA或PB口連接12只發(fā)光二極管〔只用端口的6位〕·將8255的PC口某位連接8253的某GATE·將8253的某OUT連接8259的某IR·將8253的某CLK連接393分頻器某輸出〔T0--T7中任意一個,自選〕2、電路圖拍照:六、實驗容:〔介紹自己所選的實驗容〕用8255A驅(qū)動12只發(fā)光二極管,模擬十字路口交通燈工作狀態(tài)。用8253的方式3產(chǎn)生連續(xù)的方波信號,利用該信號的上升沿觸發(fā)中斷,作為8259的中斷請求信號,在七段數(shù)碼管上顯示紅綠燈余下時間〔間隔一秒顯示刷新,倒數(shù)計數(shù),當(dāng)計數(shù)值為0時紅綠燈進(jìn)展切換,綠燈轉(zhuǎn)換為紅燈之前,黃燈閃爍5次〕七、實驗步驟:1.點擊桌面上"Intel8088微機實驗系統(tǒng)〞圖標(biāo);2.選擇通信串口和速率;3.檢查有無錯誤對話框,是否正確連接儀器;4.進(jìn)入dais集成開發(fā)環(huán)境;5.選擇本次實驗對應(yīng)的實驗指導(dǎo);6.調(diào)出連線指導(dǎo),按照實驗原理電路圖,在實驗箱上進(jìn)展連線;7.調(diào)出參考代碼,進(jìn)展修改,編寫本次實驗的源程序,源代碼及注釋按ppt要求,放在實驗結(jié)果局部;8.將源程序編譯、連接、裝載入儀器,假設(shè)出錯那么進(jìn)展修改,直到裝載成功;9.將LED平臺復(fù)位,然后點擊綠色按鈕運行;八、實驗結(jié)果:〔源程序代碼,必要的中文注釋,以及運行結(jié)果,包括截圖或者拍照〕〔一〕源程序代碼及中文注釋:CODESEGMENTASSUMECS:CODE,DS:CODE,ES:CODEORG3400HH8:JMPSTARTP0EQU0FFE0H;〔1〕8253計數(shù)器0〔2〕用于ICW1,OCW2和OCW3P1EQU0FFE1H;〔1〕8253計數(shù)器1〔2〕用于ICW2,ICW3,ICW4和OCW1P2EQU0FFE2H;8253計數(shù)器2P3EQU0FFE3H;8253寫方式字的端口PAEQU0FFD8H;8255A口PBEQU0FFD9H;8255B口PCEQU0FFDAH;8255C口PCTLEQU0FFDBH;8255控制口地址ZXKEQU0FFDCH;數(shù)碼管字形口地址ZWKEQU0FFDDH;字位口地址LEDDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HBUFDB",",",",","YELLOWEQU11111110BGREENEQU11111101BREDEQU11111011BNULLEQU11111111BPATHDW0;道路通行方向,0東西方向,1南北方向TIMEDB0;通行剩余時間START:CLIMOVAX,OFFSETINT8259;設(shè)置中斷MOVBX,003CHMOV[BX],AX;放入效勞程序偏移量MOVBX,003EHMOVAX,0000H;放入系統(tǒng)中斷向量區(qū)段基地址0000MOV[BX],AXCALLWP;顯示9CALLINIT8253;初始化8253CALLINIT8255;初始化8255CALLINIT8259;初始化8259STICON8:CALLDISJMPCON8;-------8259中斷效勞子程序-------INT8259:CLI;關(guān)中斷MOVCL,TIME;顯示10DECCLMOVBUF,CLJNZL1MOVDX,PCMOVAL,00HOUTDX,AL;PC停頓計時MOVDX,PAADDDX,PATH

溫馨提示

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

最新文檔

評論

0/150

提交評論