|
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タンに教えてもらった部分がなにを意味するアセンブラなのか、勉強しないと! |