Zapodziałem gdzies procedure do tworzenia kolorowych tekstow (16), czy ktos mogłby podac adres gdzie moge to znaleŹĆ albo wypisac mi podobna procedure?
Pozdrawiam
Zapodziałem gdzies procedure do tworzenia kolorowych tekstow (16), czy ktos mogłby podac adres gdzie moge to znaleŹĆ albo wypisac mi podobna procedure?
Pozdrawiam
Napisałeś tak enigmatycznie, że ledwo Cię zrozumiałem. Pewnie chodzi Ci o to:
http://www.ctyme.com/intr/rb-0099.htm
Jak nie, to opisz problem dokładniej.
[<font color="blue">dopisane</span>]
Mój błąd - wcześniej był link do "rb-0098.htm".
Tak o to, ale mam problem z inicjacja tego.
Aby wypisac tekst potrzebuje zainicjowac przerwanie 09h, tak wiec robie:
[code]
mov AH,09h
mov DX,offset(tekst)[/code]
ale aby tekst ten byl np niebieski doczytalem sie z tej strony, ze potrzebuje przerwania 08h. Moze to ze stresu ale u mnie wyglada to tak :
[code]
mov AH,08h
mov AL,001b ; kolor blue
[/code]
Wiem ze cos namieszałem i kazdy kto to czyta smieje sie w matryce ale pomozcie.
Nikt się nie śmieje. Każdy z nas kiedyś zaczynał, więc spoko.
Po przeczytaniu tego drugiego postu od razu mogę stwierdzić, że z Assemblera masz ogromne braki z podstaw. Wyjaśnię Ci, gdzie źle rozumujesz:
potrzebuje zainicjować przerwanie 09h (...)
mov AH,09h
A więc: przerwanie - mówiąc najprościej jak się da - jest jakby zbiorem różnych funkcji (to nie jest tak do końca, ale w tym poście omówię tylko to i w taki sposób, co jest Ci potrzebne do kolorowania tekstu).
Aby wywołać np. przerwanie 10h używamy instrukcji int 10h.
To o czym piszesz (mov ah,9 mov dx,offset tekst) to funkcja dziewiąta przerwania 21h.
Czyli aby wyświetlić tekst musisz wykonać instrukcje:
[code]mov ah,9
mov dx,offset tekst
int 21h[/code]
Ale wracając do kolorowego tekstu. Na stronie, którą Ci uprzednio podałem mamy taką informację:
Int 10/AH=09h
Oznacza to funkcję numer 9 przerwania 10h. Czyli aby wypisać na niebiesko znak 'A' należy wykonać instrukcje (aby kod był czytelny nie stosuję żadnych uproszczeń):
[code]mov ah,9 ;nr funkcji przerwania 10h
mov al,'A' ;kod ASCII danego znaku
mov bh,0 ;strona video (zazwyczaj 0)
mov bl,1 ;nr koloru
mov cx,1 ;ile razy wypisać dany znak
int 10h ;wywołanie przerwania nr 10h[/code]
Ale do wypisania nie znaku, a łańcucha polecam inną funkcję - również przerwania nr 10h (tak na marginesie jest przerwanie Video). A mianowicie funkcję nr 13h [http://www.ctyme.com/intr/rb-0210.htm].
Przykład:
[code]mov ah,13h ;nr funkcji
mov al,1 ;opcje - więcej na podanej stronie
mov bh,0 ;strona video
mov bl,1 ;jeśli bit nr 1 w AL=1 to BL zawiera kolor
mov cx,<font color="darkblue">tu należy podać liczbę znaków w wyświetlanym tekście</span>
mov dh,0 ;współrzędna Y
mov dl,0 ;współrzędna X
mov bp,offset tekst ;zakładam, że tekst znajduje się w segmencie ES,
;do BP ląduje przesunięcie tekstu w pamięci
int 10h[/code]
To tyle - uff. Mam nadzieję, że zachęcę Cię do nauki Assemblera.
Pozdrawiam
Bardzo bardzo!
Obiecuje ze bede pilnym uczniem za ten czas, w ktorym pisales te posty!! @~~ @~~ @~~ @~~
To nie takie trudne w sumie!
Dzieki! Kto pyta nie bładzi, kto odpowiada nie pyta :P
Jestem wdzieczny bardzo!! @~~
//ok, ok - tylko wyluzuj z tymi emotami - Marooned