2022《計算機原理及應用》期末自測題_第1頁
2022《計算機原理及應用》期末自測題_第2頁
2022《計算機原理及應用》期末自測題_第3頁
2022《計算機原理及應用》期末自測題_第4頁
2022《計算機原理及應用》期末自測題_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2022《計算機原理及應用》期末自測題

一、基本概念與術語

1、現代計算機中表達信息采用二進制數進行編碼,8086是一16一位計算機。

2、8086CPU地址線有20條,可直接尋址的空間最大為1M080486CPU的地址線有

(32),可直接尋址的空間最大為支持虛擬存儲管理技術,虛擬存儲空間為(MJB)o

3、8086CPU總線周期是指CPU從存儲器或I/O端口讀寫一個字節的時間;基本總線周期

有4T狀態:Tw狀態是指等待周期。

4、8086CPU允許的I/O地址線最多可達一。條,最大尋址I/O空間為64KB(2的16次

方)。

5、8086CPU由總線接口單位(BIU)和執行單元(EU)兩部分組成,其功能為_____總

線接口單元:負責控制儲存器與I/O的讀寫;執行單元:從指令隊列中取出指令并執行。

其中8086CPU中標志寄存器的作用是一存放6位狀態標志位和3位控制標志位,指令隊列的作用是

BIU預取指令放在指令隊列,由EU從其取出指令,20位地址加法器的作用是一將16位的

分段地址轉換為20位物理地址。8086CPU代碼段物理地址由CPU的CS、IP兩個

寄存器確定。堆棧段物理地址由CPU的SS、SP兩個寄存器確定。8086CPU預取指令存

放J指令隊列;段寄存器CS和IP的內容始終指向順序存儲的丁一字節指令。

IP(instructionpointer):指令指針寄存器,存儲代碼段內的偏移,與CS一起構成取指

所需的程序計數器。程序計數器有BIU自動改變,始終指向下一個字節指令。

SP(stackpointer):堆棧指針寄存器,存儲棧頂的偏移。

6、80486CPU由總線接口部件、指令預取部件、指令譯碼部件、指令執行部件、浮點運算部件、(公

段部件和分頁部件)和(高速緩沖存儲器);總線接口部件主要用于管理訪問外部存儲器和I/O端

口的地址、數據和控制總線,完成(指令預取、讀寫數據等總線操作);指令譯碼部件從指令預取

隊列中讀取指令并譯碼,將其(轉換成相應控制信號)。在80486CPU實地址工作模式下,物理地

址的形成機制(與8086是相同的)。

7、80486微處理器的工作模式包括(實地址模式)、(保護模式)和(虛擬8086模式)。實地址

模式是80X86CPU的基本工作模式,80486在(上電及復位后)就進入實地址工作模式。保護模式下

CPU可訪問的線性地址空間可達(4GB),并允許運行幾乎不受存儲空間限制的(虛擬存儲器)程

序,同時增加了支持(多任務操作系統)的優化指令。

8、8086/80486中斷源有256個。中斷向量是(中斷服務程序入口地址);8086中斷服務程

序入口地址由CS、IP)組成。中斷類型號為20H,其中斷向量地址為80H°

9、8086/80486CPU中斷源包含硬件中斷和軟件中斷,INT21屬于(軟件中斷)。

10>I/O指令IN/0UT,傳送數據的寄存器為AL/AX,寄存器尋址時使用寄存器DX,

其中INAL.DX的含義是一從DX所指端”讀取?個字節到AL°OUT60H,AL的含義是

AL的一個字節輸出到60H端口,指令INAL,DX語法是(正確,錯誤),OUT333H,AL((正

確,錯誤)。

11、硬件中斷是(外部引發,隨機的,執行總線周期,中斷類型碼由中斷控制器提供),軟件中斷

是(內部引發,確定的,不執行總線周期,中斷類型確定)軟件中斷優先級與硬件中斷優先級相比,

(軟件中斷優先級)的級別高。

中斷優先級:

軟件中斷〉非屏蔽中斷〉可屏蔽中斷,單步中斷(屬于軟件中斷INT1)

12、在中斷服務程序結束前,為正確返|可,必須設置一條指令火束.。在子程中調用專程前,為

3*6-2

正確返回,必須設置一條指令RET.

13、一片8259A可以管理8級中斷:3片8259A可以管理理級中斷.若中斷控

制器8259的中斷請求寄存器IRR狀態為10100000B,說明IR9和IR5有求寄請求。ISR

狀態為10I00000B說明IR7和IR5中斷請求正在服務。

15、定時器8253的門控信號GATE作用是門控輸入端,用來控制計數器的啟動或停止計數的

操作,CLK端的作用是一時鐘脈沖的輸入端,用來輸入定時脈沖或計數脈沖,

OUT端作用是一輸出相應的波形初:化定時器8253需要先寫控制字,后寫

計數初值AO、A1

16、可編程定時器8253的地址有4個。共有3獨立定時通道。工作方式有6個。

假設8253的端口地址為340H~343H,那么控制端口地址為343H,通道0、1、2的端口地址

為340H、341H、342H。

17、并行接口8255有3個數據端口,有3種工作方式。在8255三種工作方式中,方式

I和方式2需要提供“握手”信號,該信號由PC端口提供。假設8255的端口地址為

330H?333H,控制端口地址為333H,端口A、B、C的地址為330H、331H、332H。

18、以下關于可編程計數/定時器8253說法錯誤的是()。

A).有3個獨立的16位計數/定時器

B).每個計數/定時器都有6中工作方式

C).每個定時/計數器都有時鐘輸入CLK、定時輸出OUT和門控信號GATA

D).每個定時/計數器都用二進制計數,不能用BCD碼計數

19、指令性語句(由CPU執行),(有對應的)機器碼,匯編時(旌)機器代碼;偽指令的作

用是(說明性語句),匯編時(不產生)機器代碼。

20、典型的微機結構中,包含CPU、存儲器、I/O接口等主要部件組成,各個部件通過(總線)連接在

一起。

21、匯編語言程序中用于指定段和段寄存器之間關系的偽指令是()。

A)ASSUMEB)EQUC)SEGMENTD)ORG

22、(A)和指令指針寄存器IP的內容始終指向下一字節指令的存儲地址。

A)CSB)DSC)SSD)ES

二、簡單應用與簡答題

■|P13

答:微型計算機是由微處理器、存儲器、輸入/輸出接口電路和系統總線構成的裸機系統。

微處理器:進行算術和邏輯運算,完成內部運算與外部控制功能;存儲器:存儲代碼與數據信息;

輸入/輸出接口電路:實現外設與CPU信息交換。總線將各個部件互聯。

2、分為哪幾種類型?微型計算機采用總線結構有什么優點WP14

答:總線按功能分類:地址總線、數據總線與控制總線。

優點:全部面向總線,負荷總線標準的部件都可以通過單一總線而融入微機系統中,不再互相連

接,有利于各部件獨立發展,使得微機具有很高的擴展性和兼容性。

3、8086CPU在勾上由哪幾部分蛆成?其功:什么?

答:CPU由總線接口單元BIU和執行單元EU組成。BIU完成物理地址的形成、預取指令獲取和排

隊、堡作數存取以及基本總線控制功能;EU:從指令隊列中取指令并執行。

4、8086的總線接口部件由那幾部分組成?其作用是什么?

答:總線接口部件組成:

段寄存器:為分段尋址定位段的位置;地址加法器:將16位段地址轉換為20位物理地址;(指

令指針寄存器)IP:存儲代碼段內的偏移地址;指令隊列:由BIU存放預取指令,由EU取出指令;

存儲器接口:取值和存取操作數。

5、8086的執行單元(部件)由哪幾部分組成?有什么功能,

答:執行單元組成:

標志寄存器:存放運算結果特征;算術運算單元(ALU):進行算術和邏輯運算,完成對數據的處

理:通用寄存器組:暫存數據和指針;控制器:讀取指令。

6、8086內部有,哪幾個通用寄存器?8086內部有哪幾個段寄存器?

答:AX(累加),BX(基),CX(計數),DX(數據),SP(堆棧指針),BP(基指針),SI(源索引

Index),DI(目的索弓目;DS,CS,SS,ES(擴展段)

7、說明8086指令系統的尋址方式,并說明哪些尋址方式對應的操作數在指令中?哪些停址方式對

應的操作數在CPU內部的寄存器中?那幾種尋址方式疝應的操作數在存儲器中?

答:立即數尋址:操作數由指令直接提供;

不需要使用總線周期,執行速度快

寄存器尋址:操作數在CPU內部的寄存器中,指令給出寄存器名;

存儲器尋址:操作數在存儲器中,其地址或地址的計算方法由指令提供;包括直接尋址、寄存器

間接尋址、基址尋址、變址尋址、基址加變址尋址。

需要執行總線周期,執行速度慢

I/O端口尋址:專用10指令;直接尋址(<255)、用DX寄存器尋址

8、屆*:通:5通UI*

答:(1)傳統的計算機一般按照取指令、指令譯碼/執行指令的步驟工作。

(2)在8086/8088中,指令的提取與執行分別由總線接口部件BIU與執行部件EU完成,兩個單

元交疊并行工作,這種機制稱為并行流水線,這種并行工作方式有力的提高了CPU的工作效率。

9、8086和8088是怎樣解決地址線和數據線的復用問題的?ALE信號何時處于有效電平?

10、CPU和輸入/輸蝕設備之間傳送的信息有哪幾類?

答:數據信息:I/O設備的數據:狀態信息:I/O設備的狀態:控制信息:CPU的控制信息。

II、8086工作在最小模式和最大模式的區別及主要特點是什么?

答:最小工作模式:MN/而接+5V;只有8086一個微處理器,所有的總線控制信號均為8086產生,

系統中的總線控制邏輯電路,減少到最少。

最大工作模式:MN/雨接地;系統含有兩個或多個微處理器,其中一個主處理器就是8086或者

8088,其它處理器協助主處理器工作,需要總線控制器來變換和組合控制信號。

12、此由哪兩部分組成?物理地址是如何形成的?8086的地址線有多少條?最大物

>?

答:邏輯地址:16位段首地址和16位偏移地址

物理地址:20位實際地址為物理地址。段基址乘4加上偏移量

20條,1M

14、說明指令性語句與指示性語句的作用與區別。

15、旺么是端口?通常有哪幾種端口?它們的作用是什么?

答:端口:是接口電路中CPU能訪問的寄存器;

類型:

數據端口:存放CPU與外設之間傳送的數據信息;

狀態端口:反映當前外設狀態所處的工作狀態;

控制端口:CPU通過接口向外設傳送控制信息。______________________________________________

16、計算機對I/O端II編址時通常采用哪兩種方法?相8()86系統中,用哪種方法對I/O端口進行編

址?

答:兩種編址方式:一是將存儲器與外設端口統一編址;二是外設端口單獨編址。

在0806系統中,將端口地址與存儲器地址分開編址0________________

17、1般的10接口電路安排有哪三類寄存器?它們各自的作用是什么?

答:數據寄存器:存放CPU與外設之間傳送的數據信息;

狀態寄存器:存放反映當前外設狀態所處的工作狀態的信息;

控制寄存器:存放CPU通過接口向外設傳送控制信息。_____________

18、簡述CPU、內存和I/O接口之間的幾種常用數據交換方式與特點工

答:常用三種數據交換方式:程序傳送方式;中斷傳送方式;DMA方式

程序傳送方式:由程序(IN/0UT指令)控制CPU與外設之間進行數據交換,無條件傳送方式和查

詢傳送方式兩種方式,用于簡單外設;其中查詢傳送簡單實用,效率低,硬件開銷小

中斷傳送方式:外設主動,可與CPU并行工作,但需要專門的中斷控制電路。CPU利用率,高速

度快,用于外設較多的實時系統。

DMA(DirectmemoryAccess):外設直接與存儲器進行數據傳送,效率高,適合大量、快速的數

據傳送,需要硬生開銷。

19、簡述條件傳送方式的工作過程.

答:包括三個環節:查詢狀態;檢測是否“就緒”;數據傳送

查詢狀態:CPU尋址狀態口,讀取狀態字;

檢測是否“就緒”:如果不滿足條件,則回到第一步讀取狀態字。

數據傳送:確認就緒狀態后,開始數據傳輸。________________

2()、什么是中斷優先權?什么是中斷嵌套?什么是可屏蔽中斷?

答:

市斷優先權:為使系統能夠及時響應并處理發生的所有的中斷,系統根據引起中斷事件的重要性

和緊迫程度,將中斷分為若干級別,該權重就是中斷優先權;

中斷嵌套:CPU正在進行某一級別中斷源的中斷處理時,若有更直級別的新中斷發出中斷請求,

且新中斷源滿足響應條件,則CPU應終止當前的中斷服務程序,并保護此程序的斷點和現場,轉而

響應高級中斷,這種多級中斷的處理方式稱為嵌套。

可屏蔽中斷:有外設發起的中斷請求,高電平,由CPU的INTR引腳輸入,收中斷標志位IF的控

制,IF=1時,CPU將響應請求,為0,則屏蔽請求。

21、軟件中斷有哪些特點?硬件中斷有那些特點?

答:軟件中斷:由CPU內部事件引起的,是確定的,中斷類型碼自動生成;與硬件無關,不需要

執行總線周期;除單步中斷外,軟件中斷不可屏蔽,優先級高于硬件中斷;

硬件中斷:由外部硬件引起的,是隨機的;需要執行總線周期;中斷類型碼由中斷控制器提供。

22、檢中斷處理子程序和主程序的關系上,軟件中斷和硬件中斷有什么不同之處?

答:軟件中斷:CPU自動形成中斷類型碼,然后進入中斷處理子程序;

硬件中斷:CPU通過總線從中蟬制器變取中啰類型碼,然后進入中斷處理子程序。

23、8086CPU響應中斷的流程包含哪四個階段?

答:響應中斷的四個階段:中斷請求信號檢測;中斷響應;中斷服務;中斷返回。

24、8259A中IRR、IMR和ISR三個寄存器的作用是什么?

答:IRR:存放中斷源發送的中斷請求;

ISR:保存對應位當前正在服務的中斷申請;

IMR:屏蔽對應位的中斷請求。____________________________________________

25、8086CPU響應中斷的條件?8086CPU響應中斷后自動完成的任務是什么?

答:響應中斷的條件:(1)有中斷源發起中斷請求;(2)開放總中斷:IF=1;(3)在現行指令

結束后再響應中斷。

響應中斷后自動完成的任務:(1)關中斷;(2)斷點保護(IP,CS,FLAG入棧);(3)給中

斷程序入口地址~

26、中斷向量表的功能是什么?若中斷向量號為15H,則它的中斷向量在中斷向量表的什么位置?

答:中斷向量表:將所有中斷向量集中放在一起,放在內存地址0單元開始的單元,方便中斷向

量查詢。

若中斷向量號為15H,則中斷向量指針:15H*4=54H,其中斷向量在中斷向量表的位置為0000:0054H。

27、簡述虛擬存儲技術的概念及基本原理

答:虛擬存儲:在物理上就是由內存與外存結合提供,最大為64TB的邏輯空間。

基本原理:與實方式相同的形式使用段寄存器,已形成線性基地址。通過分頁功能,可把虛擬86

下的1MB地址空間映像到486微處理器的4GB的物理空間任意位置。

三、編程應用題

I、將BUFI開始的100字節傳送到BUF2開始的單元,然后從中檢索字符“#",并將此單元換成空格字

符。P7KP73

方法一:用LOOR

DATASEGMENT

BUF1DB1,2,3,45,5,6

N1=$-BUF1//N1為BUFI的長度

BUF2DB

DATAENDS〃定義數據段

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:MOVAVr)ATA

MOVDS.AXK數據段指向DS

LEASI,BUFI//SI指向源串操作地址

MOVDI,OFFSETBUF2//DI指向目的串操作地址等價于LEADI,BUF2

MOVCX,N1〃將長度送到計數器CX

LP1:MOVAL.[SI]

MOVfDI],AL/;MOV無法'實現內存到內存,故喈寄存器AL

INCSI_______________________________

INCDI//SLDI自加,掃描源串與目的串

LOOPLP1

LEASI,BUF2

MOVAL,'#':檢索#

MOVCX,N1

LP2:CMPAL,[SI]

JNZNOFOUND

MOVBYTEPTR[SI]:,;替換空格

NOFOUND:INCSI

LOOPLP2

CODEENDS

ENDSTART

方法二:用MOVSB

DATASEGMENT

BUF2DB100E)UP(?)

DATAENDS〃定義數據段

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:MOVAX,DATA

MOVDS,AX〃數據段指向DS

MOVES,AX

LEASI,BUF1//SI指向源串操作地址

LEADI,BUF2/;DI指向目的串操作地址

MOVCX.100〃將長度送到計數器CX

CLD〃請方向標志(DF=0),SLDI自力口1

REPMOVSB〃重復傳送100個字節

MOVCX,100〃執行上面語句后CX=0,需要:重新賦值

LEADI,BUF21DI重新指向目的串操作地W

S:MOVAL,'#':檢索#

CMPAL,[DI1

JNZCOUN

MOVAL,"

MOVfDILAL;替換空格

COUN:INCDI

LOOPS〃如果沒有找到就DI指向下一個內存單兀

CODEENDS

ENDSTART

2、編寫一段程序,比較兩個5字節的字符串OLDS和NEWS,若相同,在RESULT置0,否則置

OFFHoP72

CMPJZ/JNZ

表中數v=8位,DB類型;冒泡排序;將第二大數放入RES單

DATASEGMENT

OLDSDB1,2,345

NEWSDB1,2,3,4,'A'

N=$-NEWS

RESULTDB0

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX;初始化

MOVSI,OFFSETOLDS

MOVDLOFFSETNEWS

MOVCX,NCLD______

DON:MOVAL,[SI]

CMPAL,[DI]REPZCMPSB:串不相

JNZNOEQU:串不相等轉V>等則退出比較

INCSIJNZNOEQU

INCDIMOVAL,0

LOOPDONJMPOUTPUT

MOVAL.O

JMPOUTPUT

NOEQU:MOVAL,0FFH

OUTPUT:MOVRESULTAL

CODEENDS

ENDSTART

3、從內存單元BUF開始的緩沖區有7個8位無符號數,且這7個數中沒有任何兩個數是相同的,

例如:13H,0D8H,92H,2AH,66H,0E0H,3FH。編寫一個完整的匯編語言程序找出它們中間第二大

的數并放入RES單元。P106

(結束])

DATASEGMENT

BUFDB13HOD8H,92H.2AH.66H,0E0H,3FH

N=$-BUF

RESDB0

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX;初始化

MOVDX,N-1卜設置外循環比較次數

SORT1:MOVBL,0設置內循環比較標志

MOVCX,DX晨設置內循環比較次數

MOVSI,OFFSETBUF

SORT2:MOVALJSI]

CMPAL,[SI+1]

JANOXCHG;W>B轉,即SDSI+1跳轉

XCHG[SI+1],AL;___________________________________________

XCHG[SI],AL;SI>SI+1交換數值,即經過AL寄存器發生交換

MOVBLQFFH更新交換標志位,本次循環內發生了交換

NOXCHG:INCSI______________________________________________________

LOOPSORT2更新SI,繼續執行內循環,CX-L直到第一次遍歷結束CX=0

DECDX更新外循環次數

CMPBL,0確認內循環中是否發生了交換

JNESORT1內循環中發生了交換,BL重新清零,CX重新賦值

JMPOUTPUT

MOVAH,4CH

INT21H

//執行上面操作后,數值已經從大到小排序完成

OUTPUT:MOVSI,OFFSETBUF-SI重新指向BUF首地址

MOVAL,[SI+1]將第二大值取出

MOVRES,AL存入RES內

CODEENDS

ENDSTART

4、累加數組中的元素,將和存于SUM開始單元,再求平均誼,平均值存于AVR單元。數據段定義

如下P104

DATASEGMENT

ARRAYDW10,10,12,4,5,6,7,8,9,10

COUNTDW($-ARRAY)/2

SUMDW0,0

AVRDW0;全部為字類型,全程序應用字操作

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX.DATA

MOVDS,AX

MOVCX,COUNT

MOVDX,0;清零進位

XORAX,AX|;清零AX

MOVAX,SUM

MOVSLOFFSETARRAY

DO:ADDAX,[SI]

ADCDX,0;考慮溢出

INCSI

INCSI;兩個INC,是因為字操作,SI+2

LOOPDO表示字節操作,訪問單元為

MOVSUM,AXBL

MOVSUM+2,DX____*****

MOVRI.RVTFPTRCOUNT

DIVBL

MOVBYTEPTRAVR,AL

CODEENDS

ENDSTART

5、令SUM=£式.〔2八;1〕,編寫匯編語言程序求解滿足SUM,£100C的最小CN值。求出的最小

CN值送內存中CN單元,累加和送內存中SUM單元

65535>1000>255,用字類型,SUM

DATASEGMENT不超過一個字長度,所以可以不

SUMDW0考慮溢出

czn\vn

DATAENDS

CODESEGMENT

ASSUMEDS:I)ATA,CS:CODE

START:

MOVAX.DATA

MOVDS,AX

MOVCX,50G

MOVAX,0;加數和放在AX,AX清晶

MOVBXJ;加數放在BX,BX既是加數也是計數,置一

AD:ADDBX,BX+1;2BX+1

ADDAX,BX;2BX+1力口數和放在AX中

CMPAX,100(

JABIG

INCBX

LOOPAD

BIG:MOVSUM,AXr

MOVCN,BX

CODEENDS

6、統計數組中大于100的數據的數量,存于N1單元,數據段定義如下

TABIDB100,20(),12,40,50,60,70,80,90,105

NEQU$-TAB

N1DB0

DATASEGMENT

TABIDB1(M),2(X),12,40,50,60,70,80,90,105

NEQU$-TABl

N1DB0

DATAENDS

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:MOVAX,DATA

MOVDS,AX

MOVCX.N

MOVBX.OFFSETTAB1;BX指向TABI首地址

MOVAL.100____________________________

MOVAH.O;AH用來計大于100數的數量

DO:CMP[BX],AL;比較數值

JNASMALL;BXv=AL時跳轉

INCAH;BX>AL時計數

SMALL:INCBX;BX指向下一位數

LOOPDO;循環比較,直到cx=o,退出循環

MOVN1,AH;將AH的計數放入N1單元

CODEENDS

ENDSTART

7、編寫程序完成求1+2+3+……N的累加和,直到累加和超過10(H)為止。統計被累加的自然數

的個數送CN單兀,累加和送SUM。

65535>1000>255,用字------------

DATASEGMENT

SUMDW0

CNDW0

DATAENDS

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:

MOVAX,DATA

MOVDS,AX

MOVCX,500

MOVAX,0,加數和放在AX,AX清零

MOVBXJ"口數放在BX,BX既是加數也是計數,置|

AD:ADDAX,BX

CMPAX,1000

JABIG

INCBX

LOOPAD

BIG:MOVSUM,AX

MOVCN,BX

CODEENDS

ENDSTART

8、設有兩個長度為8個字節的無符號數分別存放在以NUM1、NUM2為首地址的連續的內存單元中,

將兩個數相加,結果存入SUM內存單元中

8個字節二64bit,相當于4字數據串

DATASEGMENT

NUM1DQ062389AB78E390AFH;定義8字節力口數I

NUM2DQ56782634F0ABDC89H;定義8字節力口數2

SUMDB9DUP(?);定義9字節加數和,考慮進位

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATADB(definebyte):8bit一個字節

MOVDS,AX__________________________DW(defineword):16bit一個字

LEASI,NUM1;SI指向NUM1的最低單元DD(dcfincdoubleword):32bit兩個

LEADLNUM2;DI指向NUM2的最低單元子

LEABX,SUM:BX指向SUM的最低單元DQ(defincQuadraword):64bit四

MOVCX,4;根據數據字長度,設置循環次數個字

CLC;進位標志清零DT(defineTenbyte):128bit

MOVDX,0:保存產生的溢出

NEXT:MOVAX,WORDPTR[SI];將SI的低兩位字節傳給AX

ADDAX,DX;史理溢Hl

MOVDX,0;溢出重新置零

ADDAX.WORDPTR[DI];將DI的低兩位字節傳給AX

ADCDX,0;此時AX=SI+DI

MOVWORDPTR|BX],AX;將AX放入SUM指針BX中

ADDSI.2

ADDDI,2_______________________

ADDBX,2:移動SI、DI、BX指針

LOOPNEXT;直到CX=0,四個字相加完成,結束循環

CODEENDSENDSTART

9、從給定串中尋找最大值與最小值,并放到MAX與MIN單元,元素放在BUFFER開始的字節單

元中。

方法?:遍歷??次我?次最值:利用跳轉和循環LOOP

方法二:冒泡排序:排序后直接提取最大和最小值

DATASEGMENT

BUFFERDB1,2,3,4,5,6,7,8,9,10:定義以BUFFER開始的字節單元

COUNTEQU$-BUF

MAXDB0

MINDB0

DATAENDS

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:

MOVAX,DATA

MOVDS,AX

MOVCX,COUNT

MOVBX,OFFSETBUF

MOVAX,00FFH;AH=O以基準,用來找最大值;AL=FF為基準,用來找最小值

COMMIN:CMP[BX],AL

JABIG;BX>AL挑轉

MOVAL,[BX];BX〈AL,將小值放入AL中,與下一位比較

BIG:INCBX;指向卜.一位,繼續參與比較

LOOPCOMMIN;直到cx=o,遍歷結束

*

MOVMIN,AL?將最小值存入MIN單元中

MOVCX,COUNT;重新置ex

MOVBX,OFFSETBUF;BX重新指向首地址,參與最大值的,找

COMMAX:CMP[BX],AH

JBSMALL;BX〈AH跳轉

MOVAHJBXJ

SMALL:INCBX;最大值尋找和最小值尋找邏輯相同

LOOPCOMMAX

MOVMAX,AH

CODEENDS

ENDSTART

10、類型號為20H的中斷服務程序入口符號地址為INT-5,試寫出中斷向量的裝入程序片斷。P143

中斷向量的裝入

CL1;關閉斷點

PUSHDS;DS入棧,斷點保護

XORAX,AX

MOVDS,AX;DS設置為0,進行初始化

MOVBX,20H*4;中斷向量存入BX寄存器中(BX指向中斷向量的位置)

MOVAX,OFFSETINT-5;取中斷服務程序的偏移地址

MOV[BX],AX;將中斷服務程序的IP放入中斷向量

MOVAX,SEGINT-5;取中斷服務程序的段地址

MOV[BX+2],AX;將中斷服務程序的CS放入中斷向量

POPDS;DS出棧,斷點保護

STI;打開斷點

方法二:

CLI;關閉斷點

PUSHDS;DS入棧,斷點保護

XORAX,AX

MOVDS,AX;DS設置為0,進行初始化

MOVBX,20H*4;中斷向量存入BX寄存器中(BX指向中斷向量的位置)

MOVWORDPTR(BX],OFFSETINT-5:取中斷服務程序的偏移地址

MOVWORDPTR[BX+2],SEGINT-5;取中斷服務程序的段地址

POPDS;DS出棧,斷點保護

STI;打開斷點

12、8255連接一組開關與一組LED顯示器,如圖1所示。開關狀態控制LED顯示,若斷開,則全

部熄滅。8255端口地址為31OH~313H,8255工作于方式0。要求:

(1)若K0閉合,發光二極管全部亮;

(2)開關K1閉合,全部發光二極管同時閃爍(延時2秒);

(3)開關K2閉合,發光二極管依次循環點亮(依次延時1秒);

假設己有延時1s的子程序DELAY,編寫完整8255初始化程序與控制程序。PC7-PC4

8255A

74LSCM

圖I8255應用

以下是部分功能的程序片段提示:

COTREQU3I3H;8255A控制口地址

PORT_AEQU310H;8255A的A口地址

PORT_CEQU312H

;------------8255初始化---------

Wait:MOVDX,COTR

MOVAL.10010000B;8255方式0.PA口輸入,PC口輸出

OUTDX,AL

:..................LED依次點亮...........

ONEIightONEPROC;依次點亮

MOVDX,PORT_C;端口C地址

MOVAL,OOOOODOIB;PC0輸出高電平

OUTDX,AL;L0發光

CALLDELAY;延時

……;點亮LI發光,延時

……;點亮L2發光,延時

......;點亮L3發光,延時

RET

ONEIightONEENDP

DATASEGMENT

COTREQU313H;8255A控制口地址

PORT_AEQU310H;8255A的A口地址

PORT_CEQU312H

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

;----------------8255工作方式設定——

START:

MOVAX.DATA

MOVDS,AX

MOVDX,COTR

MOVALJ00I0000B;8255萬式SPA口輸入,PC口輸出

OUTDX,AL

按鍵掃描?

Wait:

MOVDX,PORT_A

INAL,DX

TESTAU00000001B

JZKO

TESTALQOOOOOIOB

JZKI

TESTAL,OOO(X)1OOB

JZK2

CALLDARK

JMPWait

KO:CALLALLlight

JMPWait

KI:CALLALLblink

JMPWait

K2:CALLONElightONE

JMPWait

;--------LED全部熄火-----------

DARKPROCs全14熄滅

MOVDX,PORT_C;端口C地址

MOVAL,OOOOOOOOB?PC0?3輸出低電平

OUTDX,AL■L0?3熄滅

RET

DARKENDP

?......................LIpInS仝"圖川<占高TL...........

ALLlightPROC;全部點亮

MOVDX,PORT_C;端口c地址

MOVAL,0000111IB;PCO?3輸出高電平

OUTDX,AL;L0~3發光

RET

ALLlightENDP

.________ipn仝制仇伙樂__________

ALLblinkPROC

MOVDX,PORT_C

MOVAL,0000111IB

OUTDX,AL

CALLDELAY

CALLDELAY

MOVAL.00000000B

OUTDX,AL

CALLDELAY

CALLDELAY

RET

ALLblinkENDP

;---------LED依次點亮-----------

ONElightONEPROC;依次點亮

MOVDX,PORT_C;端口C地址

MOVAL,()00000()IB;PCO輸出高電平

OUTDX,AL;L0發光

CALLDELAY;延時

MOVAL,00()00010B;點亮LI發光,延時

OUTDX,AL

CALLDELAY

MOVAL,00000100B;點亮L2發光,延時

OUTDX,AL

CALLDELAY

MOVAL,00001000B;點亮L3發光,延時

OUTDX,AL

CALLDELAY

RET

ONElightONEENDP

CODEENDS

ENDSTART

13、8255LED燈控制接口原理圖如下,假設8255端口地址為200H?203H,要求通過8255,利

用開關控制發光二極管。若開關S閉合,LED0?LED3點亮;當開關S斷開時,LEDO?LED3

熄滅。

圖28255LED燈控制接口原理圖

;-------完善段定義-----------------------

DATASEGMENT;數據段DATA定義開始

PORT.CONEQU203H;定義控制端口符號地址PORT_CON

PORT_AEQU200H;端口A符號地址

PORT_BEQU201H;端口B符號地址

DATAENDS:數據段DATA定義結束

CODESEGMENT:代碼段CODE定義開始

ASSUMEDS:DATA,CS:CODE;為段寄存器DS,CS指定段

Start:MOVAX,DATA;初始化數據段

MOVDS,AX

------初始化8255---------------------------------

MOVDX,PORT_CON;8255控制口地址送DX

_______MOVALJOOO()010B_______;A、B組方式0,PA口輸出,PB口輸入

_______OUTDX.AL______;輸出控制字到8255

;......查詢開關狀態,控制LED--.........

CHECK:MOVDX,PORT_B;B端口地址送DX

INAL,DX________;__讀PB端口數據到AL

TESTAL.01H—;判斷連接在PB0上的開關K是否閉合

JNZOPEN;若PBO=1,開關沒閉合,轉OPEN

CLOSE:MOVDX,PORT_A:否則PB()=0,開關閉合,送A端口地址給DX,

MOVAL.F0H_:PAO、PAI、PA2、PA3輸出低電平

OUTDX,AL;LED0?LED3點亮

JMPCHECK:無條件轉CHECK

OPEN:CALLLED_OFF:否則,調用子程序LED_OFF,LED熄滅

JMPCHECK;無條件轉CHECK

...............LED熄滅子程序................

LED_OFFPROC

MOVDX,PORTA________;把A端口地址送DX

MOVAL,00(

溫馨提示

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

評論

0/150

提交評論