グラフィックモードで画像を表示したい。画像をバッファーに読み込んだ。このコードを作成しましたが、どのようにピクセルを画面に表示できますか?このコードはテキストファイルを表示するように機能しますが、どのようにピクセルを表示できますか?バッファMASM 5.1に保存された画像ファイルを表示
readFIL PROC NEAR ; proc que escreve uma ficha
mov ah, 3dh ;Open the file
mov al, 0 ;Open for reading
lea dx, FILENAM;Presume DS points at FILENAM
int 21h ; segment.
mov FHAND, ax ;Save file handle
LP: mov ah,3fh ;Read data from the file
lea dx, NAMEFLD ;Address of data NAMEFLD
mov cx, 12 ;Read one byte
mov bx, FHAND ;Get file handle value
int 21h
cmp ax, cx ;EOF reached?
jne EOF
mov al, NAMEFLD ;Get character read
;--------
mov cx,0
siga:
;----------------------
mov al,NAMEFLD
lea si , NAMEFLD
MOV AH,09h
int 21h
;---------------------
inc dx ;->> move next caracter in buffer
add cx, 1
cmp cx,12
jne siga
EOF: mov bx, FHAND
mov ah, 3eh ;Close file
int 21h
RET
readFIL ENDP
とにかく私たちを助けていない:(を使用してグラフィックスモードを設定
ありがとうございますが、私はどのように画像を描画するためにビデオバッファにアクセスできますか?ピクセルをビデオバッファに入れる例を教えてもらえますか?私は本当にそれをWeb上で見つけることはできません。 –
ピクセルのアドレスはすべて「0xA0000 + y * 320 + x」(物理的)です。したがって、そのアドレスのバイトにピクセルカラー値を書きます。あなたはリアルモード(またはv86)でプログラミングしているので、アドレスをセグメントセレクタ値とオフセットのペアとして表現する必要があります。その結果、セグメント部分のために0xA000となり、 y * 320 + x 'となる。セグメントレジスタ(通常は 'ES'や' DS'のうち、あなたのプログラムの中で手近なもの)に '0xA000'をロードしてから、そのレジスタを使ってメモリに書き込む命令を実行しなければなりません。例えば' movバイトptr es:[bx]、al'。 –