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
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
Wywala sie text pod adres 0xB800 (chyba)
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.
Dzieki.
A jak to zrobic umieszczając kod ASCII litery A pod adresem B800h?
.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.
Dzieki!!!