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