《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)參考程序2_第1頁
《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)參考程序2_第2頁
《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)參考程序2_第3頁
《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)參考程序2_第4頁
《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)參考程序2_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1/1《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》實(shí)驗(yàn)參考程序2《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

試驗(yàn)一:簡潔程序設(shè)計(jì)試驗(yàn)

(1)編寫一個(gè)32位無符號(hào)數(shù)除法的程序,要求將存放在NUM1中的32位無符號(hào)數(shù)與存放在NUM2中的16位無符號(hào)數(shù)相除,結(jié)果存放在NUM3和NUM4中。

程序流程圖略。

參考源程序:

DATASEGMENT

NUM1DD2A8B7654H

NUM2DW5ABCH

NUM3DW?

NUM4DW?

DATAENDS

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:MOVAX,DATA;數(shù)據(jù)段寄存器初始化

MOVDS,AX

MOVAX,WORDPTRNUM1

MOVDX,WORDPTRNUM1+2

DIVNUM2

MOVNUM3,AX

MOVNUM4,DX

MOVAH,4CH;正常返回DOS系統(tǒng)

INT21H

CODEENDS

ENDSTART

(2)編寫一個(gè)拆字程序。要求將存放在ARY單元的2位十六進(jìn)制數(shù)X1X2拆為X1和X2兩部分,并以0X1和0X2的形式分別存入ARY+1和ARY+2單元中。

程序流程圖略。

參考源程序:

DATASEGMENT

ARYDB2AH,?,?

DATAENDS

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETARY;取ARY的偏移地址

MOVAL,[SI];取16進(jìn)制數(shù)至AL

第1頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

MOVBL,AL

ANDAL,0F0H;取16進(jìn)制數(shù)的高四位,即X1

SHRAL,4

MOV[SI+1],AL;存0X1

MOVAL,BL

ANDAL,0FH;取16進(jìn)制數(shù)的低四位,即X2

MOV[SI+2],AL;存0X2

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

第2頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

試驗(yàn)二:分支程序設(shè)計(jì)試驗(yàn)

(1)編寫一個(gè)字符比較程序,比較3個(gè)無符號(hào)字節(jié)數(shù)A,B,C的大小,并依據(jù)比較結(jié)果對(duì)變量K賦值:

假如3個(gè)數(shù)不相等,則K=0;

假如3個(gè)數(shù)中有兩個(gè)相等,則K=1;

假如3個(gè)數(shù)都相等,則K=2。

程序流程圖略。

參考源程序:

DATASEGMENT;定義待比較數(shù)A、B、C,比較結(jié)果K

AD

B20H

BDB20H

CDB20H

KDB?

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVAL,A

CMPAL,B;對(duì)A、B進(jìn)行比較,不相等則轉(zhuǎn)到COMP2

JNECOMP2;相等則比較A、C

CMPAL,C

JNEK1;A、C不相等則K=1

JMPK2;A、C相等則K=2

COMP2:MOVBL,B

CMPBL,C

JEK1;對(duì)B、C進(jìn)行比較,相等則K=1

CMPAL,C

JEK1;對(duì)A、C進(jìn)行比較,相等則K=1

K0:MOVK,0

JMPEXIT

K1:MOVK,1

JMPEXIT

K2:MOVK,2

EXIT:MOVAH,4CH

第3頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

第4頁共31頁INT21H

CODEENDS

ENDSTART

(2)編寫一個(gè)能實(shí)現(xiàn)下列表達(dá)式的程序:

?N=?A+BA≤B設(shè)A,B,C為小于128的正整數(shù)。?

A?

B+

C程序流程圖略。

參考源程序:

DATASEGMENT

A

BADB22H

;定義A、B、C、NBDB10H

CDB01H

NDB?

DATA

ENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVAL,A

CMPAL,B

JGCALCUL

;A小于或等于B則N=A+B

ADDAL,B

JMPEXIT

CALCUL:SUBAL,B

ADCAL,C

EXIT:MOVN,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

試驗(yàn)三循環(huán)程序設(shè)計(jì)試驗(yàn)

(1)將字符串STRN(以“$”結(jié)尾)中的每一個(gè)字符均加上偶校驗(yàn)位,并統(tǒng)計(jì)有多少個(gè)字符因含有奇數(shù)個(gè)“1”而加上了校驗(yàn)位。統(tǒng)計(jì)結(jié)果存于N單元中。

程序流程圖略。

參考源程序:

DATASEGMENT

STRNDBWhat$;任意定義一個(gè)字串,以“$”結(jié)尾

COUNTEQU$-STRN;count=size(strn)

NDB?

BUFDBCOUNTDUP(?)buf=???...(count個(gè))

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,DATA

MOVES,AX

LEASI,STRN;si=strn的偏移地址

LEADI,BUF

MOVCX,COUNT

MOVAL,0

LP1:MOVBL,[SI];逐個(gè)取字符進(jìn)行推斷

ANDBL,BL;自己和自己做與運(yùn)算

JPNEXT;依據(jù)PF標(biāo)志位的變化進(jìn)行跳轉(zhuǎn),偶數(shù)個(gè)1跳轉(zhuǎn)INCAL

ORBL,80H

NEXT:MOV[DI],BL

INCSI

INCDI

LOOPLP1

MOVN,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

第5頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

(2)在FIRST開頭的一片連續(xù)的數(shù)據(jù)區(qū)中存放著100個(gè)數(shù)據(jù),編寫一個(gè)程序,統(tǒng)計(jì)第1

第6頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

個(gè)數(shù)據(jù)…0?之前的數(shù)據(jù)個(gè)數(shù)。

程序流程圖略。參考源程

序:

DATASEGMENT

FIRSTDB10H,24H,34H,73H,20H,44H,03H,36H,41H;任取9個(gè)數(shù)做演示

COUNTEQU$-FIRST

NUMDB?

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVDL,0;計(jì)數(shù)值初始為0

MOVCX,COUNT

MOVBX,OFFSETFIRST

LP1:MOVAL,[BX];每次取一個(gè)數(shù),與0比較CMPAL,00H

JNENEXT;不等轉(zhuǎn)移

JMPEXIT;找到0則退出

NEXT:INCDL;沒找到0則計(jì)數(shù)值加1INCBX

LOOPLP1

EXIT:MOVNUM,DL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

第7頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

試驗(yàn)四:子程序設(shè)計(jì)試驗(yàn)

將BUF開頭的10個(gè)單元中兩位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼,并在屏幕上顯示出來。要求碼型轉(zhuǎn)換通過子程序HEXASC實(shí)現(xiàn),參數(shù)傳送采納寄存器傳送方式。

程序流程圖略。參考源程序:

(1)實(shí)現(xiàn)方法一:遠(yuǎn)過程調(diào)用

DATASEGMENT

BUFDB10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2H

COUNTEQU$-BUF;定義任意長度的一段BUF

DATAENDS

STACK1SEGMENTSTACK

DB100DUP(?);設(shè)置足夠深度的棧區(qū)

STACK1ENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK1

START:MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETBUF

MOVCX,COUNT

AGAIN:MOVAL,[SI];逐個(gè)取數(shù)

MOVBL,AL

SHRAL,4

ANDAL,0FH;先對(duì)高字節(jié)部分轉(zhuǎn)換(寄存器AL傳參)

CALLFARPTRHEXASC;調(diào)用子程序

MOVDL,AL

MOVAH,02H;顯示高字節(jié)部分對(duì)應(yīng)的字符

INT21H

MOVAL,BL

ANDAL,0FH;再對(duì)低字節(jié)部分轉(zhuǎn)換(寄存器AL傳參)

CALLFARPTRHEXASC;調(diào)用子程序

MOVDL,AL

MOVAH,02H;顯示低字節(jié)部分對(duì)應(yīng)的字符

INT21H

MOVDL,20H

MOVAH,02H;顯示空格

INT21H

第8頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

INCSI

LOOPAGAIN

MOVAH,4CH

INT21H

CODEENDS

CODEBSEGMENT

ASSUMECS:CODEB

HEXASCPROCFAR

CMPAL,09H;推斷是不是數(shù)字

JAHEXATOF;是字母則轉(zhuǎn)到HEXATOF

ADDAL,30H;是數(shù)字則對(duì)應(yīng)到數(shù)字的ASCII碼

JMPENDHEX

HEXATOF:ADDAL,37H;是字母則對(duì)應(yīng)到字母的ASCII碼ENDHEX:RET

HEXASCENDP

CODEBENDS

ENDSTART

(2)實(shí)現(xiàn)方法二:近過程調(diào)用

DATASEGMENT

BUFDB10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2H

COUNTEQU$-BUF;定義任意長度的一段BUF

DATAENDS

STACK1SEGMENTSTACK

DB100DUP(?);設(shè)置足夠深度的棧區(qū)

STACK1ENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK1

START:MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETBUF

MOVCX,COUNT

AGAIN:MOVAL,[SI];逐個(gè)取數(shù)

MOVBL,AL

SHRAL,4

ANDAL,0FH;先對(duì)高字節(jié)部分做轉(zhuǎn)換

CALLHEXASC

第9頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

MOVDL,AL;顯示高字節(jié)部分對(duì)應(yīng)的字符

MOVAH,02H

INT21H

MOVAL,BL

ANDAL,0FH;再對(duì)低字節(jié)部分做轉(zhuǎn)換

CALLHEXASC

MOVDL,AL;顯示低字節(jié)部分對(duì)應(yīng)的字符

MOVAH,02H

INT21H

MOVDL,20H;顯示空格

MOVAH,02H

INT21H

INCSI;連續(xù)循環(huán)或退出

LOOPAGAIN

MOVAH,4CH

INT21H

HEXASCPROCNEAR

CMPAL,09H

JAHEXATOF

ADDAL,30H

JMPENDHEX

HEXATOF:ADDAL,37H

ENDHEX:RET

HEXASCENDP

CODEENDS

ENDSTART

第10頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

試驗(yàn)五:DOS中斷調(diào)用試驗(yàn)

(1)假如從鍵盤上依次輸入的是一個(gè)數(shù)字和一個(gè)字母,則輸出“RIGHT”標(biāo)記后結(jié)束程序,否則輸出標(biāo)記“ERROR”后轉(zhuǎn)向原出錯(cuò)處重做。試編程實(shí)現(xiàn)該功能。

程序流程圖略。

參考源程序:

DATASEGMENT

MSGDB0AH,0DH,RIGHT,0AH,0DH,$

WRNDB0AH,0DH,ERROR,0AH,0DH,$

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

AGAIN:MOVAH,01H;等待用戶輸入1個(gè)字符并顯示INT21H

CMPAL,39H

JAEMSG

CMPAL,30H

JBEMSG;推斷輸入是否是數(shù)字,不是則報(bào)錯(cuò)

MOVAH,01H;等待用戶輸入1個(gè)字符并顯示

INT21H

CMPAL,A

JBEMSG

CMPAL,Z;推斷輸入是否是大寫字母,不是則連續(xù)

JBEXIT;推斷是不是小寫字母

CMPAL,a

JBEMSG

CMPAL,z

JBEXIT;不是字母則報(bào)錯(cuò),是字母則轉(zhuǎn)到EXIT

EMSG:LEADX,WRN

MOVAH,09H

INT21H

JMPAGAIN

EXIT:MOVDX,OFFSETMSG

MOVAH,09H;顯示“RIGHT”并退出

INT21H

MOVAH,4CH

第11頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

INT21H

CODEENDS

ENDSTART

(2)編寫一程序分類統(tǒng)計(jì)字符個(gè)數(shù):即接收鍵入的一串字符(字符個(gè)數(shù)不超過50個(gè),該字符串用回車作為結(jié)束),并按數(shù)字、字母和其它字符分類計(jì)數(shù),然后將結(jié)果存入digit、letter和other3個(gè)存儲(chǔ)單元中,并顯示結(jié)果。

程序流程圖略。

參考源程序:

DATASEGMENT

MSG1DB0AH,0DH,Numberofdigit:,20H,$

MSG2DB0AH,0DH,Numberofletters:,20H,$

MSG3DB0AH,0DH,Numberofothercharacters:,20H,$

BUFDB50

DB0

DB50DUP(?);設(shè)置足夠深的棧區(qū)

DIGITDB?

LETTERDB?

OTHERDB?

DATAENDS

STACK1SEGMENTSTACK

DB100DUP(?)

STACK1ENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK1

START:MOVAX,DATA

MOVDS,AX

MOVAH,0AH;等待用戶輸入字符串并顯示

MOVDX,OFFSETBUF

INT21H

MOVSI,OFFSETBUF

MOVCL,[SI+1]

MOVCH,00H

MOVAL,00H

MOVAH,00H

MOVBH,00H

AGAIN:MOVBL,[SI+2]

CMPBL,30H

JBOTH;ASCII碼小于30H則歸類為“其它”

CMPBL,3AH

第12頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

第13頁共31頁MOVLETTER,BH

MOVOTHER,AL

MOVDX,OFFSETMSG1MOVAH,09H

INT21H

MOVAL,DIGIT

CALLDISP

;顯示“數(shù)字”有多少個(gè)

MOVDX,OFFSETMSG2MOVAH,09H

INT21H

MOVAL,LETTER

CALLDISP

;顯示“字母”有多少個(gè)

MOVDX,OFFSETMSG3MOVAH,09H

INT21H

MOVAL,OTHER

CALLDISP

;顯示“其它”有多少個(gè)MOVAH,4CH

INT21H

DISP

PROCNEAR

;顯示子程序

JBDIG

;ASCII碼大于等于30H小于3AH則歸類為“數(shù)字”CMPBL,41H

JBOTH

;ASCII碼大于等于3AH小于41H則歸類為“其它”CMPBL,5BH

JBLET

;ASCII碼大于等于41H小于5BH則歸類為“字母”CMPBL,61H

JBOTH

;ASCII碼大于等于5BH小于61H則歸類為“其它”CMPBL,7BH

JBLET

;ASCII碼大于等于61H小于7BH則歸類為“字母”

OTH:INCAL

;“其它”計(jì)數(shù)器加1DIG:JMPENDLPINCAH

;“數(shù)字”計(jì)數(shù)器加1LET:JMPENDLPINCBH

;“字母”計(jì)數(shù)器加1ENDLP:INCSI

LOOPAGAIN

;連續(xù)循環(huán)

MOVDIGIT,AH

;統(tǒng)計(jì)各類個(gè)數(shù)

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

MOVAH,00H

MOVDH,0AH

DIVDH

MOVCH,AH

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

ADDCH,30H

MOVDL,CH

MOVAH,02H

INT21H

RET

DISPENDP

CODEENDS

ENDSTART

第14頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

試驗(yàn)六:擴(kuò)展定時(shí)器/計(jì)數(shù)器接口試驗(yàn)

(1)計(jì)數(shù)器0工作于方式3,編寫初始化程序,觀看其輸出OUT0信號(hào)的波形。修改計(jì)數(shù)初值,觀看OUT0信號(hào)的變化狀況。硬件連接方法:8254計(jì)數(shù)器0的CLK0端接規(guī)章的脈沖輸入(頻率自選),OUT0接示波器的正極;示波器負(fù)極接地。

程序流程圖略。

參考源程序:

DATASEGMENT

DB100DUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVDX,20FH;寫入計(jì)數(shù)器0的掌握字

MOVAL,00010110B

OUTDX,AL

MOVDX,20CH;寫入計(jì)數(shù)器0的計(jì)數(shù)初值

MOVAL,05H

OUTDX,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(2)將計(jì)數(shù)器1和計(jì)數(shù)器0級(jí)聯(lián)起來,二者均工作于方式3,編寫初始化程序,觀看OUT1和OUT0信號(hào)的波形,說明二者的關(guān)系。修改計(jì)數(shù)初值,觀看OUT0和OUT1輸出波形的變化狀況。硬件連接方法:8254計(jì)數(shù)器1的CLK1端接規(guī)章的脈沖輸入(頻率自選),OUT1接8254計(jì)數(shù)器0的CLK0,計(jì)數(shù)器0的輸出OUT0接示波器正極;示波器負(fù)極接地。

程序流程圖略。

參考源程序:

DATASEGMENT

DB100DUP(?)

DATAENDS

CODESEGMENT

第15頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVDX,20FH

MOVAL,00010110B;寫入計(jì)數(shù)器0的掌握字

OUTDX,AL

MOVDX,20CH;寫入計(jì)數(shù)器0的計(jì)數(shù)初值

MOVAL,05H

OUTDX,AL

MOVDX,20FH

MOVAL,01010110B;寫入計(jì)數(shù)器1的掌握字

OUTDX,AL

MOVDX,20DH;寫入計(jì)數(shù)器1的計(jì)數(shù)初值

MOVAL,02H

OUTDX,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

第16頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

第17頁共31頁試驗(yàn)七:并行輸入/輸出接口8255A簡潔編程試驗(yàn)

(1)利用8255A的B口輸出掌握兩組發(fā)光二級(jí)管L1,L3,L5,L7和L2,L4,L6,L8亮滅交替變化。

分析:

根據(jù)題目要求,當(dāng)8255A的B口輸出為01010101B(55H)時(shí),發(fā)光二極管L1,L3,L5,L7會(huì)被點(diǎn)亮,當(dāng)8255A的B口輸出為10101010B(0AAH)時(shí),發(fā)光二極管L2,L4,L6,L8會(huì)被點(diǎn)亮。因此,通過延時(shí)轉(zhuǎn)變8255A的B口輸出,即可實(shí)現(xiàn)兩組發(fā)光二極管的亮滅交替變化。由于LED隨時(shí)出于預(yù)備好的狀態(tài),因此8255A的B口可工作于方式0輸出,其它端口未使用,無需考慮。因此,8255A的方式掌握字為:10000000B(80H)。

硬件連接方法:

8255A的B口PB0~PB7分別連接L1~L8。

程序流程圖略。

參考源程序:

.486

DATASEGMENT

PORTADW208H

;8255A端口A地址PORTBDW209H

;8255A端口B地址PORTCDW20AH

;8255A端口C地址PORT_CTRDW20BH;8255A掌握端口地址

DATA

ENDS

STACK1SEGMENTSTACK

DB100DUP(?)

STACK1ENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK1

START:MOVAX,DATA

MOVDS,AX

MOVDX,PORT_CTR

MOVAL,10000000B

;8255A初始化;掌握字OUTDX,AL

MOVDX,PORTB

MOVAL,00H

OUTDX,AL;8255A端口B清零,LED初始化(全滅)

LP0:

MOVBL,01010101B

MOVAL,BL

OUTDX,AL

CALLDELAY

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

NOTAL

MOVBL,AL

MOVAH,01H;調(diào)用BIOS的16H功能推斷鍵盤是否有輸入

INT16H

JNZEXIT

JMPLP0

EXIT:MOVAH,4CH

INT21H

DELAYPROCNEAR;延時(shí)子程序(可通過修改NOP指令數(shù)量轉(zhuǎn)變延時(shí)時(shí)間)MOVECX,0FFFFFFFH

LP2:NOP

LOOPDLP2

RET

DELAYENDP

CODEENDS

ENDSTART

(2)利用8255A的A口讀入8個(gè)開關(guān)K1~K8的狀態(tài),當(dāng)只有K1合上時(shí),L1~L8顯示00000001B;當(dāng)只有K1和K2合上時(shí),L1~L8顯示00000010B;當(dāng)只有K1,K2和K3合上時(shí),L1~L8顯示00000011B;當(dāng)只有K1,K2,K3和K4合上時(shí),L1~L8顯示00000100B;…直到全部開關(guān)合上時(shí),L1~L8顯示00001000B,并結(jié)束程序的運(yùn)行。發(fā)光二極管的狀態(tài)通過8255A的B口進(jìn)行掌握。

分析:

根據(jù)題目要求,可以通過查詢的方式讀取8255A的B口狀態(tài),并依據(jù)查詢的結(jié)果給A口送出相應(yīng)數(shù)據(jù),A口工作在方式0的輸入狀態(tài),B口工作在方式0輸出狀態(tài),C口不需要考慮,所以8255A的方式掌握字為:10010000B)

硬件連接方法:

(1)8255A的A口PA0~PA7對(duì)應(yīng)連接K1~K8;

(2)8255A的B口PB0~PB7對(duì)應(yīng)連接L1~L8;

源代碼:

DATASEGMENT

LISTDB01H,03H,07H,0FH,1FH,3FH,7FH,0FFH

DATAENDS

STACK1SEGMENTSTACK

DB100DUP(?)

STACK1ENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK1

START:MOVAX,DATA

第18頁共31頁

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

第19頁共31頁MOVDS,AX

MOVDX,20BH

;8255A初始化MOVAL,10010000B

OUTDX,AL

MOVDX,209H

;8255A的B口清零,LED初始化(全滅)MOVAL,00H

OUTDX,AL

L0:

MOVDX,208H;讀8255A的A口,獲得開關(guān)狀態(tài)INAL,DX

MOVBL,00H

MOVCX,8

MOVSI,OFFSETLIST

L1:INCBL

CMPAL,[SI]

JZFIND

INCSI

LOOPL1

JMPL0

FIND:MOVAL,BL

MOVDX,209H

;當(dāng)前開關(guān)狀態(tài)為表中所列狀態(tài)之一;顯示LED狀態(tài)OUTDX,AL

CMPAL,08H

JNZL0

MOVAH,4CHINT21H

CODEENDS

ENDSTART

《計(jì)算機(jī)硬件技術(shù)基礎(chǔ)》試驗(yàn)參考程序

第20頁共31頁DATASEGMENT

PORT0DW20CH;8254計(jì)數(shù)器0端口地址PORT1DW20DH;8254計(jì)數(shù)器1端口地址PORT2DW20EH;8254計(jì)數(shù)器2端口地址

PORT3DW20FH;8254掌握寄存器端口地址PORTADW208H;8255A的A口端口地址

PORTBDW209H;8255A的B口端口地址PORTCDW20AH;8255A的C口端口地址DATAPORT_CTRDW20BHENDS;8255A的掌握寄存器端口地址

試驗(yàn)八:并行輸入/輸出接口8255A綜合應(yīng)用試驗(yàn)

(1)利用8254計(jì)數(shù)器0、計(jì)數(shù)器1和8255A的B口實(shí)現(xiàn)對(duì)發(fā)光二極管的定時(shí)掌握,讓8個(gè)發(fā)光二極管每隔1s從左到右依次點(diǎn)亮。(要求計(jì)數(shù)器1的時(shí)鐘脈沖頻率為250kHz)。

分析:依據(jù)題目要求,需要利用8254進(jìn)行定時(shí)1s掌握,定時(shí)到后,轉(zhuǎn)變8255A的B口輸出。

以利用中斷的方式實(shí)現(xiàn),8254定時(shí)到時(shí)向CPU申請(qǐng)中斷,CPU相應(yīng)中斷后在中斷程序中轉(zhuǎn)變8255A的B口輸出。由于題目要求8254的輸入脈沖頻率為250kHz,所以需要級(jí)聯(lián)計(jì)數(shù)器1和

計(jì)數(shù)器0實(shí)現(xiàn)1s

定時(shí)(參考程序中利用計(jì)數(shù)器1進(jìn)行20ms定時(shí),計(jì)數(shù)器0進(jìn)行50次計(jì)數(shù),計(jì)數(shù)次數(shù)到時(shí)由OUT0向CPU申請(qǐng)中斷)。8255A的B口掌握LED,可工作在方式0輸出,A口未使用,為了選通實(shí)驗(yàn)板上的中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論