匯編輸入輸出及中斷_第1頁
匯編輸入輸出及中斷_第2頁
匯編輸入輸出及中斷_第3頁
匯編輸入輸出及中斷_第4頁
匯編輸入輸出及中斷_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

輸入輸出和中斷程序設(shè)計中斷系統(tǒng)端口輸入輸出1.輸入過程輸入設(shè)備把數(shù)據(jù)送到接口,由CPU執(zhí)行輸入程序把接口中的數(shù)據(jù)讀入CPU,再根據(jù)需要放入存儲器或寄存器中。處理程序完成對數(shù)據(jù)的處理并將處理結(jié)果放入指定的寄存器或存儲器中。輸出過程CPU執(zhí)行輸出程序,將存儲器或寄存器中等待輸出的內(nèi)容送到輸出接口中,然后啟動輸出設(shè)備,將接口中的數(shù)據(jù)通過輸出設(shè)備輸出。輸入/輸出的基本條件連接CPU與外設(shè)的接口電路和相應(yīng)的軟件----驅(qū)動程序。輸入輸出2.微機(jī)端口通過總線與CPU相連的芯片除了存儲器外,還有以下3種芯片:(1)各種接口卡上的接口芯片.(獨立顯卡等)(2)主板上接口芯片,CPU通過它們對部分外

設(shè)進(jìn)行訪問.(USB,鍵盤、鼠標(biāo)接口)(3)其它芯片,用來存儲相關(guān)的系統(tǒng)信息,或

進(jìn)行相關(guān)的輸入輸出處理.(CMOS,BIOS)這些芯片都有一組可以被CPU讀寫的寄存器這些寄存器叫做端口。這些寄存器在物理上處于不同的芯片中,但它們都是與CPU的總線相連,CPU通過控制線向它們所在的芯片發(fā)出端口讀寫命令。3.端口每個接口由一組寄存器組成,這些寄存器都分配有一個稱為I/O端口的地址編碼。計算機(jī)的CPU和內(nèi)存就是通過這些端口和外部設(shè)備進(jìn)行通信的。4.I/O接口部件中一般有三種寄存器:1.用作數(shù)據(jù)緩沖的數(shù)據(jù)寄存器;2.用來保存設(shè)備和接口的狀態(tài)信息,供

CPU對外設(shè)進(jìn)行測試的狀態(tài)寄存器;3.用來保存CPU發(fā)出的命令,以控制接口和設(shè)備操作的控制寄存器。這些寄存器都分配有各自的端口號,CPU就是通過不同的端口號來選擇各種外部設(shè)備的。(端口地址)5.端口編址I/O端口編址一般分兩種方法:1.將I/O與內(nèi)存單元統(tǒng)一編址,其優(yōu)點是節(jié)省了輸入/輸出指令,但缺點是占用了內(nèi)存單元的有效地址空間;2.將I/O獨立編址。在80x86微機(jī)中,I/O端口編址在一個獨立的地址空間中6.端口的讀寫(CPU訪問端口)在訪問端口時,CPU通過端口地址(端口號)來定位端口。因為端口所在的芯片和CPU通過總線相連,所以端口地址和內(nèi)存地址一樣,通過地址總線來傳送。對端口的讀寫不能用mov,push,pop等指令。端口的讀寫指令只要兩條:in和out,分別用于從端口讀取數(shù)據(jù)和向端口寫入數(shù)據(jù)7.(1)

端口讀寫命令I(lǐng)N

和OUT例:INAL,20H;端口→CPU

OUT20H,AL;CPU→端口在IN和OUT指令中,只能用AX或AL寄存器來存放從端口讀入的數(shù)據(jù)或者要發(fā)到端口中的數(shù)據(jù)。訪問8位端口時用AL訪問16位端口時用AX。端口的讀寫8.(2)對0-255的端口進(jìn)行讀寫

inal,20h;從20h端口讀取一個字節(jié)

out20h,al;向20h端口寫入一個字節(jié)(3)對256-65535的端口進(jìn)行讀寫時,端口號放在dx中

movdx,3f8h;將端口號3f8h送入dxinal,dx;從3f8h端口讀入一個字節(jié)

outdx,al;向3f8h端口寫入一個字節(jié)端口的讀寫9.(4)inal,60h指令的CPU執(zhí)行過程①CPU通過地址線將地址信息60h發(fā)出.②CPU通過控制線發(fā)出端口讀命令,選中端口所在的芯片,并通知它,將要從中讀取數(shù)據(jù).③端口所在的芯片將60h端口中的數(shù)據(jù)通過數(shù)據(jù)線送入CPU.端口的讀寫10.對CMOSRAM的讀寫來體會對端口的訪問CMOSRAM芯片有一個128個存儲單元的RAM存儲器,其中0-0DH單元用來保存時間信息,其余大部分單元用于存放系統(tǒng)配置信息,供系統(tǒng)啟動時BIOS程序讀取。CMOSRAM芯片內(nèi)部有2個端口,端口地址為70h和71h。70h為地址端口,存放CPU要訪問的CMOS單元地址,71h為數(shù)據(jù)端口,存放從選定的CMOS單元中讀寫的數(shù)據(jù)。CMOSRAM芯片的讀寫11.對CMOSRAM的讀寫來體會對端口的訪問CMOSRAM芯片的讀寫其中0-0DH單元用來保存時間信息,其余大部分單元用于存放系統(tǒng)配置信息,供系統(tǒng)啟動時BIOS程序讀取。1個128個存儲單元的RAM存儲器2個端口(端口地址為70h和71h)70h為地址端口:存放CPU要訪問的CMOS單元地址;71h為數(shù)據(jù)端口:存放從選定的CMOS單元中讀寫的數(shù)據(jù)。CMOSRAM芯片12.例:讀CMOS的2號單元數(shù)據(jù),要分2步:

①將2送端口70h②從71h讀出2號單元的內(nèi)容

MOVAL,2

OUT70H,AL;將2送端口70h

INAL,71H

;從71h讀出2號單

元數(shù)據(jù)到AL寄存

器中13.例1、將CMOS中用BCD碼表示的月份,以十進(jìn)制的形式顯示到屏幕上。在CMOSRAM中,存放著當(dāng)前的時間:年,月,日,時,分,秒這6個信息的長度都是1個字節(jié),存放單元為:秒:0分:2時:4日:7月:8年:9這些數(shù)據(jù)是以BCD碼存放的14.15.例2.將CMOS中的時間信息存于MSG開始的內(nèi)存空間

leasi,msgmovdl,0jj:moval,dl;從CMOS中地址為0到9的單元內(nèi)容讀出

out70h,al;向70H端口寫入要訪問的單元地址

inal,71h;從數(shù)據(jù)端口71H取出指定單元的數(shù)據(jù)

mov[si],alincsiincdlcmpdl,09hjnajj16.中斷中斷信息任何一個通用的CPU都具備有一種能力,可以檢測到從CPU外部發(fā)送來或者內(nèi)部產(chǎn)生的一種特殊信息,并且可以立即對接收到的信息進(jìn)行處理。這種特殊的信息稱為:中斷信息中斷CPU不再接著向下執(zhí)行指令,而是轉(zhuǎn)去處理這個特殊信息。17.中斷中斷信息任何一個通用的CPU都具備有一種能力,可以檢測到從CPU外部發(fā)送來或者內(nèi)部產(chǎn)生的一種特殊信息,并且可以立即對接收到的信息進(jìn)行處理。這種特殊的信息稱為:中斷信息中斷CPU不再接著向下執(zhí)行指令,而是轉(zhuǎn)去處理這個特殊信息。18.中斷當(dāng)CPU的內(nèi)部有下面情況發(fā)生時,將產(chǎn)生中斷信息:(1)除法錯誤;比如div指令產(chǎn)生除法溢出(2)單步執(zhí)行(3)into溢出中斷(4)int指令對于不同的信息要進(jìn)行不同的處理,在處理前,CPU首先要知道,所接收到的中斷信息的來源,所以中斷信息中必須包含識別來源的編碼,即中斷類型碼:

(1)除法錯誤:0

(2)單步執(zhí)行:1

(3)執(zhí)行into指令:4

(4)執(zhí)行int指令:指令格式intn,n即為提供給cpu的中斷類型碼19.中斷處理中斷處理程序就是對中斷信息進(jìn)行處理的一段指令。CPU要執(zhí)行某個中斷處理程序必須獲得該程序的入口地址。因此必須在中斷信息(中斷類型號)與中斷處理程序入口地址間建立某種聯(lián)系。中斷向量表中斷向量表保存在內(nèi)存中,CPU用中斷類型碼,通過查找中斷向量表,就可以得到中斷處理程序的入口地址。0號中斷源對應(yīng)的中斷處理程序的入口地址1號中斷源對應(yīng)的中斷處理程序的入口地址2號中斷源對應(yīng)的中斷處理程序的入口地址....中斷向量表20.中斷向量表

即中斷類型號*4開始的4個單元存放著該類型號所對應(yīng)的中斷處理程序的入口地址,CS:IP

類型0中斷處理程序入口IP類型0中斷處理程序入口CS類型1中斷處理程序入口IP類型1中斷處理程序入口CS類型2中斷處理程序入口IP類型2中斷處理程序入口CS…………..00000H00001H00002H00003H00004H00005H00006H00007H00008H00009H0000AH0000BH………21.3、中斷過程中斷指令I(lǐng)NTn:(1)取中斷類型號n(2)標(biāo)志寄存器內(nèi)容入棧(保護(hù)標(biāo)志寄存器內(nèi)容)(3)當(dāng)前CS,IP入棧(4)禁止外部中斷(5)取(n*4)→IP,(n*4+2)→CS(6)轉(zhuǎn)去中斷處理程序中斷返回指令I(lǐng)RET:中斷處理程序的最后一條指令22.4、中斷處理程序與子程序相同點:都必須保存返回的斷點CS,IP不同點:①中斷處理程序需要保存標(biāo)志寄存器內(nèi)容.②中斷處理程序不允許再產(chǎn)生中斷.③中斷可以駐留內(nèi)存,不依賴于調(diào)用它的

程序.23.5、用戶中斷的設(shè)置(1)編寫中斷子程序(2)將程序傳送到指定空間(0:200H這個空間一般情況下為空)(3)設(shè)置中斷向量表,這個過程可以直接向中斷向量表寫數(shù)據(jù),也可以由DOS的AH=25,INT21H來完成24.6、BIOS和DOS的裝載過程:(1)開機(jī)后,CPU加電,初始化[CS]=0FFFFH,[IP]=0,自動從0FFFFH:0單元開始執(zhí)行程序。 0FFFFH:0處有一跳轉(zhuǎn)指令,轉(zhuǎn)去執(zhí)行BIOS中的硬件自檢和初始化程序(2)初始化程序?qū)IOS所支持的中斷例行程序的入口地址登記在中斷向量表中(程序是固化在ROM中)(3)硬件系統(tǒng)檢測和初始化完成后,調(diào)用INT19H進(jìn)行操作系統(tǒng)的引導(dǎo)(4)DOS啟動后,將DOS中斷例行程序裝入內(nèi)存,并建立中斷向量25.例:編寫、安裝中斷7ch的中斷例程,求一個字?jǐn)?shù)據(jù)的平方,AX中是要計算的數(shù)(0:200H這個空間一般情況下為空)26.例:編寫、安裝中斷7ch的中斷例程,求一個字?jǐn)?shù)據(jù)的平方,AX中是要計算的數(shù)codesegmentassumecs:codestart:;將中斷程序傳送到0:200處

movax,csmovds,axmovsi,offsetsqr;設(shè)置DS:SI指向源地址

movax,0moves,axmovdi,200h;設(shè)置ES:DI指向目的地址movcx,offsetsqrend-offsetsqr;設(shè)置CX為傳輸長度cldrepmovsb27.;設(shè)置中斷向量表,將程序的入口地址保存到7CH表項中

movax,0moves,axmovwordptres:[7ch*4],200hmovwordptres:[7ch*4+2],0movax,4c00hint21h;求平方的功能中斷程序sqr:mulaxiretsqrend:nopcodeendsendstart28.例4調(diào)用7CH中斷求ax的平方codesegmentassumecs:codestart:movax,3456

int

7ch

movah,4ch

int21hcodeendsendstart29.BIOS功能調(diào)用30.BIOS功能調(diào)用(課本P.241)BIOS(BasicInput/OutputSystem)BIOS是一組固化到計算機(jī)主板上的ROM芯片上的程序,它保存著計算機(jī)最重要的基本輸入輸出的程序、系統(tǒng)設(shè)置信息、開機(jī)后自檢程序和系統(tǒng)自啟動程序。其主要功能是為計算機(jī)提供最底層的、最直接的硬件設(shè)置和控制。。主要以中斷處理程序的形式提供I/O設(shè)備的處理程序和常用例行程序。表8.4

BIOS中斷調(diào)用表31.用戶程序和操作系統(tǒng)關(guān)系示意圖BIOS中斷程序處于DOS功能調(diào)用和硬件環(huán)境之間,和DOS功能調(diào)用相比其優(yōu)點是效率高,缺點是編程相對復(fù)雜。32.DOS系統(tǒng)功能調(diào)用

DOS系統(tǒng)功能調(diào)用和BIOS中斷調(diào)用

DOS操作系統(tǒng)或ROM-BIOS程序提供的一組子程序,用“INTN”指令調(diào)用。DOS系統(tǒng)功能調(diào)用:DOS操作系統(tǒng)提供,主要用于I/O設(shè)備管理、目錄及文件管理BIOS中斷調(diào)用:ROM提供,主要用于系統(tǒng)加電自檢、引導(dǎo)裝入初始化程序等。這些子程序給用戶編程帶來了方便,直接調(diào)用相應(yīng)的功能即可。33.DOS系統(tǒng)功能調(diào)用的步驟及實例最常用的:INT21H

21H為子程序的總?cè)肟?,進(jìn)入后可調(diào)用各種功能步驟:

1.設(shè)置入口參數(shù)

2.將功能號放入AH寄存器

3.使用指令I(lǐng)NT21H轉(zhuǎn)入子程序入口一般:2、3步必須有;1視情況而定34.BIOS中斷調(diào)用方法(1)設(shè)置分功能號。按實現(xiàn)的操作功能的要求,給指定寄存器(通常為AH)送入分功能號。(2)設(shè)置入口參數(shù)。按操作要求,給寄存器填寫相應(yīng)參數(shù)的內(nèi)容(某些調(diào)用無參數(shù))。(3)使用中斷語句INTn。執(zhí)行調(diào)用的功能,其中n為中斷號。(4)分析出口參數(shù)。如:

MOV AH,0 ;分功能號為0 MOVAL,10H;置入口參數(shù)

INT 1AH ;1AH為中斷號,功能為讀時間計數(shù)器的值35.顯示器中斷調(diào)用(10H中斷調(diào)用)DOS中斷和BIOS中斷存在同樣的功能如:打印機(jī)輸出一個字符的功能,可以用DOS中斷21h的功能5,可以用BIOS中斷17h的功能0.對BIOS和DOS調(diào)用的選擇原則是:無法使用DOS功能調(diào)用或者DOS沒有提供而BIOS提供了功能的情況下可以考慮使用BIOS中斷。如:有關(guān)顯示輸出的DOS功能調(diào)用不多而BIOS調(diào)用(INT10H)的功能很強(qiáng),主要包括設(shè)置顯示方式,設(shè)置光標(biāo)大小和位置,設(shè)置調(diào)色板號,顯示字符和顯示圖形等,見p249表8.5。36.設(shè)置顯示方式(0號功能)入口參數(shù):AH=0,AL=設(shè)置方式,見表8.6出口參數(shù):無設(shè)置光標(biāo)類型(1號功能)入口參數(shù):AH=1,CH=光標(biāo)開始行,CL=光標(biāo)結(jié)束行。出口參數(shù):無。根據(jù)CX給出光標(biāo)的大小。(要在純DOS下才能實現(xiàn)) movch,1movcl,3

movah,1

int10h顯示器中斷調(diào)用(10H中斷調(diào)用)37.設(shè)置光標(biāo)位置(2號功能)入口參數(shù):AH=2,BH=頁號,DH=行號,DL=列號.出口參數(shù):無.根據(jù)DX給出確定光標(biāo)的位置.在當(dāng)前光標(biāo)位置寫字符和屬性(9號功能)入口參數(shù):AH=9,BH=頁號,AL=字符的ASCII碼

BL=字符屬性,CX=寫入字符數(shù).出口參數(shù):無.在當(dāng)前光標(biāo)處,可連續(xù)寫CX個字符.

如何在某個位置顯示某些字符呢?38.例1:在第0頁(20,25)的位置顯示3個*

MOVBH,0;第0頁

MOVDH,20

MOVDL,25;坐標(biāo)MOVAH,2;設(shè)置光標(biāo)位置INT10H

MOVAL,'*';要顯示的字符MOVBH,0;第0頁MOVBL,0C3H;顏色MOVCX,3;字符個數(shù)MOVAH,9;功能調(diào)用-在光標(biāo)位置顯示字符INT10HMOVAH,4CHINT21H39.初始始窗口或向上滾動(6號功能)入口參數(shù):AH=6,AL=上滾行數(shù),CX=上滾窗口左上角的行、列號,DX=上滾窗口右上角的行、列號,BH=空白行的屬性.(例青底白字,BH=37h)出口參數(shù):

無.當(dāng)滾動后,頂部為空白輸入行.40.初始窗口或向下滾動(7號功能)入口參數(shù):AH=7,AL=下滾行數(shù),CX=下滾窗口左上角的行、列號,DX=下滾窗口右上角的行、列號,BH=空白行的屬性.出口參數(shù):

無.當(dāng)滾動后,底部為空白輸入行.

BH屬性見表8.7---表8.1041.例2.清屏幕的左半邊,呈反相顯示(白底黑字BH=70H),見P251,表8.9、8.10。

MOVAH,7

;下滾MOVAL,0

;行數(shù),0為全屏MOVBH,70H;屬性白底黑字MOVCH,0

;從0行0列開始MOVCL,0MOVDH,24;到24行39列為止MOVDL,39INT10H42.43.寫字符串到指定的頁面(功能號13H)入口參數(shù):ES:BP=要顯示字符串的地址CX=字符串的長度;DH=起始光標(biāo)行號,DL=列號;BH=頁號;AL=方式代碼;BL=屬性(例:紅底藍(lán)字,即BL=41h)結(jié)果:在屏幕的任意位置顯示彩色的字符串44.例4.用13h功能,在屏幕左上角顯示字符串45.moval,3;設(shè)置80×25彩色顯示模式movah,0int10hmov

溫馨提示

  • 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

提交評論