K氏のheboOSをまねてみる

43:Re: INT 0x09 の乗っ取り
hideyosi 09/28 01:12
まてよぉぉぉ?????

このソースだと、最初にALレジスタに表示する文字(A)のコード。0x41を代入している。

でも、そのあと、
MOV AX,0
ってやっている。
・・・ALとかAHって、AXレジスタを割ったやつじゃなかったっけ?
ってことは、この時点ではALも0になっているってことじゃん!!

そんなわけで、

--------------------------------------------------------
[BITS 16]
[OPTIMIZE 1]
[OPTION 1]
[INSTRSET "8086"]
[FORMAT "BIN"]
ORG 0x100

;BIOSのキー入力を乗っ取る
MOV AX,0
MOV ES,AX ; ESを0にする。
MOV WORD[ES:0x09*4+0],IINT09
MOV WORD[ES:0x09*4+2],CS
MOV AX,DS
MOV ES,AX ; ESをもとにもどす。

;表示文字「A」をセット
MOV AL,0x41

;ループにジャンプ
JMP GULGUL


;キー入力を待つループ
GULGUL:

;ループが廻っているのがわかるようにALレジスタの文字を表示
MOV AH,0x0e
INT 0x10
JMP GULGUL

IINT09:
;ALレジスタの文字を「B」に切り替える
MOV AL,0x42
IRET

EEND:
;一応保険
;MS-DOS終了
INT 0x20
---------------------------------------------------------
こんなふうに修正しました。

さてさて。コンパイルして・・・・・
キタ━━━━━━(゜∀゜)━━━━━━!!!!!!!!
やったーー! 想定どおりの動作したぞぉぉぉ!!!!!!

また野望に一歩近づいた!!!!!! <アホ

よーし。とりあえず一旦この課題は終了。先に進む前に、Kタンに教えてもらった部分がなにを意味するアセンブラなのか、勉強しないと!


1-

BluesBB ©Sting_Band