Wypisywanie tekstu na ekranie
Ten program też jest prościutki, ale potrafi już coś zrobić. Wyświetla na ekranie tekst i czeka na naciśnięcie klawisza. Mam nadzieję, że przeanalizowałeś poprzedni artykuł?

.model tiny
.code
 
tekst db 'To jest chyba tekst$'
 
start:
 
mov ax,@data
mov ds,ax
mov ah,09h
mov dx,offset tekst
int 21h
mov ah,01h
int 21h
mov ah,4ch
int 21h
 
.stack 512
 
end start



Jak widzisz początek programu jest podobny - określamy model i zaczynamy segment kodu. Jednak zaraz potem deklarujemy zmienną. Jest to łancuch znaków, czyli bajtów. Definicja zmiennej ma postać: identyfikator typ wartość . Deklarujemy więc zmienną tekst, składającą się z bajtów i przyjmującą wartość 'To jest chyba tekst$'.

Inne typy zmiennych to dw - word (słowo = 2 bajty), dd - double word (podwójne słowo = 4 bajty), jest jeszcze dq - czyli aż 10 bajtów. Jeżeli chcemy aby zmienna przymowała wartości rzeczywiste a nie całkowite (i tym samym aby działać na niej za pomocą koprocesora) - musi to być co najmniej dd.

Pierwsze dwa rozkazy programu wpisują do ds numer segmentu @data. Pamiętasz chyba, że w modelu tiny segment danych jest jednocześnie segmentem kodu. Tak więc po prostu wpisujemy ten jedyny segment do ds, aby procesor miał dostęp do zmiennych znajdujących się w tym segmencie.

Następne trzy rozkazy to wywołanie funkcji 09h ms-dosu. Ta funkcja służy do wysłania na ekran ciągu znaków zakończonego znakiem dolara '$'. Adres ciągu znaków znajduje się w parze rejestrów ds:dx. Do ds wysłaliśmy już odpowiednią wartość - do dx trzeba jeszcze tylko podesłać offset naszej zmiennej. Funkcja 01h ms-dosu czeka na klawisz.

Tak jak w poprzednim programie - musisz myśleć o tym, by procesor się nie pogubił w odmętach pamięci. Jeżeli nie zakończysz łancucha znaków znakiem '$' to ms-dos będzie wysyłał na ekran wszystko aż do napotkania takiego znaku. Tym razem nie grozi ci np. formatowanie twardego dysku ;) ale za to będziesz miał mnóstwo śmieci na ekranie.


Autorem tekstu jest: Jacek Popławski
Materiał dodany przez użytkownika: alphan