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

下載本文檔

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

文檔簡介

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

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

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

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

端口讀寫命令IN

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

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

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

out20h,al;向20h端口寫入一個字節(jié)(3)對256-65535的端口進行讀寫時,端口號放在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芯片內部有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號單元的內容

MOVAL,2

OUT70H,AL;將2送端口70h

INAL,71H

;從71h讀出2號單

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

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

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

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

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

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

(1)除法錯誤:0

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

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

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

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

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

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

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

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

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

int

7ch

movah,4ch

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

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

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

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

21H為子程序的總入口,進入后可調用各種功能步驟:

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

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

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

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

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

movah,1

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

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

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

MOVBH,0;第0頁

MOVDH,20

MOVDL,25;坐標MOVAH,2;設置光標位置INT10H

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

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

無.當滾動后,底部為空白輸入行.

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=起始光標行號,DL=列號;BH=頁號;AL=方式代碼;BL=屬性(例:紅底藍字,即BL=41h)結果:在屏幕的任意位置顯示彩色的字符串44.例4.用13h功能,在屏幕左上角顯示字符串45.moval,3;設置80×25彩色顯示模式movah,0int10hmov

溫馨提示

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

評論

0/150

提交評論