Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

Ten program też jest prościutki, ale potrafi już coś zrobić. Wyświetla na ekranie tekst i czeka na naciśnięcie klawisza.

.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.

×
×
  • Dodaj nową pozycję...