「オペレーティングシステム」の版間の差分

削除された内容 追加された内容
編集の要約なし
1,275 行
== キーボードサービス ==
まず、int命令で、キーボードサービスの割りこみがあり、 int 0x16 がキーボードサービスである。
 
;コード例
<source lang="asm">
mov ah, 0x0e ; 1文字出力
mov al, 'p' ; 「pushしろ」・・・のつもり
int 0x10
 
mov al, ' '
int 0x10
 
mov al, 's' ; 「space」・・・のつもり
int 0x10
 
mov al, ' '
int 0x10
 
mov al, ' '
int 0x10
 
 
.LOOP:
mov ah,0x00 ; キーボード入力待ち. 0x10 でもいい
int 0x16
 
cmp al, ' ' ; 空白なのでスペース
jne .LOOP ; 直前の比較cmpの結果が偽(否定)だったらループする
 
 
mov ah, 0x0e ; 1文字出力
mov al, 'f' ; 「finish 終わったよ」・・・のつもり
int 0x10
 
times 510 - ($ - $$ ) db 0
db 0x55 , 0xaa
 
</source>
 
 
さてint 0x16 を呼び出す際、
mov ah,0x00 ; キーボード入力待ち. 0x10 でもいい
なら、ah = 0x00 は、キーボードのキー入力待ちである。ah = 0x10 だと拡張キーボード対応らしい[http://softwaretechnique.jp/OS_Development/Tips/Bios_Services/keyboard_services.html] 。
 
 
 
実は一般的なパソコンでは、アセンブリ言語の命令で、いくつかのハードウェアに読み書きのアクセスするための、専用の命令がある。