BIOS機能02H(のSetCursor)とDOS関数02H(WriteCharacter)の両方をパラメータとしてDL
レジスタを使用しているという事実から、このコードの幹を持つすべての問題。不都合なことに、この場合は意味が異なります。いくつかの解決策が存在する。空きレジスタBL
を使用して別の文字コードを保存することがPed7gによって提案されました。
私が提示する簡単な解決策は、DOS出力機能をまったく使用せず、BIOS機能0Eh(TeletypeCharacter)でディスプレイに書き込むことです。この関数はパラメータとしてDL
に依存しません。代わりにAL
レジスタを使用します。
.model small
.stack
.code
start:
mov al, "A" <<<First character
mov bh, 0 <<<Display page 0
mov cx, 25 <<<Iteration count
mov dl, 0 <<<Start at column 0
mov dh, 0 <<<Start at row 0
again:
mov ah, 02h <<<BIOS function SetCursor
int 10h
mov ah, 0Eh <<<BIOS function TeleType
int 10h
inc dl <<<Next column
inc dh <<<Next row
inc al <<<Next character
loop again
mov ah, 4Ch
int 21h
end start
標準のテキストスクリーンで作業する場合、80列と25行があります。カーソルを画面外に配置しないでください!プログラムが実行する必要がある最も反復回数は25です。
コードの出力を見るには、プログラム出力のスクリーンショットをクリックしてください。 – Rhye
'int 10h/ah = 02h'は' dl'をカーソルの水平位置として使います。 – Michael
どうすればいいですか? – Rhye