電子科大計(jì)算機(jī)學(xué)院 匯編語(yǔ)言程序設(shè)計(jì) 實(shí)驗(yàn)報(bào)告 分版_第1頁(yè)
電子科大計(jì)算機(jī)學(xué)院 匯編語(yǔ)言程序設(shè)計(jì) 實(shí)驗(yàn)報(bào)告 分版_第2頁(yè)
電子科大計(jì)算機(jī)學(xué)院 匯編語(yǔ)言程序設(shè)計(jì) 實(shí)驗(yàn)報(bào)告 分版_第3頁(yè)
電子科大計(jì)算機(jī)學(xué)院 匯編語(yǔ)言程序設(shè)計(jì) 實(shí)驗(yàn)報(bào)告 分版_第4頁(yè)
電子科大計(jì)算機(jī)學(xué)院 匯編語(yǔ)言程序設(shè)計(jì) 實(shí)驗(yàn)報(bào)告 分版_第5頁(yè)
已閱讀5頁(yè),還剩185頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 電子科大計(jì)算機(jī)學(xué)院-匯編語(yǔ)言程序設(shè)計(jì)-實(shí)驗(yàn)報(bào)告-分精品版 作者: 日期: 2 電子科技大學(xué) 計(jì)算機(jī)科學(xué)與工程 學(xué)院 告報(bào) 驗(yàn) 實(shí)標(biāo) 準(zhǔn) 匯編語(yǔ)言與微機(jī)接口 (實(shí)驗(yàn))課程名稱 技術(shù)綜合實(shí)驗(yàn) 電子科技大學(xué)教務(wù)處制表 3 電 子 科 技 大 學(xué) 實(shí) 驗(yàn) 報(bào) 告 (一) 學(xué)生姓名:郫縣英格拉姆 學(xué) 號(hào):2014123456789 指導(dǎo)教師:皮皮怪 實(shí)驗(yàn)地點(diǎn):主樓A2_412 實(shí)驗(yàn)時(shí)間:2017年4月25日星期二 一、實(shí)驗(yàn)室名稱: 主樓A2_412機(jī)房 二、實(shí)驗(yàn)項(xiàng)目名稱:匯編語(yǔ)言編程訓(xùn)練 三、實(shí)驗(yàn)學(xué)時(shí):3學(xué)時(shí) 四、實(shí)驗(yàn)原理:(包括知識(shí)點(diǎn),電路圖,流程圖) 知識(shí)點(diǎn) (一)課后自學(xué)使用DOSBox在win

2、7 x64位下搭建匯編環(huán)境 1. 軟件安裝 a.安裝3DOSBox b.準(zhǔn)備debug.exe,masm.exe,link.exe,edit.exe文件。 2. 使用 a. DOSBox安裝完成后,打開,可發(fā)下它的提示符是:“Z:”,這是DOSBox里的虛擬盤。我們需要更改到我們自己的盤符,如果直接更改的話,會(huì)提示你錯(cuò)誤。首先需要mount到自己的目錄。 b.比如我們準(zhǔn)備將D:DEBUG作為我們自己的匯編測(cè)試目錄,則執(zhí)行“mount C D:DEBUG”命令,這樣C盤符也就虛擬成了自己本地電腦的D:DEBUG目錄。我們?cè)贒OSBox中切換到C盤符時(shí),也就實(shí)際上切換到了D:DEBUG目錄。 c.

3、 將debug.exe,masm.exe,link.exe,放置于D:DEBUG目錄下,我們就能在DOSBox下直接使用它們了。 3. 配置 上面我們?yōu)槭褂肈OSBox,要mount到我們本地目錄,但是我們每一次打開DOSBox都要進(jìn)行這兩步,有點(diǎn)麻煩,可以通過(guò)下面的操作來(lái)保存配置。 4 在文本,-所有程序-DOSBox-0.74-Options-DOSBox 0.74 Options開始a. :的最后位置找到“autoexec”autoexec # Lines in this section will be run at startup. # You can put your MOUNT l

4、ines here. 目錄,第二mount然后將下面的b.2條命令寫在此處:第一條命令的作用是 盤符:mount之后切換到D條命令的作用是mount C D:DEBUG C: 知識(shí)點(diǎn)(二)課堂講述相關(guān)知識(shí)介紹 1.生成可執(zhí)行程序的過(guò)程 建立匯編源程序(*.asm) 匯編源程序文件,生成目標(biāo)文件(*.obj)、 連接目標(biāo)文件,生成可執(zhí)行文件(*.exe) 運(yùn)行調(diào)試程序 2.匯編 假設(shè)masm.exe在D盤根目錄下,編輯了一個(gè)名為demo.asm的源文件,則通過(guò)命令 D:masm demo.asm;擴(kuò)展名可以忽略,默認(rèn)為asm類型 得到匯編結(jié)果,如下圖所示: 擴(kuò)展名為*.lst的文件稱為列表文件,

5、該文件對(duì)于后續(xù)的調(diào)試十分有用。 關(guān)于列表文件( *.lst) 列表文件同時(shí)列出源程序和機(jī)器語(yǔ)言程序清單,并給出段表、段的大小及屬性,以及用戶定義的符號(hào)表、符號(hào)類型及屬性,對(duì)于調(diào)試程序十分有用。 3.連接 在生成了目標(biāo)文件demo.obj以后,通過(guò)輸入命令 5 D:link demo.obj;LINK.EXE是連接程序,同樣的,擴(kuò)展名可以忽略,默認(rèn)為obj類型 得到連接結(jié)果,如下圖所示: 4.調(diào)試 a.關(guān)于DEBUG.EXE b.DEBUG.EXE的用法 的提示符下,如下鍵入: 在DOS 的注意事項(xiàng)c.DEBUG.EXE 指令本實(shí)驗(yàn)課需要的DEBUGd.、退出、顯示內(nèi)存單元內(nèi)容命令D、追蹤命令T

6、、繼續(xù)命令P運(yùn)行命令 GQ 命令R 、檢查和修改寄存器內(nèi)容的命令修改內(nèi)存單元內(nèi)容命令E 流程圖 五、實(shí)驗(yàn)電路(本次實(shí)驗(yàn)無(wú)電路圖) 六、實(shí)驗(yàn)內(nèi)容:(介紹自己所選的實(shí)驗(yàn)內(nèi)容) 6 實(shí)驗(yàn)內(nèi)容一: 學(xué)習(xí)“第4章 順序、分支、循環(huán)程序例子.ppt”,按照要求完成下列題目并給出實(shí)驗(yàn)結(jié)果(至少選擇兩個(gè)):我選擇1、2 1、利用學(xué)號(hào)查學(xué)生的數(shù)學(xué)成績(jī)表 在數(shù)據(jù)段中建立一個(gè)成績(jī)表TABLE,表中的成績(jī)按照學(xué)生學(xué)號(hào)從小到大的順序存放。要查的學(xué)號(hào)存放在變量NUM中,查表的結(jié)果放在變量MATH中。(用XLAT指令進(jìn)行查表) 2、無(wú)符號(hào)數(shù)排序 數(shù)據(jù)段的ARY數(shù)組中存放有10個(gè)無(wú)符號(hào)數(shù),試找出其中最大者送入MAX單元。(用

7、LOOP指令做循環(huán)) 實(shí)驗(yàn)內(nèi)容二: 學(xué)習(xí)“第4 子程序設(shè)計(jì)例子(1).ppt”,用“堆棧傳遞參數(shù)”的方式編程并運(yùn)行給出結(jié)果. 將兩個(gè)給定的二進(jìn)制數(shù)(8位和16位)轉(zhuǎn)換為ASCII碼字符串。用堆棧傳遞參數(shù),要求:分步驟給出堆棧狀態(tài)和運(yùn)行結(jié)果。 七、實(shí)驗(yàn)步驟:(編輯調(diào)試的過(guò)程) 實(shí)驗(yàn)一: 題目1.利用學(xué)號(hào)查學(xué)生的數(shù)學(xué)成績(jī)表 1、根據(jù)題目要求,建立匯編源程序,用Windows系統(tǒng)自帶的記事本進(jìn)行編輯,另存為projec1.asm,并保存至masm.exe所在目錄中。 2、匯編源程序文件,生成目標(biāo)文件project1.obj; 3、通過(guò)link命令連接目標(biāo)文件,生成可執(zhí)行文件project1.exe;

8、 7 命命令、DLST文件,通過(guò)G4、運(yùn)行調(diào)試程序,鍵入debug project1.asm,參考 (分析過(guò)程見報(bào)告第九部分)。令進(jìn)行調(diào)試,分析結(jié)果。 無(wú)符號(hào)數(shù)排序題目2.系統(tǒng)自帶的記事本進(jìn)行編輯,Windows、 根據(jù)題目要求,建立匯編源程序,用1 所在目錄中。projec2.asm,并保存至masm.exe另存為project2.obj 匯編源程序文件,生成目標(biāo)文件2、 project2.exe 命令連接目標(biāo)文件,生成可執(zhí)行文件 通過(guò)link3、命令進(jìn)行調(diào)試,分析結(jié)果,D文件,通過(guò)G命令、4、 運(yùn)行調(diào)試程序,參考LST 。(分析過(guò)程見報(bào)告第九部分) 實(shí)驗(yàn)二:)位位和16題目:用“堆棧傳遞參

9、數(shù)” 的方式編程,將兩個(gè)給定的二進(jìn)制數(shù)(8 碼字符串。轉(zhuǎn)換為ASCII系統(tǒng)自帶的記事本進(jìn)行編輯,Windows建立匯編源程序,用1.根據(jù)題目要求,所在目錄中。masm.exeprojec4.asm,并保存至另存為 project4.obj 2.匯編源程序文件,生成目標(biāo)文件project4.exe link命令連接目標(biāo)文件,生成可執(zhí)行文件3.通過(guò)命令進(jìn)行調(diào)試,分析結(jié)果(分析過(guò)程見命令、D4.運(yùn)行調(diào)試程序,通過(guò)G 報(bào)告第九部分)。(源程序代碼,必要的中文注釋,以及運(yùn)行結(jié)果,包八、實(shí)驗(yàn)結(jié)果: 括截圖或者拍照) 第一題實(shí)驗(yàn)一 源代碼及其注釋如下:TITLE TABLE LOOKUP DATA SEGM

10、ENT ;數(shù)據(jù)段 TABLE DB 01, 02, 03, 04, 05, 06, 07, 82, 09, 10 DB 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ;為了便于調(diào)試,把82之外的數(shù)據(jù)進(jìn)行特殊處理,使其數(shù)值等于所在的位置 NUM DB 8 ;學(xué)號(hào)為8 MATH DB ? DATA ENDS 8 堆棧段 STACK ;STACK1 SEGMENT PARA )(0 20H DUP DW ENDSSTACK1 COSEG SEGMENTSTACK1 SS:DS:DATA, ASSUME CS:COSEG,DATA AX, MOV START: DS ;

11、裝入, MOV DSAX 指向表首地質(zhì)OFFSET TABLE ;BX MOV BX, 清零 ;AHXOR AH,AH 值賦給ALNUM AL,;NUM MOV 1開始 ;因?yàn)閷?shí)際學(xué)號(hào)從AL DEC 查表XLAT ; 存結(jié)果AL;, MOV MATH ,4CHAH MOV 21H INT ENDSCOSEG START END 運(yùn)行結(jié)果介紹及截圖、分析: 命令進(jìn)行調(diào)試,分析結(jié)果。命令、運(yùn)行調(diào)試程序,通過(guò)GD PROJECT1.LST文件,可以分析出調(diào)試的方法,分析過(guò)程見圖標(biāo)記:查看 9 d0015 l1進(jìn)行調(diào)試,結(jié)果見下圖: 根據(jù)上述分析輸入指令g 0013、 ,而在程序源代碼中對(duì)成績(jī),對(duì)應(yīng)十

12、進(jìn)制82結(jié)果分析:MATH中成績(jī)?yōu)?2h 82:的定義情況如下,其中的學(xué)號(hào)為8對(duì)應(yīng)的成績(jī)確實(shí)為 符合要求,實(shí)驗(yàn)成功。 實(shí)驗(yàn)一:第二題 源代碼及其注釋如下:DATA SEGMENT ARY DB 01,16,02,03,04,05,06,07,08,09 MAX DB ? DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 BEGIN: MOV AX,DATA MOV DS,AX ;裝入DS MOV SI,OFFSET ARY ;SI

13、指向ARY第一個(gè)元素 MOV CX,9 ;CX做計(jì)數(shù)器 MOV AL,SI ;取第一個(gè)元素到AL LOP: INC SI ;SI指向后一個(gè)元素 CMP AL,SI ;比較兩個(gè)數(shù) JAE BIGER ;前元素=后元素,則跳到BIGER進(jìn)行處理 MOV AL,SI ;取較大數(shù)到AL BIGER: LOOP LOP ;循環(huán)執(zhí)行LOOP MOV MAX, AL ;存最大數(shù) MOV AH,4CH INT 21H CODE ENDS 10 BEGIN END 運(yùn)行結(jié)果介紹及截圖、分析: 命令、GD命令進(jìn)行調(diào)試,分析結(jié)果。運(yùn)行調(diào)試程序,通過(guò) 查看PROJECT2.LST文件,可以分析出調(diào)試的方法,分析過(guò)程見

14、圖標(biāo)記: 進(jìn)行調(diào)試,結(jié)果見下圖:、 根據(jù)上述分析輸入指令g 0019d000a l1 16,確實(shí)是我編寫的十個(gè)數(shù)中的最大數(shù):10hMATH中成績(jī)?yōu)?,?duì)應(yīng)十進(jìn)制數(shù) 符合要求,實(shí)驗(yàn)成功。 ASCII實(shí)驗(yàn)二:堆棧傳遞參數(shù),轉(zhuǎn)化碼 代碼及注釋如下: SEGMENTDATA 11 35HDB BIN1 0AB48HDW BIN2 (?) DUPASCBUF DB 20H ENDSDATA STACK PARASEGMENT STACK1 便于查看內(nèi)存單元時(shí)確定堆棧位置對(duì)應(yīng)OFFFFH 65535) ;DW 20H DUP( ENDSSTACK1 SEGMENTCOSEG STACK1 :,SS,DS:D

15、ATAASSUME CS:COSEG DATA AX,: MOV BEGIN ,AX MOV DS 清零AX,AX ; XOR AX 第一個(gè)數(shù)據(jù)送AH ,BIN1 ;AH MOV 待轉(zhuǎn)換數(shù)據(jù)壓棧 AX ; PUSH ,8MOV AX 待轉(zhuǎn)換位數(shù)壓棧 AX ; PUSH ASCBUF ,LEA DI 存放ASCII碼首址壓棧 PUSH DI ; BINASC ;調(diào)用轉(zhuǎn)換子程序 CALL AXBIN2 ;第二個(gè)數(shù)據(jù)送 MOV AX, 待轉(zhuǎn)換數(shù)據(jù)壓棧 ; PUSH AX 10HAX, MOV 待轉(zhuǎn)換位數(shù)壓棧 ; PUSH AX 8DI, ADD ;DI+8壓棧PUSH DI 調(diào)用轉(zhuǎn)換子程序 CALL

16、 BINASC ; ,4CH MOV AH 21H INT BINASC PROC AX PUSH CX PUSH DX PUSH DI PUSH SPBP, MOV ;從堆棧取入口參數(shù)10BP+ MOV DI, 12,BP+ MOVCX BP+14 MOV DX, ASCII的算法1 ;LOP為將所給轉(zhuǎn)化為, LOP:ROL DX DL AL, MOV ,1AND AL 30H, ADDAL 12 ALDI , MOV DI INC LOP LOOP DI POP DXPOP CXPOP AXPOP 6個(gè)字節(jié)6 ;返回并從堆棧中彈出 RET BINASC ENDP COSEG ENDS BE

17、GIN END 分析:查看內(nèi)存單元狀態(tài),檢測(cè)堆棧段等的設(shè)d 00 首先單步運(yùn)行幾條指令,通過(guò) 置是否成功: 個(gè)應(yīng)該有用32的部分是設(shè)置的空間看起來(lái)有問(wèn)題:上面顯示00ASCBUF個(gè),54個(gè)字節(jié),截圖顯示是64個(gè);字節(jié),截圖顯示是45下面的STACK1應(yīng)該有但后面全部執(zhí)行完畢后結(jié)果是正確的。在網(wǎng)絡(luò)上查詢過(guò)后得知應(yīng)該是軟件的原 因。 0035H壓棧,查看內(nèi)存單元,截圖如下:繼續(xù)執(zhí)行至將第一個(gè)待轉(zhuǎn)換數(shù)據(jù) 13 同樣的,執(zhí)行至待轉(zhuǎn)換位數(shù)、存放ASCII碼首址成功入棧,與上圖相似,省去截圖,直至調(diào)用轉(zhuǎn)化子程序,執(zhí)行完一系列入棧操作和取入口參數(shù)、數(shù)據(jù)位數(shù)、待轉(zhuǎn)換數(shù)據(jù)操作: 進(jìn)入標(biāo)號(hào)為L(zhǎng)OP的程序段,循環(huán)執(zhí)

18、行求ASCII碼的算法,將數(shù)據(jù)一位一位地轉(zhuǎn)化為ASCII碼,循環(huán)過(guò)程中可以看到CX依次減1,減小至0時(shí)不再執(zhí)行LOP循環(huán): 繼續(xù)執(zhí)行至第一個(gè)數(shù)據(jù)轉(zhuǎn)化結(jié)束,查看內(nèi)存單元情況,與預(yù)期結(jié)果進(jìn)行比較, 第一個(gè)待轉(zhuǎn)換數(shù)據(jù)35H=0011 0101B,其對(duì)應(yīng)ASCII碼確實(shí)與內(nèi)存單元中顯示相同, 詳見圖片: 14 轉(zhuǎn)化結(jié)束后同樣與預(yù)期結(jié)果第二個(gè)待轉(zhuǎn)換數(shù)據(jù)分析過(guò)程與第一個(gè)數(shù)據(jù)相同, 進(jìn)行比較:碼確實(shí)與內(nèi)其對(duì)應(yīng)ASCII第二個(gè)待轉(zhuǎn)換數(shù)據(jù)AB48H=1010 1011 0100 1000B, ,詳見圖片:存單元中顯示相同 以及實(shí)驗(yàn)過(guò)程中遇(完成每次留的問(wèn)答題,九、結(jié)果分析和改進(jìn)意見 到的問(wèn)題)更易可讀性不如高級(jí)

19、語(yǔ)言,匯編語(yǔ)言編程作為低級(jí)語(yǔ)言,與高級(jí)語(yǔ)言相比,出錯(cuò),調(diào)試更麻煩,但是邏輯性很強(qiáng),更接近機(jī)器,分析起來(lái)很有意思,每一步 都是很小的操作,最后能達(dá)到目的。,應(yīng)的部分是設(shè)置的ASCBUF在堆棧傳遞參數(shù)的實(shí)驗(yàn)中,內(nèi)存中顯示00個(gè)字節(jié),截圖64個(gè);下面的STACK1應(yīng)該有個(gè)字節(jié),截圖顯示是該有用3245個(gè),但后面全部執(zhí)行完畢后結(jié)果是正確的。在網(wǎng)絡(luò)上查詢過(guò)后發(fā)現(xiàn)有54顯示是后期可以研究一下產(chǎn)生這種現(xiàn)象的具體原很多相似的情況,應(yīng)該是軟件的原因。 因和解決方案。 十、心得體會(huì): 做實(shí)驗(yàn)很有趣,寫報(bào)告很煩。 15 在大三下學(xué)期,保研考研找實(shí)習(xí)最忙的時(shí)候,要寫這么多報(bào)告,很難受。 但是萬(wàn)幸王老師很漂亮,講話又好

20、聽,我超喜歡她的。 如果她直接教匯編理論課我一定好好聽 報(bào)告評(píng)分: 指導(dǎo)教師簽字: 16 電 子 科 技 大 學(xué) 實(shí) 驗(yàn) 報(bào) 告 (二) 學(xué)生姓名:郫縣英格拉姆 學(xué) 號(hào):2014123456789 指導(dǎo)教師:皮皮怪 實(shí)驗(yàn)地點(diǎn):主樓A2_412 實(shí)驗(yàn)時(shí)間:2017年5月9日星期二 一、實(shí)驗(yàn)室名稱: 主樓A2_411機(jī)房 二、實(shí)驗(yàn)項(xiàng)目名稱:8259A中斷控制器實(shí)驗(yàn) 三、實(shí)驗(yàn)學(xué)時(shí):3學(xué)時(shí) 四、實(shí)驗(yàn)原理:(包括知識(shí)點(diǎn),流程圖) (一)知識(shí)點(diǎn): (老師上課提的問(wèn)題寫在報(bào)告第九部分) 1.8259A的工作過(guò)程 (1)中斷源在中斷請(qǐng)求輸入端IR0-IR7上產(chǎn)生中斷請(qǐng)求 涉及問(wèn)題:中斷請(qǐng)求的觸發(fā)方式有哪些?

21、電平觸發(fā)方式:用IR引腳上的有效高電平信號(hào)觸發(fā)中斷。常被用于需要重復(fù)執(zhí)行當(dāng)前中斷服務(wù)程序的情況,直到IR信號(hào)變?yōu)闊o(wú)效。 邊沿觸發(fā)方式:采用IR輸入信號(hào)的上升沿觸發(fā)中斷,常被用于不希望產(chǎn)生重復(fù)響應(yīng)及中斷請(qǐng)求信號(hào)是一個(gè)短暫脈沖的情況。 (2)中斷請(qǐng)求被鎖存在IRR中,并經(jīng)IMR屏蔽,結(jié)果送優(yōu)先權(quán)電路判優(yōu) 涉及問(wèn)題:IRR/IMR的數(shù)據(jù)是自動(dòng)寫入還是通過(guò)軟件編程設(shè)定? IRR的數(shù)據(jù)是根據(jù)中斷請(qǐng)求信號(hào)自動(dòng)寫入的(有中斷請(qǐng)求的對(duì)應(yīng)位為1,允許多個(gè)位為1,如果被響應(yīng)對(duì)應(yīng)位清零); IMR的數(shù)據(jù)是通過(guò)軟件編程設(shè)定的(通過(guò)對(duì)某位或某幾位置1屏蔽該位,使其不能進(jìn)入優(yōu)先級(jí)判別器) (3)優(yōu)先權(quán)電路檢出優(yōu)先權(quán)最高的

22、中斷請(qǐng)求位,設(shè)置ISR的對(duì)應(yīng)位(置1) 17 涉及問(wèn)題:中斷判優(yōu)的依據(jù)是什么?ISR是自動(dòng)寫入還是通過(guò)軟件編程設(shè)定? IRR的數(shù)據(jù)是根據(jù)中斷請(qǐng)求信號(hào)自動(dòng)寫入的(有中斷請(qǐng)求的對(duì)應(yīng)位為1,允許多個(gè)位為1,如果被響應(yīng)對(duì)應(yīng)位清零); IMR的數(shù)據(jù)是通過(guò)軟件編程設(shè)定的(通過(guò)對(duì)某位或某幾位置1屏蔽該位,使其不能進(jìn)入優(yōu)先級(jí)判別器) (4)8259A控制邏輯接受中斷請(qǐng)求,向CPU輸出INT信號(hào) (5)CPU接受INT信號(hào),進(jìn)入兩個(gè)INTA中斷響應(yīng)周期,第一個(gè)周期通知8259A做好響應(yīng)準(zhǔn)備,第二個(gè)周期8259A將響應(yīng)的中斷類型號(hào)輸出到DB上 涉及問(wèn)題:CPU中斷響應(yīng)過(guò)程中的“配套操作”有哪些? 8259A接到來(lái)

23、自CPU的第一個(gè)脈沖時(shí),設(shè)置ISR并把IRR中的相應(yīng)位復(fù)位。同時(shí),8259A準(zhǔn)備向數(shù)據(jù)總線發(fā)送中斷向量。 在8259A發(fā)送中斷向量的最后一個(gè)脈沖期間,如果是在自動(dòng)結(jié)束中斷方式下,在這個(gè)脈沖結(jié)束時(shí)復(fù)位ISR的相應(yīng)位。在其他方式下,ISR相應(yīng)位要由中斷服務(wù)程序結(jié)束時(shí)發(fā)出的EOI命令來(lái)復(fù)位。 (6)CPU讀取該中斷類型號(hào),轉(zhuǎn)移到相應(yīng)的中斷處理程序 涉及問(wèn)題:如何通過(guò)中斷類型號(hào)找到中斷處理程序? 2.8259A的命令字 (1)ICW1/OCW2/OCW3復(fù)用同一個(gè)地址(A0=0);剩下的命令字復(fù)用另一個(gè)地址(A0=1),在本系統(tǒng)中,復(fù)用地址分別是0FFE0H和0FFE1H,預(yù)置數(shù)類別順序?yàn)橄瘸跏蓟?/p>

24、字,再操作命令字,預(yù)置數(shù)設(shè)定順序?yàn)橄聵?biāo)順序(見“第六章輸入輸出與中斷-2-8259” P32) (2)0FFE0H用于ICW1,OCW2和OCW3,0FFE1H用于ICW2,ICW3,ICW4和OCW1。本次實(shí)驗(yàn)中,ICW3、OCW3不需要進(jìn)行設(shè)定。 (3)本實(shí)驗(yàn)只需要用一片8259A進(jìn)行中斷控制,中斷源采用單脈沖信號(hào),中斷觸發(fā)方式屬于邊沿觸發(fā),且8086/8088系統(tǒng)必須設(shè)定ICW4,因此ICW1=00010011B=13H (4)本系統(tǒng)中,設(shè)定使用中斷類型8來(lái)服務(wù)IR7邊沿觸發(fā)產(chǎn)生的中斷,所以ICW2=00001000B=08H 18 (5)對(duì)于單片8259A,不需要設(shè)定ICW3,而808

25、6/8088系統(tǒng)需要確定ICW4。因此跳過(guò)ICW3的設(shè)定直接設(shè)定ICW4。在該實(shí)驗(yàn)中,我們使用全嵌套方式(最常用的也是默認(rèn)的工作方式,只開放比當(dāng)前中斷優(yōu)先級(jí)高的中斷,且中斷優(yōu)先權(quán)的級(jí)別固定,按照IR0-IR7逐級(jí)次之。)和普通EOI方式(一般的中斷結(jié)束方式,在中斷程序返回前,輸出中斷結(jié)束命令把ISR當(dāng)前優(yōu)先級(jí)最高的對(duì)應(yīng)位清零)操作,因此ICW4=00001001B=09H (6)對(duì)于OCW,假設(shè)使用OCW1來(lái)屏蔽除IR7外其它所有中斷,這樣OCW1=01111111B=7FH;選用普通EOI,則OCW2=00100000=20H 3.有關(guān)中斷向量存儲(chǔ)地址的形成說(shuō)明 (1)ICW2是設(shè)置中斷類型

26、碼的初始化命令字。其中,D7D3是8086/8088系統(tǒng)中8259A的中斷指針地址的高5位,D2D0的值恒為0。 (2)本系統(tǒng)的中斷序號(hào)和中斷地址對(duì)應(yīng)表如下: 4.有關(guān)ICW4的設(shè)置說(shuō)明 ICW4的位定義如下: 其中,D7-D5位總是為0 19 在IBM PC/XT系統(tǒng)中,BUF位設(shè)定為1,M/S設(shè)定為0 普通中斷結(jié)束方式用于完全嵌套情況下,8259每得到一次EOI命令,將把ISR中已經(jīng)置位的各位中優(yōu)先級(jí)最高的位復(fù)位,以此類推。 因此,在本例中,ICW4=00001001B=09H 5.有關(guān)OCW2的設(shè)置說(shuō)明 OCW2用于控制中斷結(jié)束,其格式如下: 其中,R為優(yōu)先權(quán)控制位,R=1為循環(huán)優(yōu)先權(quán),

27、R=0為固定優(yōu)先權(quán) SL位決定了OCW2中L2,L1,L0是否有效,SL=1則有效,否則無(wú)效 EOI為中斷結(jié)束命令位,在非自動(dòng)中斷結(jié)束命令下,EOI=1使得中斷服務(wù)寄存器ISR中具有最高優(yōu)先權(quán)的IS復(fù)位,EOI=0則該位無(wú)效。 在本實(shí)驗(yàn)中,OCW2=0010000=20H 6. 七段數(shù)碼管顯示相關(guān)知識(shí) 數(shù)碼管字形口地址:0FFDCH,字形代碼如下表所示: 上述不同的代碼實(shí)際上就是使得每只數(shù)碼管中八只發(fā)光二極管的不同“點(diǎn)亮”組合,從而形成所謂不同的“字形”。 數(shù)碼管字位口地址:0FFDDH,字位代碼如下表所示: 上述不同的代碼實(shí)際上就是“選通”某一片數(shù)碼管工作的片選信號(hào),顯然,對(duì)應(yīng)選通信號(hào)高電平

28、有效。 字位1對(duì)應(yīng)邏輯箱最左邊那只數(shù)碼管,字位6對(duì)應(yīng)最右邊那只數(shù)碼管。 7.七段數(shù)碼管顯示電路圖(ppt) 8.Dais微機(jī)接口實(shí)驗(yàn)箱操作說(shuō)明(ppt) 9.Windows平臺(tái)操作方法(ppt) 20 10.LED平臺(tái)操作方法說(shuō)明(ppt) (二)流程圖:(用visio畫的) 五、實(shí)驗(yàn)電路: 1、實(shí)驗(yàn)參考電路及接線說(shuō)明(8259部分)(紅色連線為補(bǔ)充連線) 21 插孔也的IR6SP插孔相連,同時(shí)將插孔和8259ASP插孔和8259A的IR7 連接起來(lái),提供兩個(gè)中斷源使能控138連A4,A2B連A3,C,其中連接138譯碼輸入端A.B.CA連作對(duì)GA0引出孔所在位置下方的使能控制輸出端制輸入端G

29、與位于地址線 孔。譯碼器的端連138Y0的應(yīng)連接。8259CS芯扁平線與數(shù)據(jù)總線單元8芯排線或D0-D7的單元總線接口,用88259將 任一接口相連。D0-D7 、電路圖拍照:2 22 六、實(shí)驗(yàn)內(nèi)容:(介紹自己所選的實(shí)驗(yàn)內(nèi)容)作為中斷源,產(chǎn)生多級(jí)中斷,系統(tǒng)顯示中芯片的IRi編制程序,利用8259 。IR7作為中斷源則顯示7斷號(hào),比如: 七、實(shí)驗(yàn)步驟: 微機(jī)實(shí)驗(yàn)系統(tǒng)”圖標(biāo);點(diǎn)擊桌面上“Intel8088 1. 選擇通信串口和速率;2. 3.檢查有無(wú)錯(cuò)誤對(duì)話框,是否正確連接儀器; dais集成開發(fā)環(huán)境;4.進(jìn)入 選擇本次實(shí)驗(yàn)對(duì)應(yīng)的實(shí)驗(yàn)指導(dǎo);5. 調(diào)出連線指導(dǎo),按照實(shí)驗(yàn)原理電路圖,在實(shí)驗(yàn)箱上進(jìn)行連線

30、;6.ppt7.調(diào)出參考代碼,進(jìn)行修改,編寫本次實(shí)驗(yàn)的源程序,源代碼及注釋按 要求,放在實(shí)驗(yàn)結(jié)果部分; 將源程序編譯、連接、裝載入儀器,若出錯(cuò)則進(jìn)行修改,直到裝載成功;8. 平臺(tái)復(fù)位,然后點(diǎn)擊綠色按鈕運(yùn)行;LED9.將 23 (源程序代碼,必要的中文注釋,以及運(yùn)行結(jié)果,包八、實(shí)驗(yàn)結(jié)果: 括截圖或者拍照) (一)源程序代碼及中文注釋:CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP P8259 ZXK EQU 0FFDCH ;數(shù)字管字形碼端口地址 ZWK EQU 0FFDDH ;數(shù)字管字位碼端口地址 LED DB 0C0H

31、,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;LED DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H BUF DB ?,?,?,?,?,? ;預(yù)留6個(gè)字節(jié)空間存放的是需要顯示的字符,如123456 PORT0 EQU 0FFE0H ;偶地址 PORT1 EQU 0FFE1H ;奇地址 P8259: CLI ;關(guān)中斷 CALL WP ;初始化顯示“P.” MOV AX,OFFSET INT8359 MOV BX,0038H ;6號(hào)中斷向量表 MOV BX,AX MOV BX,003AH MOV AX,0000H

32、 MOV BX,AX MOV AX,OFFSET INT8259 MOV BX,003CH ;7號(hào)中斷向量表 MOV BX,AX MOV BX,003EH MOV AX,0000H MOV BX,AX CALL FOR8259 ;命令字的設(shè)置 MOV SI,0000H STI ;開中斷 CALL WP CON8: CALL DIS JMP CON8 ;- INT8259:CLI ;初始化8259 IR7 MOV BX,OFFSET BUF MOV BYTE PTR BX+SI,07H ;INC SI CMP SI,0007H JZ X59 XX59: MOV AL,20H ;OCW2 24 P

33、ORT0 DX, MOV ,AL OUT DX ,0050H MOV CX CXXXX59: PUSH DIS CALL CX POP XXX59 LOOP CX POP ,3438HMOV CX CX PUSH STI IRET 0000HSIMOV ,X59: WP CALL XX59 JMP ;- 8259 IR6 ;初始化INT8359:CLI BUF OFFSET BX, MOV 06HSI,PTR BX+ MOV BYTE ;INC SI 0007HSI, CMP Y59 JZ EOI命令,全嵌套方式一般,20H ;OCW2=0010000=20H YY59: MOV ALPORT

34、0 DX, MOV ,AL OUT DX ,0050HMOV CX CX: PUSHYYY59 DIS CALL CX POP YYY59 LOOP CX POP 3438HCX,MOV CXPUSH STI IRET ,0000H MOV SIY59: WP CALL YY59 JMP ;= 邊沿觸發(fā)單脈沖 13H AL, ;ICW1=00010011B=13H MOVFOR8259:PORT0 DX,MOV ALDXOUT , 8中斷類型,AL08H ;ICW2=00001000B=08H MOVPORT1 ,DXMOV 25 ALDX, OUT 方式全嵌套方式,普通EOIAL,09H ;

35、ICW4=400001001B=09H MOV ALDX, OUT 不屏蔽中斷 ;OCW1=00000000B=00H AL,00H MOV ALDX, OUT RET ;- 初始化顯示“P.”,11H ;MOVWP: BUF ,10HMOV BUF+1 ,10HMOV BUF+2 ,10HMOV BUF+3 ,10H BUF+4 MOV ,10H BUF+5 MOV RET ;- ;字位碼指向左側(cè)第一個(gè)數(shù)碼管,20H DIS: MOV CL BUF OFFSET BX, MOV 取第一個(gè)需要顯示的字符 ; MOV AL,BXDIS1: BX PUSH 指向字形碼表的表頭地址 LED ;BXO

36、FFSET MOV BX, AL;查表得到需要顯示的字符對(duì)應(yīng)的字形碼,并裝入 XLAT BXPOP ZXK , DX MOV 將要顯示的字形碼輸出到字形碼端口 ; DX,AL OUT ,CL MOV ALZWK DX, MOV ;將要顯示的字位碼輸出到字位碼端口,AL OUTDX CX PUSH 0100HCXMOV , 延時(shí)程序$ ;DELAY: LOOP CX POP 檢測(cè)是否顯示到最右側(cè)的數(shù)碼管 ;CMP CL,01H ; EXIT 如果是,退出 JZ BX INC ,1SHR CL 否則繼續(xù)顯示下一個(gè)JMP DIS1 ; 00HAL,MOVEXIT: ZWK DX, MOV 一個(gè)都不顯

37、示AL ;, OUT DX ;返回主程序 RET ;- ENDSCODE H8 END 26 (二)運(yùn)行結(jié)果及分析 1、運(yùn)行結(jié)果介紹: 不按彈片時(shí),初始化顯示“P.”; 短按彈片時(shí),顯示“6”; 長(zhǎng)按彈片時(shí),先顯示“6”,再顯示“7”。 2、照片:將關(guān)鍵部分合并到一張圖片,便于觀察,如下圖: 3、結(jié)果分析: 不按彈片時(shí),初始化顯示“P.”; 短按彈片時(shí),有IR6和IR7兩個(gè)中斷源,由于OCW2設(shè)置為固定優(yōu)先級(jí),IR0優(yōu)先級(jí)最高,依次遞減,IR6優(yōu)先被處理,因此顯示“6”,由于短按,處理完IR6之后IR7中斷信號(hào)源已經(jīng)消失; 長(zhǎng)按彈片時(shí),有IR6和IR7兩個(gè)中斷源, IR6優(yōu)先被處理,因此顯示“

38、6”,后處理IR7,因此之后顯示變?yōu)椤?”。 九、結(jié)果分析和改進(jìn)意見(完成每次留的問(wèn)答題,以及實(shí)驗(yàn)過(guò)程中遇到的問(wèn)題) (一)上課留的問(wèn)答題 1、pc機(jī)有幾塊8259,端口地址是多少 (1)早期的微型計(jì)算機(jī)使用單片的8259A,如早期IBM PC/XT只有一個(gè)8259A,端口地址分別是20H、21H。 27 (2)后期,設(shè)計(jì)師們意識(shí)到這是不夠的,到了IBM PC/AT,有2個(gè)8259A,一個(gè)稱作Master,另一個(gè)稱作Slave,Slave以基連的方式連接在Master上,如今大多數(shù)PC都有兩個(gè)8259A。 課件相關(guān)知識(shí): 2、ret和iret的區(qū)別 (1)ret是過(guò)程調(diào)用的返回指令,一般位于子

39、程序的最后,如果是段內(nèi)返回,則從堆棧中彈出一個(gè)字送IP,如果是段間返回,則從堆棧中彈出兩個(gè)字送IP和CS,不需要恢復(fù)標(biāo)志寄存器; (2)iret是中斷返回指令,是中斷服務(wù)程序的最后一條指令,負(fù)責(zé)恢復(fù)斷點(diǎn)并恢復(fù)標(biāo)志寄存器的內(nèi)容。 3、中斷和過(guò)程調(diào)用的區(qū)別 (1)中斷是隨機(jī)事件或異常事件引起,調(diào)用則是事先已在程序中安排好 ; (2)響應(yīng)中斷請(qǐng)求不僅要保護(hù)斷點(diǎn)地址,還要保護(hù)FLAGS標(biāo)志寄存器的內(nèi)容; (3)調(diào)用指令在指令中直接給出子程序入口地址,而中斷指令只給出中斷向量碼,入口地址則在向量碼指向的內(nèi)存單元中。 4、短按和長(zhǎng)按的區(qū)別 (1)短按,則中斷時(shí)間短,處理完IR6中斷后,IR7的中斷信號(hào)源已

40、經(jīng)不存在了; (2)長(zhǎng)按,則中斷時(shí)間長(zhǎng),處理完IR6中斷后,IR7源仍然存在,繼續(xù)處理IR7中斷。 (二)實(shí)驗(yàn)過(guò)程中遇到的問(wèn)題 一定要正確運(yùn)用開關(guān)中斷的指令,為了避免其他中斷服務(wù)影響當(dāng)前中斷服務(wù)程序的運(yùn)行,可以在當(dāng)前程序開始運(yùn)行的時(shí)候加上CLI指令。在當(dāng)前程序運(yùn)行結(jié)束的時(shí)候,為了不影響其他中斷服務(wù)程序的正常請(qǐng)求和響應(yīng),應(yīng)該加上STI指令開放中斷。 28 做實(shí)驗(yàn)很有趣,寫報(bào)告很煩。 在大三下學(xué)期,保研考研找實(shí)習(xí)最忙的時(shí)候,要寫這么多報(bào)告,很難受。 但是萬(wàn)幸王老師很漂亮,講話又好聽,我超喜歡她的。 如果她直接教匯編理論課我一定好好聽 可以把中斷源增加至3個(gè)、4個(gè)等,讓數(shù)碼管的顯示變化更復(fù)雜有趣。

41、十一、心得體會(huì): 做實(shí)驗(yàn)很有趣,寫報(bào)告很煩。 在大三下學(xué)期,保研考研找實(shí)習(xí)最忙的時(shí)候,要寫這么多報(bào)告,很難受。 但是萬(wàn)幸王老師很漂亮,講話又好聽,我超喜歡她的。 如果她直接教匯編理論課我一定好好聽 報(bào)告評(píng)分: 指導(dǎo)教師簽字: 29 電 子 科 技 大 學(xué) 實(shí) 驗(yàn) 報(bào) 告 (三) 學(xué)生姓名:郫縣英格拉姆 學(xué) 號(hào):2014123456789 指導(dǎo)教師:皮皮怪 實(shí)驗(yàn)地點(diǎn):主樓A2_412 實(shí)驗(yàn)時(shí)間:2017年5月16日星期二 一、實(shí)驗(yàn)室名稱: 主樓A2_411機(jī)房 二、實(shí)驗(yàn)項(xiàng)目名稱:8253時(shí)鐘中斷計(jì)時(shí)實(shí)驗(yàn) 三、實(shí)驗(yàn)學(xué)時(shí):3學(xué)時(shí) 四、實(shí)驗(yàn)原理:(包括知識(shí)點(diǎn),流程圖) (一)知識(shí)點(diǎn): (老師上課提的問(wèn)題寫在報(bào)告第九部分) (一)有關(guān)8253芯片 8253基本工作方式就是對(duì)CLK時(shí)鐘脈沖進(jìn)行計(jì)數(shù)。CLK脈沖可以是均勻的、連續(xù)的、周期精確的,也可以是不均勻的、斷續(xù)的、周期不定的。 無(wú)論8253工作于何種方式,當(dāng)計(jì)數(shù)器減1到0時(shí),在OUT引腳上必定有電平或脈沖輸出,OUT引腳輸出的信號(hào)可以是方波、電平或脈沖等,由工作方式?jīng)Q定。 8253每個(gè)計(jì)數(shù)器都可以選擇6種工作方式之一進(jìn)行工作。在控制字中進(jìn)行設(shè)定

溫馨提示

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

評(píng)論

0/150

提交評(píng)論