|
INT 21H是一條中斷語(yǔ)句,AH的值為它的功能,當(dāng)AH值不一樣時(shí),它的功能也不同。
功能一:輸出一個(gè)字符串用 21H 中斷的09 函數(shù)。INT 21H可以被用來(lái)向監(jiān)視器傳遞ASCII數(shù)據(jù),但是必須要設(shè)定AH = 09 且 DX = 要被顯示的ASCII 數(shù)據(jù)的偏移地址,然后調(diào)用 21H 中斷。 監(jiān)視器會(huì)輸出整個(gè)字符串直到遇到了“$”;09函數(shù)是不會(huì)顯示‘$’的
例如:要顯示字符串 “THE EARTH IS BUT ONE COUNTRY”
DATA_ASC DB 'THE EARTH IS BUT ONE COUNTRY', '$'
MOV AH, 09; 選擇09函數(shù)
MOV DX, OFFSET DATA_ASC; DX = 數(shù)據(jù)的偏移地址
INT 21H; 調(diào)用21H中斷
功能二:輸出一個(gè)字符用 21H 中斷的02 函數(shù)。當(dāng)要輸出一個(gè)字符時(shí),需要設(shè)定 AH = 02, DL 存放將要顯示的字符,然后調(diào)用21H中斷;02函數(shù)可以顯示'$'字符
例如:要顯示“J”
MOV AH, 02
MOV DL,'J'; 顯示字符‘J’
INT 21H; 調(diào)用21H中斷
功能三:輸入一個(gè)字符用 21H 中斷的01 函數(shù)。此函數(shù)會(huì)一直等待用戶從鍵盤(pán)輸入一個(gè)字符,然后會(huì)顯示在頻幕中。在調(diào)用中斷后,輸入的字符會(huì)被存放到AL 中
MOV AH, 01; 01號(hào)函數(shù)
INT 21H; 在這之后,輸入的字符會(huì)被存放到寄存器AL 中,并將字符顯示出來(lái)
功能四:輸入一個(gè)字符串用 21H 中斷的0AH 函數(shù)。此函數(shù)可以提供方法讓用戶輸入一個(gè)字符串并將之放入預(yù)存的內(nèi)存; 但是必須設(shè)定 AH = 0AH, DX = 將要存放的地址的偏移值; 這通常比認(rèn)為是緩沖區(qū)域;而DOS要求緩沖區(qū)域必須事前在數(shù)據(jù)段中定義,且第一個(gè)字節(jié)必須說(shuō)明緩沖區(qū)的大;在輸入完成后, DOS會(huì)將輸入的字符的個(gè)數(shù)(不包含回車(chē)鍵)放在第二個(gè)字節(jié);然后接下來(lái)的字節(jié)即從第3個(gè)字節(jié)開(kāi)始才會(huì)放從鍵盤(pán)輸入的字符
例如:要存放從鍵盤(pán)輸入的6個(gè)字符(包含了回車(chē))
ORG 0010H ;將從0010H開(kāi)始存放從鍵盤(pán)輸入的字符
DATA1 DB 6, ?, 6 DUP (FF) ; 在內(nèi)存 0010H中放的是6,表示緩沖區(qū)域的大小為6;0011H的內(nèi)容仍未確定,其值為從鍵盤(pán)中輸
;入的字符的個(gè)數(shù)(不包含回車(chē)鍵), 從0012H到0017H的6個(gè)字節(jié)中被初始化為FF,將要存放從鍵盤(pán)輸入的字符
MOV AH, 0AH ; 使用0AH函數(shù)來(lái)輸入字符串
MOV DX, OFFSET DATA1 ; 取緩沖區(qū)的地址偏移值
INT 21H ; 調(diào)用21H中斷
注:在IBM PC中,21H中斷只有當(dāng)用戶按下了回車(chē)才會(huì)執(zhí)行(回車(chē)的ASCII 值為 0DH)
功能五:從鍵盤(pán)中輸入一個(gè)字符,但是不顯示出來(lái),用21H的07函數(shù),用戶輸入的字符同樣會(huì)被存放到AL 寄存器中
MOV AH, 07
INT 21H
|
|