.


:




:

































 

 

 

 


SVGA




. 256- . (x,y) 640*y+x 640 . , , - , , , x=255, y=102, 65535. 64K .

, . , . , 0 65536 "" (granularity) 64 KB.

(x,y) 640*y+x-B*WG B - WG - "". AX=4F05h 10h , VESA.

. AX BX, CX . , "" 64 KB, , , S3.

SVGA_bank dw 0;

S_rivi dw 640;

VGA_seg dw 0A000h; VGA

CBpxl$ proc; x=AX, y=BX, =CX

xchg AX,BX; x=BX, y=AX

mul S_rivi

add AX,BX

adc DX,0; DX

mov DI,AX;

cmp DX,SVGA_bank; ?

je Cxl256_OK

mov SVGA_bank,DX;

mov AX,4F05h

xor BX,BX;: DX, A

int 10h

Cxl256_OK:

mov BX,ES;

mov AL,CL;

mov ES,VGA_seg

stosb;

mov ES,BX

ret

CBpxl$ endp

; COM-

codeseg segment

assume cs:codeseg, ds:codeseg, es:codeseg

org 100h

Code: jmp Start

x dw 50; x

y dw 20; y

Text db 'string to be printed',0; 0

Start:

mov AX,80;

mul y

add AX,x

shl AX,1; AX=160*y+2*x

mov DI,AX

mov SI,offset Text

push ES; ES

mov AX,0B800h;

mov ES,AX

Print:

lodsb; AL DS:[SI]

or AL,AL; ?

jz Ready;, AL=0

mov ES:[DI],AL;

add DI,2;

jmp Print

Ready: pop ES; ES

;---------------------------------------

int 20H

codeseg ends

end Code





:


: 2015-10-01; !; : 298 |


:

:

,
==> ...

958 - | 873 -


© 2015-2024 lektsii.org - -

: 0.012 .