版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
5.3字符串輸入輸出方法
5.3.1字符串輸出
【入口參數(shù)】AH=9,是DOS的子功能號
DS:DX=待輸出字符串的首字符的邏輯地址
【說明】
(1)被輸出的字符串的長度不限,但必須連續(xù)存放在內(nèi)存的某個地方,且以ASCII值為24H的字符'$'結(jié)束,中間可以含有回車符、換行符、響鈴符等特殊功能符號,存放字符串的起始邏輯地址必須放在指定的寄存器DS和DX中。匯編源程序——字符串輸入輸出
(2)‘$’符本身不輸出到屏幕。(3)調(diào)用結(jié)果是把字符串中的各個字符從光標當前所在位置起,依次顯示在屏幕上,直至遇到‘$’為止,光標停在最后一個輸出符號的后面。(4)如果程序中需要輸出‘$’,只能用2號子功能實現(xiàn)。(5)9號子功能調(diào)用將影響AL的內(nèi)容,不改變其余寄存器及標志寄存器的值。匯編源程序——字符串輸入輸出【例5.5】分析下面的程序,寫出程序執(zhí)行后的結(jié)果。
dataSEGMENTbuf1DB'Hello,',13,10,'thisisanexample.$',13,10buf2DB'--END--$'dataENDScodeSEGMENTASSUMECS:code,DS:datamain:MOVAX,dataMOVDS,AX匯編源程序——字符串輸入輸出LEADX,[buf1]MOVAH,9INT21HMOVDX,OFFSETbuf2INT21HMOVAX,4C00HINT21HcodeENDSENDmain【解】執(zhí)行結(jié)果如下:
Hello,thisisanexample.--END--匯編源程序——字符串輸入輸出
分析一下例5.5的程序:(1)程序包括兩個段,data段中只有變量定義,是數(shù)據(jù)段,code段中是指令序列,是代碼段。(2)ASSUME偽指令只用來說明code段中定義的各標識符(實際只有標號main)以CS為缺省段寄存器,data段中的各標識符(兩個變量)以DS為缺省段寄存器。ASSUME偽指令本身并沒有對CS和DS賦值的功能,所以代碼段的最前面兩條指令就是用來對DS賦值,因為后面的字符串輸出要求把輸出串的段地址放到DS中。匯編源程序——字符串輸入輸出
(3)?程序中沒有類似的指令對CS賦值。這是因為操作系統(tǒng)DOS把該程序調(diào)進內(nèi)存后,會把機器的控制權(quán)交給該程序,這是通過修改CS和IP的值的方法實現(xiàn)的。也就是說,DOS在移交控制權(quán)時就已經(jīng)把CS和IP都放好了正確的值,而不需要用戶程序進行處理。(4)程序中的第1次INT21H調(diào)用前,用LEA指令把變量buf1的偏移地址取到寄存器DX中,用MOV指令把AH賦值為子功能號9,而在此之前DS已被賦值為buf1所在的data段的段地址。(5)變量buf1中的第1個字符是字母'H',9號子功能從該字母開始,逐個顯示后續(xù)字符,遇到13和10分別進行回車換行處理,直到遇到'$'符為止,'$'本身并不出現(xiàn)在屏幕上,此時的輸出情況是:匯編源程序——字符串輸入輸出Hello,thisisanexample.并且光標停在了第2行輸出的最后一個符號‘.’的后面。雖然buf1的定義中在‘$’后面還有內(nèi)容,這些內(nèi)容都不會被輸出。(6)由于9號子功能調(diào)用的結(jié)果并不改變除了AL以外的其它寄存器的值,故調(diào)用完后AH中仍然是9,所以第2次調(diào)用INT21H時只對DX重新賦了值,取的是buf2的偏移地址,因而第2次INT21H調(diào)用仍然是9號,從光標所在位置輸出buf2的內(nèi)容直到'$',于是得到前面的輸出結(jié)果。匯編源程序——字符串輸入輸出【例5.6】對例5.5的程序稍做修改成為下面的情況,寫出程序執(zhí)行后的結(jié)果。
dataSEGMENTbuf1DB'Hello,',13,10,'thisisanexample.',13,10buf2DB--END--$dataENDScodeSEGMENTASSUMECS:code,DS:datamain:MOVAX,dataMOVDS,AXLEADX,[buf1]MOVAH,9匯編源程序——字符串輸入輸出INT21HMOVAX,4C00HINT21HcodeENDSENDmain【解】執(zhí)行結(jié)果如下:
Hello,thisisanexample.--END--匯編源程序——字符串輸入輸出
5.3.2字符串輸入
【入口參數(shù)】AH=0AH,是DOS的子功能號10DS:DX=輸入緩沖區(qū)的起始邏輯地址輸入緩沖區(qū)有特定的要求,其內(nèi)存圖如圖5.3所示。len1
len2……DS:DX允許輸入的最大字符數(shù)實際輸入的字符數(shù)輸入串的各個字符
圖5.3用DOS的10號子功能進行字符串輸入的緩沖區(qū)要求匯編源程序——字符串輸入輸出【出口參數(shù)】由DOS的10號子功能在輸入緩沖區(qū)中填寫實際輸入情況,即根據(jù)鍵盤輸入情況,對圖5.3中的“實際輸入字符數(shù)”和“輸入串的各個字符”部分進行填寫。
【說明】
(1)輸入緩沖區(qū)是一段連續(xù)的內(nèi)存區(qū),首地址必須在調(diào)用10號子功能前放到指定的寄存器DS和DX中。(2)10號子功能在調(diào)用時等待操作員從鍵盤上按鍵,直到按下回車鍵為止,按鍵情況會顯示在屏幕上,最后按下的回車鍵會導致回車操作。如果在按回車鍵之前發(fā)現(xiàn)輸入有錯誤,可以使用退格鍵或向左的箭頭進行修改。匯編源程序——字符串輸入輸出
(3)輸入緩沖區(qū)的最前面一個字節(jié)(圖5.3中l(wèi)en1處)的值由用戶程序填寫,用以指出允許輸入的最大字符數(shù)。該值是字節(jié)型無符號數(shù),有效范圍是0~255,最后按的回車鍵也計算在內(nèi)。當已輸入len1–1個字符后就只能按回車鍵了,按其它鍵都會被認為是不正確的輸入而不被機器認可,并且喇叭還會發(fā)出“嘀”的一聲響以示警告。如果len1=1,表示只能按1個鍵,這個鍵只能是回車鍵,按其它鍵都會有“嘀”的一聲警告;如果len1=0,表示一個鍵都不能按,包括回車鍵在內(nèi)的任何按鍵都會被拒絕并且發(fā)出“嘀”的警告聲,但機器又在等待輸入,這一矛盾將導致無限期等待,即死機。匯編源程序——字符串輸入輸出
(4)輸入緩沖區(qū)的次字節(jié)(圖5.3中l(wèi)en2處)是由DOS的10號子功能填寫的。在調(diào)用前用戶程序可把它設(shè)為任意值,用戶程序填寫的這個值對10號子功能調(diào)用沒有任何影響。(5)子功能調(diào)用完成后,輸入的字符串以ASCII的形式從輸入緩沖區(qū)的第3個字節(jié)起連續(xù)存放,最后一個字符是回車鍵(0DH)。第2個字節(jié)中放的是輸入字符串的有效長度(最后的回車鍵不計算在內(nèi))。用戶程序可以從緩沖區(qū)的第2字節(jié)起取得輸入字符串的串長及各個字符。匯編源程序——字符串輸入輸出【例5.7】設(shè)有數(shù)據(jù)段定義如下:
dSEGMENTbufDB10,11DUP(0)dENDS畫出數(shù)據(jù)段的內(nèi)存圖,然后執(zhí)行下面的程序段,設(shè)buf的缺省段寄存器為DS。
MOVAX,dMOVDS,AXMOVAH,10LEADX,[buf]INT21H假設(shè)執(zhí)行時鍵盤上的輸入情況是在按A1B2后按回車鍵,畫出程序段執(zhí)行后的數(shù)據(jù)段的內(nèi)存圖。匯編源程序——字符串輸入輸出【解】見圖5.4(a)和(b)。0A000000000000……000000
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新版華東師大版八年級數(shù)學下冊《16.1.2分式的基本性質(zhì)約分》聽評課記錄4
- 北師大版歷史九年級下冊第13課《新興力量的崛起》聽課評課記錄
- 人教版數(shù)學七年級上冊2.1《去括號》聽評課記錄
- 人教部編版九年級歷史下冊聽課評課記錄:第13課《羅斯福新政》
- 人教版數(shù)學九年級上冊24.2《直線和圓的位置關(guān)系(1)》聽評課記錄
- 人教版數(shù)學八年級上冊《完全平方公式》聽評課記錄6
- 小學二年級上冊除法口算
- 九年級第一學期班主任總結(jié)
- 五年級下冊口算題
- 蘇教版四年級數(shù)學上冊口算練習題
- 小紅書食用農(nóng)產(chǎn)品承諾書示例
- CQI-23模塑系統(tǒng)評估審核表-中英文
- 二年級數(shù)學上冊100道口算題大全(每日一練共12份)
- 40篇短文搞定高中英語3500單詞
- 洪屏抽水蓄能電站達標投產(chǎn)策劃方案
- 危貨運輸車輛日常維護檢查及記錄表
- 公司生產(chǎn)報廢單
- 心身疾病優(yōu)秀課件
- Q∕SY 1342-2010 終端計算機安全管理規(guī)范
- 乘法口訣表(到25乘25)
- 建設(shè)工程施工合同糾紛案件要點分析課件
評論
0/150
提交評論