微型計(jì)算機(jī)原理實(shí)驗(yàn)報(bào)告_第1頁(yè)
微型計(jì)算機(jī)原理實(shí)驗(yàn)報(bào)告_第2頁(yè)
微型計(jì)算機(jī)原理實(shí)驗(yàn)報(bào)告_第3頁(yè)
微型計(jì)算機(jī)原理實(shí)驗(yàn)報(bào)告_第4頁(yè)
微型計(jì)算機(jī)原理實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩44頁(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)介

微型計(jì)算機(jī)原理實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)顯示程序?qū)嶒?yàn)

一般來(lái)說(shuō),程序需要顯示輸出提示運(yùn)行的狀況和結(jié)果,有的還需要將數(shù)據(jù)區(qū)中的內(nèi)容顯示

在屏幕上。木實(shí)驗(yàn)要求將指定數(shù)據(jù)區(qū)的數(shù)據(jù)以十六進(jìn)制數(shù)形式顯示在屏幕上,并通過(guò)DOS

功能調(diào)用完成一些提示信息的顯示。實(shí)驗(yàn)中可使用DOS功能調(diào)用(INT21H)。

流程圖

2.試驗(yàn)程序

DATASEGMENT

MESDB'Showaashex:',OAH,ODH.$

SDDB'a,

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES

MOVAH,09H

INT2IH

MOVDI,OFFSETSD

MOVAL,DS:[DI]

ANDAL,OFOH

SHRAL,4

CMPAL,OAH

JBC2

ADDAL,07H

C2:ADDAL,30H

MOVDL,AL

MOVAH.02H

INT2IH

MOVAL,DS:[DI]

ANDAL,OFH

CMPAL,OAH

JBC3

ADDAL,07H

C3:ADDAL,30H

MOVDL,AL

MOVAH.02H

INT2IH

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

實(shí)驗(yàn)二數(shù)據(jù)傳送實(shí)驗(yàn)

三、實(shí)驗(yàn)內(nèi)容

將數(shù)據(jù)段中的一個(gè)字符串傳送到附加段中,并輸出附加段中的目標(biāo)字符串到屏幕上

1.試驗(yàn)程序

DATASEGMENT

MSRDB”HELLO,WORLD!$”

LENEQU$-MSR

DDATAENDS

EXDASEGMENT

MSDDBLENDUPC?)

EXDAENDS

MYSTACKSEGMENTSTACK

DW20DUP(?)

MYSTACKENDS

CODESEGMENT

ASSUMECS:CODE,DS:DDATA,ES:EXDA

START:MOVAX,DDATA

MOVDS,AX

MOVAX,EXDA

MOVES,AX

MOVSI.OFFSETMSR

MOVDI,OFFSETMSD

MOVCX,LEN

NEXT:MOVAL,[SI]

MOVES:[DI],AL

INCSI

INCDI

DECex

JNZNEXT

PUSHES

POPDS

MOVDX,OFFSETMSD

MOVAH.9

INT2IH

MOVAX.4C00H

INT21H

CODEENDS

ENDSTART

MOVBX,0

MOVCX,LEN

NEXT:MOVAL,MSRIBX]

MOVES:MSD[BX],AL

INCBX

LOOPNEXT

2.實(shí)驗(yàn)結(jié)果

前"[非使用中>ord3.Exe]

HELLO,WORLD?

實(shí)驗(yàn)三數(shù)碼轉(zhuǎn)換程序?qū)嶒?yàn)

1.將ASCII碼表示的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)

1.流程圖

1

2.試驗(yàn)程序

DATASSEGMENT

NUMBERDBDOO12'

DATASENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATAS

START:MOVAX,DATAS

MOVDS,AX

MOVCX,4

MOVSI.OFFSETNUMBER

MOVALJSI]

SUBAL.30H

MOVAH.OOH

MOVBLJO

LI:MULBL

ADDAL,[SI+1]

SUBAL.30H

INCSI

DECCX

JNZLI

MOVCX,8

MOVBL,AL

NEXT:SHLBLJ

JCONE

MOVDL,3()H

JMPEXIT

ONE:MOVDL,31H

EXIT:MOVAH,02H

INT21H

DECCX

JNZNEXT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.實(shí)驗(yàn)結(jié)果

2.將十進(jìn)制數(shù)的ASCII碼轉(zhuǎn)換為BCD碼

本實(shí)驗(yàn)要求將鍵盤(pán)輸入的一個(gè)五位十進(jìn)制數(shù)54321的ASCH碼存放入數(shù)據(jù)區(qū)中,轉(zhuǎn)換為

BCD碼后,并將轉(zhuǎn)換結(jié)果按位分別顯示于屏幕上。假設(shè)輸入的不是十進(jìn)制數(shù)的ASCII碼,

那么輸出"FF"。提示:一字節(jié)ASCII碼取其低四位即變?yōu)锽CD碼

1.實(shí)驗(yàn)流程圖

2.實(shí)驗(yàn)程序

DATASSEGMENT

BUFDB6

DB9

DB6DUP(?)

BUFEDB'FFS,

DATASENDS

CODESEGMENT

ASSUMEDS:DATAS,CS:CODE

START:MOVAX,DATAS

MOVDS,AX

MOVDXQFFSETBUF

MOVAHJO

INT2IH

MOVCH,5

MOVSI.DX

L2:MOVBLJSI+2]

INCSI

CMPBL39H

JALI

SUBBL.30H

ANDBL,OFH

MOVDH,4

MOVCL,4

;SHLALCL

ROLBL,CL

NEXT:SHLBL,1

JCONE

MOVDL,30H

JMPEXIT

ONE:MOVDL,31H

EXIT:MOVAH,2

INT21H

DECDH

JNZNEXT

DECCH

JNZL2

JMPL3

LI:MOVDX,OFFSETBUFE

MOVAH.9

INT21H

L3:MOVAH.4CH

INT21H

CODEENDS

ENDSTART

3.實(shí)驗(yàn)結(jié)果

三回漢」

09C:\Windows\system32\cmd.exe

54321

[=回漢

CDC:\Windows\system32\cmd.exe一一_

O1O1O1OOQO1100100001

請(qǐng)按任意鍵繼續(xù).?.

3.將十六進(jìn)制數(shù)的ASCII碼轉(zhuǎn)換為十進(jìn)制數(shù)

十六位二進(jìn)制數(shù)的值域?yàn)?-65535,最大可轉(zhuǎn)換為五位十進(jìn)制數(shù)。五位十進(jìn)制數(shù)可表示

為:

432

ND=D,X10+D3X10+D2X10+D1X10+Do

因此,將十六位二進(jìn)制數(shù)轉(zhuǎn)換為五位ASCII碼表示的十進(jìn)制數(shù),就是求D「D1,并將它們轉(zhuǎn)化為ASCII

碼。本實(shí)驗(yàn)要求將緩沖區(qū)中存放的OOOCII的ASCII碼轉(zhuǎn)換成十進(jìn)制數(shù),并將轉(zhuǎn)結(jié)果顯示在屏幕

1.實(shí)驗(yàn)流程圖

1

2.實(shí)驗(yàn)程序

DATASEGMENT

BUFDB5

DB9

DB5DUP(?)

HEXDB4DUP(?)

DECIDB5DUP(O);$'

SIDBU6JINZHI:$'

S2DB0AH,0DH:10JINZHI:$'

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

LEADX,S1

MOVAH.9

1NT21H

LEADX,BUF

MOVAHJO

INT21H

MOVSL2

MOVDI,0

CHECK:MOVAL,ISI][BUF|

CMPAL.40H

JSNUM

CMPAL,47H

JSCAPITAL

SUBAL.57H

JMPSTORE

NUM:SUBAL,30H

JMPSTORE

CAPITAL:SUBAL,37H

JMPSTORE

STORE:MOVHEX[DI],AL

INCDI

INCSI

CMPDI,4

JNZCHECK

LEADX,S2

MOVAH,9

INT21H

MOVAX.WORDPTRHEX

SHLAL.4

ADDAH,AL

MOVCH,AH

MOVAX,WORDPTR2[HEX]

SHLAL,4

ADDAL,AH

MOVAH,CH

MOVSI.5

MOVBX,10

MOVDX,0

CMPAX,0

JNSCONV

NEGAX

PUSHAX

PUSHDX

MOVDL,2DH

MOVAH,2

INT21H

POPDX

POPAX

CONV:DECSI

DIVBX

ADDDX,30H

MOVDECIISI1.DL

XORDX,DX

CMPAX,0

JNZCONV

LEADX.DECI

MOVAH,9

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.實(shí)驗(yàn)結(jié)果

3SC:\Windows\system32\cmd.exe

16JINZHI:7FB2

1OJINZHI:32690

請(qǐng)按任意鍵繼續(xù)..

4.BCD碼轉(zhuǎn)換為二進(jìn)制碼

本實(shí)驗(yàn)要求將四個(gè)二位十進(jìn)制數(shù)的BCD碼存放在某一內(nèi)存單元中,轉(zhuǎn)換出的二進(jìn)制數(shù)碼存入其后的內(nèi)

存單元中,轉(zhuǎn)換結(jié)束,送屏幕顯示。

1.實(shí)驗(yàn)流程圖

轉(zhuǎn)換完否?

1y

送價(jià)幕顯示

2.實(shí)驗(yàn)程序

DMASEGMENT

DASCDB3

DB9

DB3DUP(?)

SIDBOAH,OAH,ODH;IOJINZHIMA:$'

S2DB0AH,0DH:BCDMA:$'

S3DB0AH,0DH:2JINZHIMA:S

STODB8DUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVDI,0

MOVSI.4

LOOPER:CALLWHOLE

DECSI

JNZLOOPER

JMPEXIT

WHOLE:LEADX,SI

MOVAH.9

INT2IH

LEADX,DASC

MOVAH,10

INT21H

LEADX.S2

MOVAH.9

INT21H

MOVAX,WORDPTR2[DASC]

SUBAX,3O3OH

SHLAL.4

ADDAL,AH

MOV[DI][STO],AL

MOVCH.2

MOVCL,4

PRE1:MOVDX,30H

ROLAL,I

JNCDISP1

ADDDX,01H

DISP1:PUSHAX

MOVAH,02

INT21H

POPAX

DECCL

JNZPRE1

PUSHAX

MOVDL,20H

MOVAH,2

INT2IH

POPAX

DECCH

MOVCL,4

JNZPRE1

LEADX.S3

MOVAH,9

INT21H

MOVAL,[DI][STO]

MOVBL,AL

ANDBL,0FH

SHRAL.4

MOVCL,1()

MULCL

ADDAL,BL

INCDI

MOV[DI][STO],AL

INCDI

MOVCX,8

PRE2:MOVDX,30H

ROLAL,I

JNCDISP2

ADDDX,()1H

DISP2:PUSHAX

MOVAH.02

INT21H

POPAX

LOOPPRE2

RET

EXIT:MOVAH,4CH

INT21H

CODEENDS

ENDSTART

33C:\Windows\system32\cmd.exe=1回漢

10JINZHIMfi:56三

BCDMA:01010110

2JINZHIHA:00111000

實(shí)驗(yàn)四運(yùn)算類程序?qū)嶒?yàn)

1.二進(jìn)制雙精度加法運(yùn)算

本實(shí)驗(yàn)要求計(jì)算x+y=z,將結(jié)果z輸出到屏幕,其中x=001565a0h,y=0021b79eh.

1.實(shí)驗(yàn)流程圖

2.實(shí)驗(yàn)程序

DATASEGMENT

XDD421C65A0H

YDD3C41B69BH

SDB'X+Y=$'

SUMDB4DUP(()(

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVAX.WORDPTRX

MOVBX,WORDPTRY

ADDAX,BX

MOVWORDPTRSUM,AX

MOVAX,WORDPTR2[X[

MOVBX.WORDPTR2[Y[

ADCAX,BX

MOVWORDPTR2[SUM],AX

LEADX,S

MOVAH.9

INT21H

MOVCX,4

MOVSI,3

CHECK:MOVAL,SUM[SI[

MOVAH.AL

SHRAL,4

CMPAL.OAH

JSDISPI

ADDAL,07H

DISPI:ADDAL,30H

MOVDL,AL

PUSHAX

MOVAH.02H

INT21H

POPAX

ANDAH,0FH

CMPAHQAH

JSDISP2

ADDAH,07H

DISP2:ADDAH,30H

MOVDL,AH

MOVAH,02H

INT21H

DECSI

LOOPCHECK

EXIT:MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.實(shí)驗(yàn)結(jié)果

03C:\Windows\system32\cmd.exe回漢

X+Y=7E5E1C3B

請(qǐng)按任意鍵繼續(xù)..?

(2)減法程序

1.實(shí)驗(yàn)流程圖

2.實(shí)驗(yàn)程序

DATASEGMENT

XDW0400H

YDWO1O2H

SDB'Z*Y=$'

ZDW2DVP(O)

DATAENDS

CODESEGMENT

ASSUMECS:COI)E,DS:DATA

START:MOVAX,DATA

MOVDS,AX

LEADX,S

MOVAH,9

INT21H

MOVAX,WORDPTRX

MOVBX,WORDPTRY

SL1RAl.,El.

AAS

SUBAH,BH

AAS

MOVZ,AX

ADDAX,3O3OH

MOVBX,AX

MOVDL,3OH

MOVAH,2

TNT2111

MOVHL,BH

MOVAH,2

1NT21H

MOVI)L,30H

MOVAH,2

INT21H

MOVDL,BL

MOVAH,2

INT21H

EXIT:MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.實(shí)驗(yàn)結(jié)果

I3BC:\Windows\system32\cmd.exe

2=X-Y=0208

請(qǐng)按任意腱繼續(xù)...

實(shí)驗(yàn)五分支程序設(shè)計(jì)實(shí)驗(yàn)

實(shí)驗(yàn)內(nèi)容:實(shí)驗(yàn)可以使用BH,BL作為暫存現(xiàn)行的最大值和最小值,且在程序的初始,

將BH和BL初始化為首字節(jié)的內(nèi)容,然后進(jìn)入循環(huán)操作。在循環(huán)操作中,依次從字節(jié)序列中

逐個(gè)取出一個(gè)字節(jié)的內(nèi)容與BH,BL進(jìn)行比擬,假設(shè)取出的字節(jié)內(nèi)容比BH的內(nèi)容大或比BL

中的內(nèi)容小,那么修改之。當(dāng)循環(huán)結(jié)束操作時(shí),將BH,BL分別送屏幕顯示。

1.實(shí)驗(yàn)流程圖

cx=字節(jié)個(gè)數(shù)

CX=€?

結(jié)束

2.實(shí)驗(yàn)程序

DATASEGMENT

BUFDB'Themaxnumber:$'

CUFDB0AH,0DH;Thcmininumberf

DUFDB0D9H,07H.8BH,0C5H,0EBH,04H,9DH,0F9H

DATAENDS

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETBUF

MOVAH,9

INT21H

MOVSI.OFFSETDUF

MOVCH,7

MOV

MOVBLJSI|

LI:INCSI

MOVALJSI]

CMPAL,BH

JBL2

MOVBH,AL

L2:CMPAL,BL

JAL3

MOVBL,AL

L3:DECCH

JNZLI

;MOVBH.0B9H

XIANSHI:MOVAL,BH;顯示BH和BL

MOVCL,4

SHRAL.CL

CMPAL,0AH

JBCl

ADDAL,07H

Cl:ADDAL,30H

MOVDUAL

MOVAH,2

INT2IH

MOVAL,BH

ANDAL,0FH

CMPAL,0AH

JBC2

ADDAL,07H

C2:ADDAL,30H

MOVDL,AL

MOVAH,2

INT21H

MOVDX.OFFSETCUF

MOVAH,9

INT21H

;MOVBL.0B9H

MOVAL,BL

MOVCL,4

SHRAL.CL

CMPAL,0AH

JBC3

ADDAL,07H

C3:ADDAL,30H

MOVDUAL

MOVAH,2

INT2IH

MOVAL,BL

ANDAL,0FH

CMPAL,0AH

JBC4

ADDAL,07H

C4:ADDAL,30H

MOVDL,AL

MOVAH.2

INT21H

MOVAH.4CH

INT21H

CODEENDS

ENDSTART

3.實(shí)驗(yàn)結(jié)果

0C:\Windows\system32\cmd.exe=|回|漢]

Themaxnumber:F9▲

Themininumber:04

請(qǐng)按任意鍵繼續(xù)...

實(shí)驗(yàn)六循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)

實(shí)驗(yàn)內(nèi)容:本實(shí)驗(yàn)要求通過(guò)求某數(shù)據(jù)區(qū)內(nèi)負(fù)數(shù)的個(gè)數(shù)來(lái)表現(xiàn)循環(huán)程序的結(jié)構(gòu)形式。要求

實(shí)驗(yàn)程序在數(shù)據(jù)區(qū)中存放一組數(shù)據(jù),為統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù),逐個(gè)判斷區(qū)內(nèi)的數(shù)據(jù),然后將所

有數(shù)據(jù)中但凡符號(hào)位為1的數(shù)據(jù)的個(gè)數(shù)累加起來(lái),即得到區(qū)內(nèi)所包含負(fù)數(shù)的個(gè)數(shù)

1.實(shí)驗(yàn)流程圖

2.實(shí)驗(yàn)程序

DATASSEGMENT

BUFDB'Thenumberofnegtive:$*

CUFDB12H,88H,82H,89H,33H,90H,01HJ0H,0BDH,01H

DATASENDS

CODESSEGMENT

ASSUMECS:CODES,DS:DATAS

START:MOVAX,DATAS

MOVDS,AX

MOVDXQFFSETBUF

MOVAH,9

INT2IH

MOVBL,0

MOVCXJO

LEASI,CUF

L2:MOVAL.[SI]

INCSI

ANDAL,80H

JZLI

INCBL

L1:DECCX

JNZL2

ADDBL,30H

MOVDL,BL

MOVAH,2

INT21H

MOVAX,4C0()H

INT21H

CODESENDS

ENDSTART

3.實(shí)驗(yàn)結(jié)果

QBC:\Windows\system32\cmd.exe*Im一回

Thenumberofnegtiu?:5

請(qǐng)按任意鍵繼續(xù)...

接口實(shí)驗(yàn)

實(shí)驗(yàn)一8259中斷控制器應(yīng)用實(shí)驗(yàn)

一、實(shí)驗(yàn)?zāi)康?/p>

1.學(xué)習(xí)可編程中斷控制器8259的工作原理。

2.掌握可編程中斷控制器8259的應(yīng)用編程方法。

二、實(shí)驗(yàn)內(nèi)容

1.單中斷實(shí)驗(yàn)。利用系統(tǒng)總線上中斷請(qǐng)求信號(hào)INTR,設(shè)計(jì)一個(gè)單中斷應(yīng)用。使用單次脈

沖模擬中斷產(chǎn)生。編寫(xiě)中斷處理程序,在顯示器屏幕上顯示一個(gè)字符。

統(tǒng)

執(zhí)

實(shí)驗(yàn)步驟如下:

①實(shí)驗(yàn)接線圖如圖2-1所示,按圖接線。

②運(yùn)行Tdpit集成操作軟件,調(diào)用程序代碼(T8259-1.ASM),填寫(xiě)程序代碼中的空缺處,

編譯、鏈接。

(程序源碼路徑:C:\TangDu\PitPP\ASM\)

③使用運(yùn)行命令運(yùn)行程序,重復(fù)按單次脈沖開(kāi)關(guān)KK1+,顯示屏?xí)@示字符“9",說(shuō)明

響應(yīng)了中斷。

2.擴(kuò)展中斷源查詢方式應(yīng)用實(shí)驗(yàn)。利用實(shí)驗(yàn)平臺(tái)上8259控制器對(duì)系統(tǒng)總線上的中斷線

INTR進(jìn)行擴(kuò)展。編寫(xiě)程序?qū)?259控制器的IRO和IRI中斷請(qǐng)求進(jìn)行處理。

實(shí)驗(yàn)步驟如下:

①實(shí)驗(yàn)接線圖如圖2-3所示,按圖接線。

②運(yùn)行Tdpit集成操作軟件,調(diào)用程序代碼(T8259-2.ASM),填寫(xiě)程序代碼中的空缺處,

編譯、鏈接。

(程序源碼路徑:C:\TangDu\PitPP\ASM\)

③使用運(yùn)行命令運(yùn)行程序,按動(dòng)KK1+、KK2+按鍵,觀察中斷是否產(chǎn)生。

三、實(shí)驗(yàn)所用儀表及設(shè)備

1.PC機(jī)一臺(tái)。

2.TD-PIT++實(shí)驗(yàn)系統(tǒng)一套。

四.實(shí)驗(yàn)代碼

1.單中斷實(shí)驗(yàn)。

INTRJVADDEQU01C8H;INTR對(duì)應(yīng)的中斷矢量地址

INTR_OCW1EQU0A1H;INTR對(duì)應(yīng)PC機(jī)內(nèi)部8259的0CW1地址

INTR.0CW2EQUOAOH;INTR對(duì)應(yīng)PC機(jī)內(nèi)部8259的0CW2地址

INTRIMEQUOFBH;INTR對(duì)應(yīng)的中斷屏蔽字

STACK1SEGMENTSTACK

DW256DUP(?)

STACK1ENDS

DATASEGMENT

MESDB'Pressanykeytoexit!',0AH,0DH,0AH,0DH,$

CS.BAKDW?;保存INTR原中斷處理程序入口段地址的變量

IP-BAKDW?;保存INTR原中斷處理程序入口偏移地址的變量

IM_BAKDB?;保存INTR原中斷屏蔽字的變量

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES;顯示退出提示

MOVAH,09H

INT2IH

CLI

MOVAX,0000H;替換INTR的中斷矢量

MOVES,AX

MOVDIJNTRJVADD

MOVAX,ES:[DI]

MOVIP_BAK,AX;保存INTR原中斷處理程序人口偏移地址

MOVAX,OFFSETMYISR

MOVES:[DI],AX;設(shè)置當(dāng)前中斷處理程序入口偏移地址

ADDDI,2

MOVAX,ES:[DI]

MOVCS_BAK,AX;保存INTR原中斷處理程序入口段地址

MOVAX,SEGMYISR

MOVES:[DI],AX;設(shè)置當(dāng)前中斷處理程序入口段地址

MOVDX,INTR_OCW1;沒(méi)置中斷屏蔽存放器,翻開(kāi)INTR屏蔽位

INAL,DX

MOVIM_BAK,AL;保存INTR原中斷屏蔽字

ANDAL,INTR」M

OUTDX,AL

STI

WAIT1:MOVAH,1;判斷是否有按鍵按下

INT16H

JZWAIT1;無(wú)按鍵那么跳回繼續(xù)等待,有那么退出

QUIT:CLI

MOVAX,0000H;恢復(fù)INTR原中斷矢量

MOVES,AX

MOVDIJNTRJVADD

MOVAX,IP_BAK「灰復(fù)INTR原中斷處理程序人口偏移地址

MOVES:(DIJ,AX

ADDDI,2

MOVAX,CS_BAK;恢復(fù)INTR原中斷處理程序入口段地址

MOVES:[DI],AX

MOVDXJNTR_OCW1;恢復(fù)INTR原中斷屏蔽存放器的屏蔽字

MOVAL,IM_BAK

OUTDX,AL

STI

MOVAX,4C00H;返回至UDOS

INT21H

MYISRPROCNEAR;中斷處理程序MYISR

PUSHAX

MOVDL,39H;輸出字符9

MOVAH,2

INT21H

MOVDL,ODH;輸出字符回車

MOVAH,2

INT21H

MOVDL,0AH;輸出字符換行

MOVAH,2

INT21H

OVER:MOVDX,INTR_OCW2;向PC機(jī)內(nèi)部8259發(fā)送中斷結(jié)束命令

MOVAL,20H

OUTDX,AL

MOVAL,20H

OUT20H,AL

POPAX

IRET

MYISRENDP

CODEENDS

ENDSTART

2.擴(kuò)展中斷源查詢方式應(yīng)用實(shí)驗(yàn)。

INTR_IVADDEQU01C8H;INTR對(duì)應(yīng)的中斷矢量地址

INTR_OCW1EQU0A1H;INTR對(duì)應(yīng)PC機(jī)內(nèi)部8259的0CW1地址

INTR_OCW2EQU0A0H;INTR對(duì)應(yīng)PC機(jī)內(nèi)部8259的0CW2地址

INTRIMEQU0FBH;INTR對(duì)應(yīng)的中斷屏蔽字

IOYOEQU30(X)H;片選IOYO對(duì)應(yīng)的端口始地址

MY8259JCW1EQUIOYO+OOH;實(shí)驗(yàn)系統(tǒng)中8259的ICW1端口地址

MY8259JCW2EQUIOY0+04H;實(shí)驗(yàn)系統(tǒng)中8259的ICW2端口地址

MY8259JCW3EQUIOY0+04H;實(shí)驗(yàn)系統(tǒng)中8259的ICW3端口地址

MY8259」CW4EQUIOY0+04H;實(shí)驗(yàn)系統(tǒng)中8259的ICW4端口地址

MY8259_OCW1EQUIOY0+04H;實(shí)驗(yàn)系統(tǒng)中8259的OCW1端口地址

MY8259_OCW2EQUIOYO+OOH;實(shí)驗(yàn)系統(tǒng)中8259的OCW2端口地址

MY8259_OCW3EQUIOYO+OOH;實(shí)驗(yàn)系統(tǒng)中8259的OCW3端口地址

STACK!SEGMENTSTACK

DW256DUP(?)

STACK1ENDS

DATASEGMENT

MESDB'Pressanykeytoexit!',0AH,0DH,0AH,0DH;$'

CS-BAKDW?;保存INTR原中斷處理程序入口段地址的變量

IP_BAKDW?;保存INTR原中斷處理程序人口偏移地址的變量

IM_BAKDB?;保存INTR原中斷屏蔽字的變量

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVDX.OFFSETMES;顯示退出提示

MOVAH,09H

INT2IH

CLI

MOVAX,0000H;替換INTR的中斷矢量

MOVES,AX

MOVDIJNTRJVADD

MOVAX,ES:[DI]

MOVIP_BAK,AX;保存INTR原中斷處理程序入口偏移地址

MOVAX,OFFSETMYISR

MOVES:1DI],AX設(shè)置當(dāng)前中斷處理程序入口偏移地址

ADDDI,2

MOVAX,ES:|DI)

MOVCS_BAK,AX;保存INTR原中斷處理程序入口段地址

MOVAX,SEGMYISR

MOVES:[DI],AX設(shè)置當(dāng)前中斷處理程序入口段地址

MOVDX,INTR_OCW1;設(shè)置中斷屏蔽存放器,翻開(kāi)INTR的屏蔽位

INAL,DX

MOVIM_BAK,AL;保存INTR原中斷屏蔽字

ANDALJNTRJM

OUTDX,AL

MOVDX.MY8259JCWI;初始化實(shí)驗(yàn)系統(tǒng)中8259的ICW1

MOVALJ3H;邊沿觸發(fā)、單片8259、需要ICW4

OUTDX,AL

MOVDX,MY8259_ICW2;初始化實(shí)驗(yàn)系統(tǒng)中8259的ICW2

MOVAL,08H

OUTDX,AL

MOVDX,MY8259」CW4;初始化實(shí)驗(yàn)系統(tǒng)中8259的ICW4

MOVAL,0IH俳自動(dòng)結(jié)束EOI

OUTDX,AL

MOVDX,MY8259_OCW3;向8259的OCW3發(fā)送讀取IRR命令

MOVAL,OAH

OUTDX,AL

MOVDX,MY8259_OCW1;初始化實(shí)驗(yàn)系統(tǒng)中8259的0CW1

MOVAL,0FCH;翻開(kāi)IR0和IR1的屏蔽位

OUTDX,AL

STI

WAIT1:MOVAH,1;判斷是否有按鍵按卜

INTI6H

JZWAIT1;無(wú)按鍵那么跳回繼續(xù)等待,有那么退出

QUIT:CLI

MOVAX,0000H;恢復(fù)INTR原中斷矢量

MOVES,AX

MOVDIJNTRJVADD

MOVAX,IP_BAK「恢復(fù)INTR原中斷處理程序入口偏移地址

MOVES:[DI],AX

ADDDI,2

MOVAX,CS_BAK;恢復(fù)INTR原中斷處理程序入口段地址

MOVES:(DILAX

MOVDXJNTR_OCW1;恢復(fù)INTR原中斷屏蔽存放器的屏蔽字

MOVAL,IM_BAK

OUTDX,AL

STI

MOVAX,4C00H;返回到DOS

INT21H

MYISRPROCNEAR;中斷處理程序MYISR

PUSHAX

QUERY:MOVDX,MY8259_OCW3;向8259的OCW3發(fā)送讀取IRR命令

INAL,DX;讀出IRR存放器值

ANDAL,01H

CMPAUOIH

JEIROISR;假設(shè)為IR0請(qǐng)求,跳到IR0處理程序

JNEIRIISR;假設(shè)為IRI請(qǐng)求,跳到IR1處理程序

JMPOVER

IROISR:MOVAL,30H;IR0處理,顯示字符串STR0

MOVAH,OEH

INTIOH

MOVAL,20H

INTIOH

JMPOVER

IR1ISR:MOVAL,31H;IR1處理,顯示字符串STR1

MOVAH,0EH

INTiOH

MOVAL,20H

INTIOH

JMPOVER

OVER:MOVDX,INTR_OCW2;向PC機(jī)內(nèi)部8259發(fā)送中斷結(jié)束命令

MOVAL,20H

OUTDX,AL

MOVAL,20H

OUT20H,AL

POPAX

1RET

MYISRENDP

CODEENDS

ENDSTART

五.實(shí)驗(yàn)現(xiàn)象及分析

1.單中斷實(shí)驗(yàn)。

按單次脈沖開(kāi)關(guān)KK1+,顯示屏?xí)@示字符“9"

,|g|x|

2.擴(kuò)展中斷源查詢方式應(yīng)用實(shí)驗(yàn)。

注:與03H與,和與01H與時(shí)的優(yōu)先級(jí)不一樣。

和03h與,同時(shí)按應(yīng)當(dāng)出1;

和Olh與,同時(shí)按應(yīng)當(dāng)出0

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論