AK
Ćw. 5
Programowanie procesora 8086 z wykorzystaniem funkcji systemowych
Cel ćwiczenia: Poznanie DOS API
Literatura: E. Wróbel, „Asembler – praktyczny kurs”, Helion, 2004, G. Michałek, „Asembler nie tylko dla orłów”,
Intersoftland 1997, Bułhak L., Goczyński R., Tuszyński M., DOS od środka. Help, Warszawa, 1992.
Sprzęt i oprogramowanie: Komputer PC, program AFD (wersja 1 lub 2), asembler NASM
Pomoce: Tabela rozkazów x86 – plik Intel8086CodeTable.pdf
Zagadnienia:
Operacje na stosie
Przerwania programowe
DOS API
Wybrane rozkazy x86
1.
Napisz program, który:
zapisuje na stosie zawartość rejestrów AX, BX, CX i DX,
zmienia zawartość tych rejestrów,
odtwarza poprzednią zawartość rejestrów
Przy wykonywaniu programu zwróć uwagę jak zmienia się wskaźnik stosu
2.
Napisz podprogram, który mnoży 2 liczby 16 bitowe. Argumenty przekazywane są w rejestrach AX i BX, a wynik
zwracany w CX.
Do następnych zadań potrzebny jest drugi ekran. Włączamy go wpisując w programie AFD:
mo a on
Przełączanie miedzy ekranami klawiszem F6.
3.
Napisz program wyświetlający na ekranie twoje inicjały. Wykorzystaj funkcję 02 przerwania 21.
(Funkcja 02 - wysłanie znaku na ekran -AH=02, DL – kod znaku do wysłania.)
4.
Napisz program, który wyświetla na ekranie Twoje imię. Wykorzystaj funkcję 09 przerwania 21.
(Funkcja 09 - wyświetlenie na ekranie łańcucha znaków (tekstu) AH=09,
DS.:DX – adres początku łańcucha, łańcuch kończy się znakiem $)
5.
Napisz program, który wczytuje z klawiatury ciąg znaków aż do znaku *, a następnie wyświetla je w odwrotnej
kolejności. Wykorzystaj funkcje 01 i 02 przerwania 21.
(Funkcja 01 - odczytanie znaku z klawiatury i wysłanie echa na ekran –
AH=01, wyjście AL. – odebrany znak.
Uwaga: Napisz programy 3, 4 i 5 korzystając z edytora Notatnik następnie dokonaj asemblacji
przy użyciu programu NASM
( np. program w pliku p3.asm, program wynikowy w p3.com, wydruk w p3_list.txt:
nasm –f bin p3.asm -o p3.com –l p3_list.txt
Przykładowy program w języku asembler (Dyrektywa org 100h jest obowiązkowa, dwa ostatnie wiersze to
standardowe zakończenie programu)
Czyszczenie ekranu
org 100h
mov ah,02
mov dl,'K'
int 21h ;
mov ax,4c00h
int 21h
mov ah,0
mov al,03
int 10H