assembler€86ˆ 7

assembler€86ˆ 7



254 9. Wykorzystanie procedur systemowych w programach użytkowych

• Przykład ilustrujący wykorzystanie funkcji 05H, 09H, OAH, OCH przerwania systemowego 21H.

Procedura uruchamia prosty test drukarki, polegający na wydrukowaniu 80 kolejnych znaków w wierszu, rozpoczynając pierwszy wiersz od spacji (20H), drugi od wykrzyknika ! (21H) itd. Test może zostać przerwany przez naciśnięcie dowolnego klawisza.

tekstl db Test drukarki rozpoczęty*, 10,13,’$’ tekst_2 db Test został przerwany !*,10,13,’$’

TEST

proc far

start:

mov ah,0CH

; wyzerowanie bufora klawiatury

mov al,0FFH

; i powrót do programu

int 21H .

mov dx,offset tekst l

; wyświetlenie komunikatu na

mov ah,09H

; na ekranie monitora

int 21H

poczat:

mov bl,20H

; kod pierwszego znaku zainicjowany

powtorz:

mov dl,bl

mov cx,80

80 znaków w wierszu

mov ah,05H

drukuj jeden znak z rejestru dl

pętla:

int 21H

inc dl

następny znak

emp dl,7FH

czy wszystkie znaki wydrukowano ?

jnz dalej

nie, drukuj dalej

mov dl,20H

dla znaków o kodach 00H-1FH

or dl,dl

ZF«-0

dalej:

loopnz pętla

pętla dla 80 znaków

mov dl, 13

koniec wiersza, wysłanie znaku CR

int 21H

ah = 05H !

mov dl, 10

wysłanie znaku LF

int 21H

ah = 05H !

mov ah,0BH

czy bufor klawiatury jest

int 21H

w dalszym ciÄ…gu pusty ?

or al,al

al = 0 ? (czy w buforze jest znak?)

jz linia

nie, drukuj następny wiersz

mov dx,offset tekst J2

tak, wyświetlenie komunikatu

mov ah,09H

na ekranie monitora

int 21H

jmp koniec ;

zakończenie procedury

linia:

inc bl

pierwszy znak następnego wiersza

emp bl,7FH ;

czy koniec znaków ?

jnz powtorz ;

nie, kolejny wiersz

jmp poczat ; tak, test od poczÄ…tku

koniec:

ret

TEST

endp

powered by

Mi siol

10. Przykłady programów

PrzykÅ‚ady programów przedstawione w tym rozdziale zostaÅ‚y przygotowane i uruchomione na mikrokomputerze IBM XT, przy wykorzystaniu makroasemblera MASM wersja 4.0. PrzykÅ‚ady sÄ… kompletne, sprawdzone i mogÄ… być pomocne Czytelnikowi do zrozumienia zagadnieÅ„ przedstawionych w poprzednich rozdziaÅ‚ach. PrzykÅ‚ady zostaÅ‚y tak dobrane, aby zilustrować dziaÅ‚anie jak najwiÄ™kszej liczby dyrektyw jÄ™zyka oraz rozkazów mikroprocesora.

10.1. Generator liczb pierwszych - prosty test szybkości komputera

Prezentowany program oblicza 1000 liczb pierwszych, rejestruje czas obliczeÅ„ i w zależnoÅ›ci od sposobu wywoÅ‚ania, wyÅ›wietla obliczone liczby pierwsze na ekranie monitora. Może sÅ‚użyć jako prosty test (ang. benchmark program ), pozwalajÄ…cy porównać szybkoÅ›ci różnych mikrokomputerów, a także szybkość obsÅ‚ugi ekranu monitora do wyÅ›wietlania prostych komunikatów. Program wykorzystuje funkcje systemu MS-DOS wywoÅ‚ywane rozkazem przerwania INT 21H i jest przygotowany jako program w pliku o rozszerzeniu EXE. Przedstawiono sposób konstrukcji segmentu programu, segmentu danych i segmentu stosu. Zastosowano standardowy algorytm generowania liczb pierwszych. Poszukiwanie rozpoczyna siÄ™ od liczby 2, która jest umieszczona na koÅ„cu tablicy liczb pierwszych. NastÄ™pnie sprawdza siÄ™, czy liczba o jeden wiÄ™ksza od ostatniej znalezionej liczby pierwszej, dzieli siÄ™ bez reszty przez wszystkie znalezione wczeÅ›niej, mniejsze od niej liczby pierwsze. Zamieszczony wydruk programu jest bogato skomentowany i zdaniem autora nie wymaga dodatkowego opisu. Uruchomienie gotowego testu (programu) może być nastÄ™pujÄ…ce X > TEST 1

dla opcji programu bez wyświetlania liczb na ekranie, lub też X > TEST 2

dla opcji programu z wyświetlaniem wygenerowanych liczb na ekranie monitora. X > jest zgłoszeniem bieżącego dysku. Uruchomienie programu bez parametru, lub


Wyszukiwarka

Podobne podstrony:
assembler?86? 7 234 9. Wykorzystanie procedur systemowych w programach użytkowych Przerwania sprzę
assembler?86? 6 9. Wykorzystanie procedur systemowych w programach użytkowych Mikrokomputery klasy
assembler?86? 8 236    9. Wykorzystanie procedur systemowych w programach użytkowyc
assembler?86? 9 238    9. Wykorzystanie procedur systemowych w programach użytkowyc
assembler?86? 0 240 9. Wykorzystanie procedur systemowych w programach użytkowych A < 2 > -
assembler?86? 1 242 9. Wykorzystanie procedur systemowych w programach użytkowych Wywołanie rezydu
assembler?86? 2 244 9. Wykorzystanie procedur systemowych w programach użytkowych Program użytkowy
assembler?86? 4 248 9. Wykorzystanie procedur systemowych w programach użytkowych adres pola FCB,
assembler?86? 5 250 9. Wykorzystanie procedur systemowych w programach użytkowych numer kanału. Je
assembler?86? 6 252    9. Wykorzystanie procedur systemowych w programach użytkowyc
assembler?86? 3 246 9. Wykorzystanie procedur systemowych w programach użytkowych 06H - bezpośredn
assembler?86? 7 74 4. Język asemblerowy mikroprocesorów 8086/8088 Przykład ZMIENNA A DW 5*5 ; =
Laboratorium Przemysłowe Systemy Cyfrowe (PLC) 1.1. Projektowanie programu użytkownika Podstawowe
7 system operacyjny programy użytkowe systemu jądro systemu i powloką - interpreter poleceń
t Program diagnostyczny systemu l Program koordynujący Programy Użytkowo Programy
-    kod programu użytkownika (proces użytkownika) -    kod systemowy
Elementy systemu komputerowego użytkownicy (ludzie, maszyny, inne komputery) programy użytkowe

więcej podobnych podstron