"カーネル"を書くようになったので、文字列を読み込んでそれを元に戻そうとしています。私。問題は私がそれを実行すると、私は行の上に書いたものではなく、同じcharの3つを出力します。私の読み書きの文字列関数は、私が入れた3文字の代わりに%%%を吐き出します。
read_string:
call newline
mov si, read_attempt
call print
call newline
push bx
mov ah, 0x03
int 0x10
mov dl, 0
int 0x10
;read 1st char
mov ah, 0x08
int 0x10
mov bl, al
pop bx
;read 2nd char
mov ah, 0x03
int 0x10
add dl, 1
int 0x10
mov ah, 0x08
int 0x10
mov bl, al
pop bx
;read 3rd char
mov ah, 0x03
int 0x10
add dl, 1
int 0x10
mov ah, 0x08
int 0x10
mov bl, al
pop bx
;try to write all 3 chars
call newline
mov si, write_attempt
call print
call newline
push bx
mov al, bl
call printchar
push bx
mov al, bl
call printchar
push bx
mov al, bl
call printchar
call newline
mov si, read_write_success
call print
call newline
ret
「第2のセクター」の前に、すべてが2ヶ月前のように書かれた、すべての後、過去2日間に書かれたことを覚えておいてください。私はまた、NASMを使ってコードをアセンブルしています。ここで
は、それはあなたがポップ意味プッシュおよびその逆を使用しているimgur
int 10h、ah = 08hとは思っていません。私はあなたがint 10hについて読んで、あなたが何をしようとしているのかを詳しく説明することをお勧めします。 – prl
int 10hとah = 08hを実行すると、 "カーソル位置で文字と属性を読み込み"、charをalに配置して、mov bl、alを実行して、後で使用するためにスタックにプッシュします – Psaidiwd
そうです。カーソル位置にはどのような文字がありますか?また、他のint 10hの呼び出しは何ですか? – prl