2

割り込み10hで使えるサービスはたくさんありますが、迷っている2人について質問させてください

まず、

 AH = 06H SCROLL UP WINDOW
 AH = 07H SCROLL DOWN WINDOW

DOS でのコーディング中、スクロール アップ/スクロール ダウンとはどういう意味ですか?

これを見て、

; AL = NUMBER OF LINES BY WHICH TO SCROLL UP (00H = CLEAR ENTIRE WINDOW)
; BH = ATTRIBUTE USED TO WRITE BLANK LINES AT BOTTOM OF WINDOW
; CH,CL = ROW,COLUMN OF WINDOW'S UPPER LEFT CORNER
; DH,DL = ROW,COLUMN OF WINDOW'S LOWER RIGHT CORNER

ここでは、ウィンドウの下部に空白行を書き込むために BH が使用されていると書かれていますが、このコードを使用していると、

MOV AH, 06H
MOV AL, 00H
MOV CX, 00H
MOV DH, 25
MOV DL, 80
INT 10H

BH の値を定義しないと、結果が画面に表示されず、Bh の値を宣言するとすぐに、DOS 画面の前景色と背景色が実際に制御されます。では、ウィンドウの下部に空白行を書き込むために BH が使用されていると表示されているのはなぜですか?

二つ目は、

;AH = 02 USED To SET CURSOR POSITION

    ;BH = PAGE NUMBER
    ;CH,CL = ROW,COLUMN OF WINDOW'S UPPER LEFT CORNER
    ;DH,DL = ROW,COLUMN OF WINDOW'S LOWER RIGHT CORNER

ここで、BH はページ番号に等しい :confused: ? 通常の DOS 画面のページ番号は何を意味していますか?

4

1 に答える 1

8

現在、テストするためのツールにアクセスできません。実際、DOS でのリアル モード アセンブリで何をしているのですか? -- しかし、記憶から、これらはあなたの答えであるはずです:

DOS でのコーディング中、スクロール アップ/スクロール ダウンとはどういう意味ですか?

「上にスクロール」は、「画面上にあるすべてのものを取得して上に移動する」ことになります。AL の値によって、その量が決まります。たとえば、AL=2 の場合、「上にスクロール」すると、画面上のすべてのテキストが 2 行上に移動します。

「下にスクロール」は、反対方向に移動します。

CX と DX を適切に設定することで、画面の任意の部分/ウィンドウを移動できます。たとえば、画面は 80x25 文字を想定しているため、CH=1、CL=1、DH=23、DL=78 の場合、移動される部分は、各端に沿った 1 文字の境界線を除いた画面全体になります。

特殊なケースとして、AL=0 によりウィンドウ全体がクリアされます。


ウィンドウの下部に空白行を書き込むために BH が使用されていると表示されているのはなぜですか?

BH は空白行を書き込むときに使用される属性であると書かれています。テキスト モードでは、偶数アドレスは表示する文字を保持し、奇数アドレスは表示に使用される属性を保持します。BH は、この呼び出しによって書き込まれた新しい文字ごとに属性を提供します。

属性は、主にキャラクターの前景色と背景色です。背景色を設定して画面をクリアすることで、効果的に画面を 1 色で塗りつぶすことができます。


ハードウェアレジスタに関するポイントを明確にしたいと思います。あなたは言う

しかし、私がこのコードを使用していて、BH の値を定義していないとき

BH には常に値があることに注意してください。たまたま、横になっているものを使用しているだけです。BH を必要なものに設定してください。たとえば、黒地に通常の白の場合は 0x07 です。


通常の DOS 画面のページ番号は何を意味していますか?

これは、最新のグラフィックス プログラミングにおける複数のスクリーン バッファー (フロント バッファー、バック バッファー) に似ています。int 10hAH=05 で呼び出してページを切り替えることができます。Ralf Brown の割り込みリストを参照してください。

于 2012-09-09T10:31:46.867 に答える