Tryb tekstowy sterownika VGA (Asembler)

0

Mam pytanie: w jaki sposób wyświetla się znaki na ekranie w trybie tekstowym sterownika VGA?

Byłbym bardzo wdzięczny za jakiś przykład np. kod programiku wyświetlającego na ekranie literę A.

Pozdrawiam

0

Wywala sie text pod adres 0xB800 (chyba)

0

A to nie wystarczy? Skoro ma być tekstowy:

org 100h

mov ax, 0002h ;inicjalizacja na 80x25: patrz tabela przerwań
int 10h

mov ah, 02h
xor bh, bh      ;strona 0
mov dh, 0ah     ;wiersz 10 od góry
mov dl, 05h     ;columna 5 od lewej
int 10h

mov ah, 0ah     ;wyświetlanie znaku
mov al, 'A'     ;załadowanie znaku do wyświetlenia (tutaj 'A')
xor bh, bh      ;strona 0
mov cx, 2       ;dwa znaki do wyświetlenia
int 10h

mov ah, 02h
xor bh, bh      ;strona 0
mov dh, 05h     ;wiersz 5 od góry
mov dl, 0ah     ;columna 10 od lewej
int 10h

mov ah, 09h     ;wyświetlanie znaku z atrybutem
mov al, 'B'     ;załadowanie znaku do wyświetlenia (tutaj 'A')
xor bh, bh      ;strona 0
mov bl, 0ah     ;kolor limonkowy
mov cx, 1       ;dwa znaki do wyświetlenia
int 10h

mov ah, 01h
int 21h

mov ax, 4c00h
int 21h

Chyba, że chodzi o SuperVGA (VESA). To już inna bajka.

0

Dzieki.
A jak to zrobic umieszczając kod ASCII litery A pod adresem B800h?

0

.486
Code16 Segment Para Public Use16
Assume Cs:Code16, Ds:Code16
Start:

Mov Ax, 0B800h
Mov Es, Ax
Mov Di, 0
Mov Al, 'A'
Mov Ah, 00000111b ;111b = 07h
Mov Es:[Di], Ax

mov eax, 4C00h
Int 21h

Code16 Ends
^^^^^^^^^^^^^^^^^^^^^^^^

To proste. Es wskazuje na segment ekranu B800h, Di wskazuje na offset.
Każdy znak na ekranie to dwa bajty pierwszy to kod ASCII, a drugi to artybut, który ma postać:

IRGB irgb
0000 0000 b

bity D0,D1,D2 To kolory znaku rgb
D3 To " i " czyli gdy równe 1 to kolor jest intensywny

bity D4,D5,D6 To kolory tła znaku RGB
D7 To " I " czyli intensywność tła

W kodzie żródłowym jako atrybut podałem 111b = 07h dlatego, że jest to standardowy atrybut dosowy. To znaczy szary nieintensywny napis na czarnym tle.

Zdaje mi się, że wszystko dobrze wyjaśniłem.

0

Dzieki!!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1