やりたいこと
BIOS割り込みの検証を行う。
int 0x16
でキーボード入力を受け取り、int 0x10
を使用して画面に文字を出力する。
プログラム
[BITS 16]
[ORG 0x7C00]
start:
; キーボードから入力される迄待機
mov ah, 0x00 ;
int 0x16 ; ALに入力されたボタンのASCIIが入る
; 画面出力
mov ah, 0x0E ;
mov bh, 0x00 ;
int 0x10 ; AL中の文字を出力する
; CPU停止
cli
hlt
times 510-($-$$) db 0
dw 0xAA55
BIOS割り込みの説明
int 0x10
AH=0x0E
、AL=文字コード
設定後、INT 0x10
を実行するとALに入っている文字コードに対応した文字が画面上に表示されます。
int 0x16
AH=0x00
設定後、int 0x16
を実行するとキーが入力されるまで制御が戻ってこない(その先のプログラムを実行せず待機)。入力後ALに入力された文字の文字コードが格納される。
結果
入力した文字「u」が画面に表示されました。
int 0x10をコメントアウトすると何も表示されなくなったことから、画面出力はint 0x10によって行われていることが確認できました。
8086実機にて動作させる方法
以下の方法を用いて8086実機上から実行させています。
https://qiita.com/earthen94/items/10c012ae14545e9f4284
参考文献
林 高勲 (2019) 『x86系コンピューターを動かす理論と実装 作って理解するOS』技術評論社