![BIOS和DOS中斷功能調(diào)用_第1頁](http://file4.renrendoc.com/view12/M0A/1D/30/wKhkGWYJfjyAPxpMAAGeO-zYKH0260.jpg)
![BIOS和DOS中斷功能調(diào)用_第2頁](http://file4.renrendoc.com/view12/M0A/1D/30/wKhkGWYJfjyAPxpMAAGeO-zYKH02602.jpg)
![BIOS和DOS中斷功能調(diào)用_第3頁](http://file4.renrendoc.com/view12/M0A/1D/30/wKhkGWYJfjyAPxpMAAGeO-zYKH02603.jpg)
![BIOS和DOS中斷功能調(diào)用_第4頁](http://file4.renrendoc.com/view12/M0A/1D/30/wKhkGWYJfjyAPxpMAAGeO-zYKH02604.jpg)
![BIOS和DOS中斷功能調(diào)用_第5頁](http://file4.renrendoc.com/view12/M0A/1D/30/wKhkGWYJfjyAPxpMAAGeO-zYKH02605.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第五節(jié)BIOS和DOS中斷功能調(diào)用(教材舊P238、新P239)
一、概述
1.BIOS和DOS中斷子程層次特點2.中斷類型分類3.調(diào)用方法二、BIOS功能調(diào)用1.設(shè)置顯示方式(10H類型,00H功能)2.置光標位置(10H類型,02H功能)3.清屏、清窗口(10H類型,06H或07H功能)三、
DOS系統(tǒng)功能調(diào)用(21H類型中斷調(diào)用)1.顯示單字符(02H功能)2.顯示字符串(09H功能)3.單字符輸入(01H、07H、08H功能)4.字符串輸入(0AH功能)5.檢測鍵盤狀態(tài)(0BH功能)6.保存中斷向量(35H功能)(第六章介紹)7.設(shè)置中斷向量(25H功能)1整理課件第五節(jié)BIOS和DOS中斷功能調(diào)用1整理課件復習內(nèi)容:P339~P247(新),P228~P246(舊)預內(nèi)容習:P110~P140(新),P106~P134(舊)作業(yè):1、預習實驗二其中:任務(wù)1、(2)(4),2必做,任務(wù)1、(1)(3)選做.實驗四
任務(wù)1,作為家庭作業(yè),在計算機上調(diào)通后,經(jīng)過教師檢查簽字2整理課件復習內(nèi)容:P339~P247(新),P228~P246(舊)2.編寫完整匯編語言程序,要求上機調(diào)試出來:(1)清屏,在10行5列上顯示“HelloChina!”(2)將0AH功能輸入的字符串,用09H功能顯示出來。在DOS下執(zhí)行,從鍵盤輸入‘123456789’回車,屏幕上能顯示‘HelloWorld!’嗎?為什么? 用在DEBUG下查看到的data段的內(nèi)容來說明。3.問題回答下面程序,匯編連接后3整理課件2.編寫完整匯編語言程序,要求上機調(diào)試出來:在maxDB11,?,4DUP(?)dataSEGMENTstringDB‘HelloWorld!’,’$’dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置緩沖區(qū)地址于DS:DXMOVDS,AXLEADX,maxMOVAH,0AH;調(diào)用0AH輸入功能INT21HLEADX,stringMOVAH,09H;調(diào)用09H顯示功能INT21HMOVAH,4CHINT21H;返回DOScodeENDSENDstart4整理課件maxDB11,?,4DUP(?)d第三節(jié)BIOS和DOS中斷功能調(diào)用(教材舊P238、新P239)
一、概述
二、BIOS功能調(diào)用三、
DOS系統(tǒng)功能調(diào)用(21H類型中斷調(diào)用)5整理課件第三節(jié)BIOS和DOS中斷功能調(diào)用5整理一、概述1.BIOS和DOS中斷子程層次特點2.中斷類型分類3.調(diào)用方法6整理課件一、概述6整理課件1.BIOS和DOS中斷子程層次特點用戶程序磁盤管理模塊(DOS內(nèi)核)MSDOS.SYS系統(tǒng)功能基本輸入/輸出BIOS模塊IO.SYS設(shè)備驅(qū)動ROMBIOS基本I/O系統(tǒng)硬件裝入命令處理模塊COMMAND.COM用戶命令DOS系統(tǒng)層次結(jié)構(gòu)7整理課件1.BIOS和DOS中斷子程層次特點用戶程序磁盤管理模塊(D層次特點:ROMBIOS中的中斷子程使用IN/OUT指令直接控制外設(shè),實現(xiàn)與外設(shè)之間的輸入/輸出操作,以軟件形式向其上層提供服務(wù)。IO.SYS中的中斷子程(稱基本輸入/輸出BIOS模塊)
調(diào)用ROMBIOS的基本I/O功能,向MSDOS.SYS提供設(shè)備驅(qū)動服務(wù)。用戶程序磁盤管理模塊(DOS內(nèi)核)MSDOS.SYS系統(tǒng)功能基本輸入/輸出BIOS模塊IO.SYS設(shè)備驅(qū)動ROMBIOS基本I/O系統(tǒng)硬件裝入命令處理模塊COMMAND.COM用戶命令8整理課件層次特點:用戶程序磁盤管理模塊(DOS內(nèi)核)基本輸入MSDOS.SYS中的中斷子程(稱DOS內(nèi)核模塊)調(diào)用IO.SYS,實現(xiàn)對外設(shè)的控制。與標準外設(shè)有兩層隔離:IO.SYS和ROMBIOS。其中21H類型的中斷子程提供了豐富的系統(tǒng)服務(wù),稱21類型的中斷調(diào)用為DOS系統(tǒng)(功能)調(diào)用。用戶程序磁盤管理模塊(DOS內(nèi)核)MSDOS.SYS系統(tǒng)功能基本輸入/輸出BIOS模塊IO.SYS設(shè)備驅(qū)動ROMBIOS基本I/O系統(tǒng)硬件裝入命令處理模塊COMMAND.COM用戶命令9整理課件MSDOS.SYS中的中斷子程用戶程序磁盤管理模塊(DO用戶編程原則①盡可能使用DOS的系統(tǒng)功能調(diào)用,提高程序可移植性。②在DOS功能不能實現(xiàn)情況下,考慮用BIOS功能調(diào)用。③在DOS和BIOS的中斷子程不能解決問題時,使用IN/OUT指令直接控制硬件。用戶程序磁盤管理模塊(DOS內(nèi)核)MSDOS.SYS系統(tǒng)功能基本輸入/輸出BIOS模塊IO.SYS設(shè)備驅(qū)動ROMBIOS基本I/O系統(tǒng)硬件裝入命令處理模塊COMMAND.COM用戶命令10整理課件用戶編程原則用戶程序磁盤管理模塊(DOS內(nèi)核)基本輸入/輸2.中斷類型分類向量表中的中斷類型分為七類:①處理CPU特殊操作(除0、溢出)的00H、04H類型。②
為DEBUG調(diào)試程序設(shè)置的單步(01H)、斷點(03H)類型。③
處理CPU的NMI引腳信號的02H類型。非屏蔽硬中斷子程④
處理CPU的INTR引腳信號的08~0FH類型??善帘晤愋陀仓袛嘧映挞?/p>
用INT指令調(diào)用的中斷子程
BIOS功能調(diào)用(如10~1AH)DOS功能調(diào)用(如21H)NMIINTR808811整理課件2.中斷類型分類NMIINTR11整理課件⑥
保留類型為DOS系統(tǒng)保留
1)指現(xiàn)在未用到,以后系統(tǒng)可能會用到。
2)已用到,但不向用戶公開。為用戶保留
1)被系統(tǒng)子程嵌套調(diào)用了的類型(如1BH、1CH)。使用戶在系統(tǒng)功能基礎(chǔ)上擴充功能。
2)系統(tǒng)未占用類型(如60H~67H)。⑦非中斷向量類型對應(yīng)向量表中的4個單元存放的不是中斷向量。(如1DH、1EH、1FH、41H、46H、22H)通常是一些參數(shù)表的地址信息.12整理課件⑥保留類型12整理課件
中斷向量分配表13整理課件中斷向量分配表13整理課件14整理課件14整理課件15整理課件15整理課件3.調(diào)用方法設(shè)置入口參數(shù)在AH設(shè)置功能號m執(zhí)行中斷指令I(lǐng)NTN分析、應(yīng)用出口參數(shù)16整理課件3.調(diào)用方法設(shè)置入口參數(shù)在AH設(shè)置功能號m執(zhí)行中斷指令I(lǐng)N例1單字符顯示功能調(diào)用MOVDL,‘A’;設(shè)置入口參數(shù)MOVAH,02H;設(shè)置功能號INT21H;執(zhí)行中斷調(diào)用
例2單字符輸入功能調(diào)用MOVAH,01H;設(shè)置功能號
INT21H;執(zhí)行中斷調(diào)用CMPAL,0DH;分析、應(yīng)用出口參數(shù)JZexit、、、17整理課件例1單字符顯示功能調(diào)用17整理課件二、BIOS功能調(diào)用基本輸入/輸出模塊BIOS:實現(xiàn)對輸入/輸出設(shè)備的控制,內(nèi)含0–1CH等類型中斷子程,包括顯示器、磁盤、鍵盤、打印機等標準外設(shè)的驅(qū)動程序。(參看中斷類型分配表)
BIOS功能調(diào)用指對BIOS模塊中的中斷子程的調(diào)用。18整理課件二、BIOS功能調(diào)用18整理課件有關(guān)顯示器①顯示器通過顯卡(顯示適配器)連接到計算機上。②單色顯示器只能顯示黑白兩色。彩色顯示器能顯示多種顏色。19整理課件有關(guān)顯示器19整理課件③屏幕上各象素的顯示信息,存放在顯示緩沖區(qū)(顯存)中。640KBRAM基本內(nèi)存0000:00000040:00000050:00000070:0000
A000:0000B000:0000
C800:0000F600:0000FE00:0000FE00:1FFF顯示緩存區(qū)(顯存)硬盤驅(qū)動器控制ROM32KBROMBASIC8KBROMBIOSIO.SYS模塊COMMAND.COM常駐模塊MSDOS.SYS模塊用戶程序空間COMMAND.COM暫駐模塊256KBROMDOS工作區(qū)ROMBIOS工作區(qū)128KBRAM保留區(qū)1KB中斷向量表20整理課件③屏幕上各象素的顯示信息,存放在顯示緩沖區(qū)(顯存)中。64④顯示器有兩種顯示方式:
圖形方式:將屏幕劃分為m×n的點陣,在每個點的位置顯示象素,一個點是一個象素。文本方式將屏幕劃分為若干行和列,在每個網(wǎng)格位置上顯示象素,一個字符是一個象素。21整理課件④顯示器有兩種顯示方式:圖形方式:文本方式21整理課件文本方式將屏幕劃分為m列和n行(m×n),在每個網(wǎng)格位置上顯示象素,一個字符是一個象素。80×25文本方式A~~~~~~~~~~~~~~~~0列0行79列24行BC22整理課件文本方式80×25文本方式A~~~~~~~~~~~~~~~~~~~640×480圖形方式640點480點圖形方式:將屏幕劃分為m×n的點陣,在每個點的位置顯示象素,一個點是一個象素。23整理課件~~~~640×480圖形方式640點480點圖形方式:在文本方式下,對應(yīng)屏幕上的每個字符,在顯示緩沖區(qū)中占用兩個單元:一個存放ASCII碼,一個存放顯示屬性。41H07H42H07H61H70H62H70H、、、顯示緩沖區(qū)(顯存)字符A,黑底白字字符B,黑底白字字符a,白底黑字字符b,白底黑字24整理課件在文本方式下,41H07H42H07H61H70H62H70例10000111B或87H表示黑底白字,閃爍
01110000B或70H表示白底黑字,不閃爍16種0000黑1000灰
0010綠1010淺綠0100紅1100淺紅0111灰白1111白BLRGBIRGB閃爍背景前景765432108種000黑010綠
100紅111白0不閃爍1閃爍屬性字節(jié)的含義:25整理課件16種BLRGBIRGB閃爍背景前景76543210屬性字節(jié)
據(jù)顯存大小,可存儲若干頁的字符象素。
例16KB顯存能存儲:80×25方式,4頁(0~3),80×25×2×4=1600040×25方式,8頁(0~7),40×25×2×8=1600026整理課件據(jù)顯存大小,可存儲若干頁的字符象素。26整理課件1.設(shè)置顯示方式入口參數(shù)AL=顯示方式值
0040×25黑白文本方式
0140×25彩色文本方式
0280×25黑白文本方式
0380×25彩色文本方式
04320×320彩色圖形方式功能號
AH=00H類型號
10H出口參數(shù)無實現(xiàn)功能將顯示方式設(shè)置為指定形式例將顯示方式設(shè)置為80×25彩色文本方式MOVAL,03HMOVAH,00
INT10H27整理課件1.設(shè)置顯示方式入口參數(shù)AL=顯示方式值例2.
清屏、清窗口功能入口參數(shù)AL=0CH=窗口左上角行號CL=窗口左上角列號DH=窗口右下角行號DL=窗口右下角列號BH=窗口屬性功能號
AH=06H或AH=07H類型號
10H出口參數(shù)無實現(xiàn)功能按給定屬性清除指定的窗口內(nèi)容28整理課件2.清屏、清窗口功能入口參數(shù)AL=028整例清除屏幕顯示,將其屬性置為反白(白底黑字)顯示。MOVAL,0;清屏功能MOVBH,70H;白底黑字MOVCH,0;左上角行號MOVCL,0;左上角列號MOVDH,24;右下角行號MOVDL,79;右下角列號MOVAH,6;功能號INT10H;中斷調(diào)用29整理課件例清除屏幕顯示,將其屬性置為反白(白底黑字)顯示。23.置光標位置光標控制開始顯示的位置,計算機有專門的硬件控制光標的顯示大小、位置。光標只在文本方式中出現(xiàn),在圖形方式下光標消失。~~~~~~~~~~~~~~~~0列0行79列24行5列1列1行2行30整理課件3.置光標位置~~~~~~~~~~~~~~~~0列0行79置光標位置入口參數(shù)DH=行號DL=列號BH=頁號
功能號
AH=02H
類型號
10H
出口參數(shù)無
實現(xiàn)功能將光標設(shè)置在指定的位置31整理課件置光標位置31整理課件例將光標設(shè)置在2行5列的位置MOVDH,2MOVDL,5MOVBH,0MOVAH,2INT10H~~~~~~~~~~~~~~~~0列0行79列24行5列1列1行2行32整理課件例將光標設(shè)置在2行5列的位置~~~~~~~~~~~~三、DOS系統(tǒng)功能調(diào)用(21H類型中斷調(diào)用)1.顯示單字符(02H功能)2.顯示字符串(09H功能)3.單字符輸入(01H、07H、08H功能)4.字符串輸入(0AH功能)5.檢測鍵盤狀態(tài)(0BH功能)6.保存中斷向量(35H功能)(第六章介紹)7.設(shè)置中斷向量(25H功能)33整理課件三、DOS系統(tǒng)功能調(diào)用(21H類型中斷調(diào)用)33整理課件1.顯示單字符(02H功能)
入口參數(shù)DL=要顯示字符的ASCII碼功能號
AH=02H類型號
INT21H出口參數(shù)無實現(xiàn)功能顯示指定字符,光標隨動。例顯示字符AMOVDL,‘A’MOVAH,02HINT21H34整理課件1.顯示單字符(02H功能)例例使光標回到下一行的行首。MOVDL,0DH
;顯示回車符MOVAH,02HINT21HMOVDL,0AH
;顯示換行符MOVAH,02HINT21H~~~~~~~~~~~~~~~~HelloWorld
35整理課件例使光標回到下一行的行首。~~~~~~~~~~~~~2.顯示字符串(09H功能)入口參數(shù)①定義要顯示的字符串,
字符串尾應(yīng)為’$’,作為結(jié)束顯示的標志。②DS:DX=字符串的首地址功能號
AH=09H類型號
21H出口參數(shù)無實現(xiàn)功能顯示字符串,遇’$’停止顯示,光標隨動。36整理課件2.顯示字符串(09H功能)36整理課件例編程顯示字符串’TsinghuaUniversity’dataSEGMENT
;定義顯示的子符串striDB‘TsinghuaUniversity’,‘$’dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data
;置緩沖區(qū)地址于DS:DXMOVDS,AXLEADX,stri
MOVAH,09H;調(diào)顯示功能
INT21HMOVAH,4CH;返回DOS
INT21HcodeENDS
ENDstart37整理課件例編程顯示字符串’TsinghuaUnive有關(guān)鍵盤①鍵盤通過鍵盤接口電路與計算機連接。②鍵盤上的鍵有三種類型:字符鍵A~Z,0~9等功能鍵F1~F12,PageUp等組合控制鍵Shift,Ctrl,Alt等③
鍵盤上的每個鍵都有一個掃描碼。◢◢據(jù)掃描碼可確定操作的是哪個鍵、是按下鍵還是釋放鍵;◢◢掃描碼用一個字節(jié)表示。低7位是掃描碼的數(shù)字編碼,與鍵盤上的鍵一一對應(yīng);最高位D7位表示鍵的操作狀態(tài):當按下鍵時,D7=0;當釋放鍵時,D7=138整理課件有關(guān)鍵盤③鍵盤上的每個鍵都有一個掃描碼。38整理課件⑤
鍵盤中斷子程功能(09H類型中斷子程)
◢從鍵盤接口讀取操作鍵的掃描碼;
◢將掃描碼轉(zhuǎn)換成字符碼;大部分鍵的字符碼為ASCII碼,無ASCII碼鍵(如組合鍵Shift、Ctrl等)的字符碼為0。◢將鍵的掃描碼、字符碼存放在鍵盤緩沖區(qū),供其它有關(guān)鍵盤的中斷子程應(yīng)用。④鍵盤接口對按下鍵和釋放鍵均向計算機發(fā)出中斷申請,如果中斷響應(yīng)條件滿足,CPU轉(zhuǎn)去執(zhí)行鍵盤中斷子程。
鍵盤中斷子程類型號為09H。39整理課件⑤鍵盤中斷子程功能(09H類型中斷子程)④鍵盤接口對按3.單字符輸入(01H、07H、08H功能)①入口參數(shù)無
功能號
AH=01H
類型號
21H
出口參數(shù)AL=鍵入字符的ASCII碼
實現(xiàn)功能
等待從鍵盤輸入一個字符,并在屏幕上回顯,光標移動,檢測Ctrl-Break鍵40整理課件3.單字符輸入(01H、07H、08H功能)40整理課例利用鍵盤輸入的字符產(chǎn)生分支:MOVAH,1;等待從鍵盤輸入INT21H
CMPAL,‘Y’
;是’Y’?JZyes
CMPAL,‘y’
;是’y’?
JZyesno:......JMPexityes:......exit:...41整理課件例利用鍵盤輸入的字符產(chǎn)生分支:41整理課件例在中斷向量表中查找從鍵盤輸入的字符,并將其個數(shù)用二進制形式顯示出來。(scanskey.asm)codeSEGMENT;代碼段開始ASSUMECS:codebegin:MOVAX,0000H;設(shè)置查找首地址MOVDS,AXMOVSI,0000HMOVCX,0400H;設(shè)置查找長度MOVBX,0;計算值初值
MOVAH,01H;從鍵盤輸入
INT21H;輸入關(guān)鍵字
MOVDL,AL;保存在DL中next:LODSB;從串取CMPAL,DL;與關(guān)鍵字比較JNZpointINCBX;計算值加1point:LOOPnext;查找結(jié)束?CALLdisplay;調(diào)用顯示子程MOVAH,4CH;調(diào)用4CH功能INT21H;返回DOS;用二進制顯示BX內(nèi)容子程displayPROCMOVCX,16;顯示位數(shù)rotate:ROLBX,1MOVDL,BLANDDL,01HADDDL,30HMOVAH,2HINT21HLOOProtateRET;子程返回displayENDPcodeENDS;代碼段結(jié)束ENDbegin42整理課件例在中斷向量表中查找從鍵盤輸入的字符,co②入口參數(shù)無功能號
AH=07H類型號
21H出口參數(shù)AL=鍵入字符的ASCII碼實現(xiàn)功能
等待從鍵盤輸入一個字符,不在屏幕上回顯,不檢測Ctrl-Break鍵43整理課件②入口參數(shù)無43整理課件例用不帶回顯功能輸入密碼時:input:MOVAH,07H
;等待從鍵盤輸入
INT21HMOV[DI],AL;存入緩沖區(qū)
CMPAL,0DH;是回車符?JNZinput;不是,繼續(xù)輸入check:、、、、、、44整理課件例用不帶回顯功能輸入密碼時:44整理課件4.字符串輸入(0AH功能)
入口參數(shù)DS:DX=緩沖區(qū)的首地址(DS:DX)=限制最多輸入的字符數(shù)
功能號
AH=0AH
類型號
21H
出口參數(shù)(DS:DX+1)=實際鍵入的字符(不含回車符)從(DS:DX+2)開始順序存放鍵入的字符串,回車符0DH為串尾最后一字符。
實現(xiàn)功能等待從鍵盤輸入字符串,并存入設(shè)定的緩沖區(qū)內(nèi),同時回顯字符串,光標隨著移動,回車符使光標回到行首。
注意事項:應(yīng)按要求先定義緩沖區(qū),再調(diào)用。45整理課件4.字符串輸入(0AH功能)45整理課件例應(yīng)用0AH功能輸入字符串。dataSEGMENT;定義緩沖區(qū)maxDB11;定義限制最多輸入個數(shù)lenthDB?;用于存放實際輸入個數(shù)striDB11DUP(?);用于存放輸入的字符串dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置緩沖區(qū)地址于DS:DXMOVDS,AXLEADX,max
MOVAH,0AHINT21H;調(diào)0A輸入功能
MOXCH,0MOVCL,lenth;取字符串長度放CX中
LEABX,stri;取字符串首址于BX中MOVAL,[BX];應(yīng)用輸入字符、、、、、codeENDS46整理課件例應(yīng)用0AH功能輸入字符串。dataSdataSEGMENT;定義緩沖區(qū)maxDB11;定義限制最多輸入個數(shù)lenthDB?;用于存放實際輸入個數(shù)striDB11DUP(?);用于存放輸入的字符串dataENDS從鍵盤輸入‘ABCD’,回車,內(nèi)存的存放結(jié)果:0B04414243440D00max07000000000000000080a0b0f12345690c0d0elenthstri地址內(nèi)容DS:DX47整理課件dataSEGMENT;定義緩沖如下編程與上例相同:dataSEGMENT
maxDB11等價于:
DB?
maxDB11,?,11DUP(?)
DB11DUP(?)dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置緩沖區(qū)地址于DS:DXMOVDS,AXLEADX,max
MOVAH,0AH;調(diào)輸入功能
INT21H
MOXCH,0MOVCL,max+1;取字符串長度放CX中
LEABX,max+2;取字符串首址于BX中MOVAL,[BX];應(yīng)用輸入字符、、、codeENDS48整理課件如下編程與上例相同:dataSEGMENTdataSEGMENTmaxDB11DB?DB11DUP(?)dataENDS從鍵盤輸入‘ABCD’,回車,內(nèi)存的存放結(jié)果:等價于maxDB11,?,11DUP(?)0B04414243440D00max07000000000000000080a0b0f12345690c0d0e地址內(nèi)容DS:DX49整理課件dataSEGMENT等價于0B044142434400AH功能執(zhí)行過程:①若(DS:DX)字節(jié)單元的值為0,則不等待從鍵盤輸入,結(jié)束調(diào)用。②若(DS:DX)字節(jié)單元的內(nèi)容大于0,則等待從鍵盤輸入,并把輸入鍵的ASCII碼順序存放在DS:DX+2開始的單元,按回車鍵表示結(jié)束輸入。當按下鍵的個數(shù)超過(DS:DX)中值,發(fā)出警告聲’嘟嘟’,不再接收輸入的數(shù)據(jù),直到輸入回車鍵。③將實際輸入的字符個數(shù)(不包括回車鍵)填入(DS:DX+1),結(jié)束調(diào)用。DS:DX0000000000000000000000000000000050整理課件0AH功能執(zhí)行過程:DS:DX0000000000000000AH功能注意事項:◢輸入的字符均帶回顯,且光標隨字符移動。當輸入回車符結(jié)束時,也回顯回車符。表現(xiàn)為功能調(diào)用結(jié)束后,光標回到了行首。◢
回車符0DH作為一個輸入的字符存放在字符串尾,但計數(shù)輸入個數(shù)時,不包括回車鍵。實際最多能輸入的字符數(shù)=限制的最多數(shù)-1(回車符占一個)◢
執(zhí)行完0AH功能后,DS和DX的值不變,DS:DX仍指向緩沖區(qū)的首地址。◢
整個緩沖區(qū)的大小應(yīng)為:限制的最多數(shù)+2maxDB11,?,11dup(?)51整理課件0AH功能注意事項:51整理課件例利用DEBUG查看0A功能輸入結(jié)果。dataSEGMENTmaxDB11,?,11DUP(?)dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置緩沖區(qū)地址于DS:DXMOVDS,AXLEADX,max
MOVAH,0AH;調(diào)輸入功能
INT21H
MOVCH,0MOVCL,max+1;取輸入長度到CX中MOVAH,4CH;返回DOSINT21HcodeENDSENDstart52整理課件例利用DEBUG查看0A功能輸入結(jié)果。dataD:\MASM>DEBUGTEST0a.exe
;裝入執(zhí)行文件-U
;反匯編程序
129E:0000B89D12MOVAX,129D129E:00038ED8MOVDS,AX129E:00058D160000LEADX,[0000]129E:0009B40AMOVAH,0A129E:000BCD21INT21129E:000DB500MOVCH,00129E:000F8A0E0100MOVCL,[0001]129E:0013B44CMOVAH,4C129E:0015CD21INT21、、、-D129D:0L10
;查看程序執(zhí)行前緩沖區(qū)內(nèi)容
129D:00000B00000000000000-0000000000000000-G
000D
;執(zhí)行程序
Hello
;從鍵盤輸入字符串
Programterminatednormally-D129D:0L10
;查看程序執(zhí)行后緩沖區(qū)內(nèi)容
129D:00000B
05
48656C6C6F0D-0000000000000000..Hello-53整理課件D:\MASM>DEBUGTEST0a.exe思考:1.若將程序改為如下形式,設(shè)想程序執(zhí)行的結(jié)果。dataSEGMENTmaxDB100HDUP(?)dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置緩沖區(qū)地址于DS:DXMOVDS,AXLEADX,max
MOVAH,0AH;調(diào)輸入功能INT21HMOVAH,4CH;返回DOSINT21HcodeENDSENDstart54整理課件思考:dataSEGMENT54整結(jié)果是:不等待輸入,結(jié)束0AH功能調(diào)用。0000000000000000max07000000000000000080a0b0f12345690c0d0e地址內(nèi)容DS:DX注意:由于DS:DX限制輸入最大字符數(shù)為0,
所以不等待輸入,結(jié)束0AH功能調(diào)用。原因是:55整理課件結(jié)果是:不等待輸入,結(jié)束0AH功能調(diào)用。00000000002.若將程序改為如下形式,設(shè)想程序執(zhí)行的結(jié)果。dataSEGMENTmaxDW100H,?,100HDUP(?);定義為字類型dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置緩沖區(qū)地址于DS:DXMOVDS,AXLEADX,max
MOVAH,0AH;調(diào)輸入功能INT21HMOVAH,4CH;返回DOSINT21HcodeENDSENDstart56整理課件2.若將程序改為如下形式,設(shè)想程序執(zhí)行的結(jié)果。data結(jié)果是:不等待輸入,結(jié)束0AH功能調(diào)用。0001000000000000max07000000000000000080a0b0f12345690c0d0e地址內(nèi)容DS:DX注意:0AH功能以字節(jié)類型應(yīng)用DS:DX指向的緩沖區(qū)。并不隨緩沖區(qū)類型定義的變化而變化。原因是:57整理課件結(jié)果是:不等待輸入,結(jié)束0AH功能調(diào)用。0001000000例編程從鍵盤輸入字符串,給出顯示提示’Pleaseinput:’dataSEGMENTstriDB‘PleaseInput:’,’$’maxDB11,?,11DUP(?)dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置緩沖區(qū)地址于DS:DXMOVDS,AXLEADX,striMOVAH,09H;顯示提示INT21HLEADX,max;等待從鍵盤輸入MOVAH,0AHINT21HMOVAH,4CHINT21HcodeENDSENDstart利用DOS功能調(diào)用,編寫小程序58整理課件例編程從鍵盤輸入字符串,給出顯示提示’PleaseiD:\MASM>DEBUGe0a09.exe-U
;查看程序129F:0000B89D12MOVAX,129D129F:00038ED8MOVDS,AX129F:00058D160000LEADX,[0000]129F:0009B409MOVAH,09129F:000BCD21INT21129F:000D8D160F00LEADX,[000F]129F:0011B40AMOVAH,0A129F:0013CD21INT21129F:0015B44CMOVAH,4C129F:0017CD21INT21-D129D:0L20
;執(zhí)行程序前查看data段內(nèi)容129D:0000506C656173652049-6E707574203A240B
PleaseInput:$.129D:00100000000000000000-0000000000000000
-G
;執(zhí)行程序
PleaseInput:Hello!Programterminatednormally-D129D:0L20
;執(zhí)行程序后查看data段內(nèi)容
129D:0000506C656173652049-6E707574203A24
0BPleaseInput:$.129D:00100648656C6C6F210D-0000000000000000.Hello!-59整理課件D:\MASM>DEBUGe0a09.exe59整理data段內(nèi)存情況:striPlease
Input:$0B06Hello!0D0000000000000000max60整理課件data段內(nèi)存情況:striPleaseInput:$0B思考:程序中少了一個’$’符的后果。dataSEGMENTstriDB‘PleaseInput:’maxDB11,?,11DUP(?)dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置緩沖區(qū)地址于DS:DXMOVDS,AXLEADX,striMOVAH,09H;顯示提示INT21HLEADX,max;等待從鍵盤輸入MOVAH,0AHINT21HMOVAH,4CHINT21HcodeENDSENDstart61整理課件思考:程序中少了一個’$’符的后果。datadataSEGMENTstriDB‘PleaseInput:’maxDB11,?,11DUP(?)dataENDSstriPlease
Input:0B0000000000000000000000000000000000maxB8A8128ED88D160000B409CD218D160Estart注意:09H功能只在遇到’$’符才結(jié)束顯示。62整理課件dataSEGMENTstriPleas5.檢測鍵盤狀態(tài)(0BH功能)入口參數(shù)無功能號AH=0BH類型號21H出口參數(shù)AL=FFH,表示有鍵按下。AL=0,表示無鍵按下。實現(xiàn)功能檢測鍵盤狀態(tài)(通過檢測鍵盤緩沖區(qū)實現(xiàn))63整理課件5.檢測鍵盤狀態(tài)(0BH功能)63整理課件例利用0B功能實現(xiàn)按鍵退出循環(huán)。、、continue:、、、、、、
MOVAH,0BH;檢測鍵盤緩沖區(qū)是否有鍵按下
INT21HCMPAL,0FFH
JNZcontinue;無鍵按下繼續(xù)循環(huán)、、、、MOVAH,4CHINT21H64整理課件例利用0B功能實現(xiàn)按鍵退出循環(huán)。64整理課件6.保存中斷向量(35H功能)入口參數(shù)AL=要保存向量的中斷類型號N功能號AH=35H類型號21H
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國日式醬油數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國手工滴定儀數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國3-甲基黃酮-8-羧酸數(shù)據(jù)監(jiān)測研究報告
- 2025年中國塑料鏡片拋光劑市場調(diào)查研究報告
- 2025年輕紡機械襯套項目可行性研究報告
- 2025至2030年中國雙軸玻璃鋼管纏繞機數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國包銅箱數(shù)據(jù)監(jiān)測研究報告
- 2025年中國計算機數(shù)據(jù)信號電涌保護器市場調(diào)查研究報告
- 2025年中國牙膏蠟市場調(diào)查研究報告
- 創(chuàng)意產(chǎn)業(yè)對城市社區(qū)的影響和改造考核試卷
- 2024年湖南省普通高中學業(yè)水平考試政治試卷(含答案)
- 零售企業(yè)加盟管理手冊
- 設(shè)備維保的維修流程與指導手冊
- 招標代理服務(wù)的關(guān)鍵流程與難點解析
- GB/T 5465.2-2023電氣設(shè)備用圖形符號第2部分:圖形符號
- 材料預定協(xié)議
- 2023年河北省中考數(shù)學試卷(含解析)
- 《學習的本質(zhì)》讀書會活動
- 高氨血癥護理課件
- 物流營銷(第四版) 課件 胡延華 第3、4章 物流目標客戶選擇、物流服務(wù)項目開發(fā)
- 《石油化工電氣自動化系統(tǒng)設(shè)計規(guī)范》
評論
0/150
提交評論