I. Treści programowe
Powtarzanie wykonywania instrukcji, licznik
pętli, pętle programowe w asemblerze, instrukcja LOOP, wykorzystanie instrukcji
warunkowych w pętlach, sterowanie przebiegiem programu, iteracyjne
przetwarzanie danych.
II. Cel ćwiczenia
Celem
ćwiczenia jest poznanie mechanizmu działania pętli w asemblerze procesora Intel
8086 oraz nabycie umiejętności wielokrotnego wykonywania fragmentów programu.
III. Materiały dydaktyczne:
Pętle należą do podstawowych mechanizmów programowania. Dzięki nim
możliwe jest wielokrotne wykonywanie tego samego fragmentu programu bez
konieczności wielokrotnego przepisywania tych samych instrukcji.
Pętle
są wykorzystywane między innymi do:
Każde
wykonanie fragmentu kodu wewnątrz pętli nazywane jest iteracją.
Pętle
są wykorzystywane między innymi do: wyświetlania danych, przetwarzania tablic, oczekiwania
na działanie użytkownika, obsługi urządzeń wejścia/wyjścia, realizacji obliczeń
iteracyjnych.
Każde
wykonanie fragmentu kodu wewnątrz pętli nazywane jest iteracją.
Licznik pętli
W
większości pętli konieczne jest kontrolowanie liczby powtórzeń. W tym celu
wykorzystywany jest licznik.
W
architekturze 8086 rolę licznika bardzo często pełni rejestr: CX
Rejestr
ten może być: zwiększany (INC), zmniejszany (DEC), porównywany (CMP), automatycznie
obsługiwany przez instrukcję LOOP
Pętla wykorzystująca instrukcje warunkowe
Najprostszą
metodą realizacji pętli jest wykorzystanie instrukcji:
mov cx, 1
petla:
; fragment
programu wykonywany wielokrotnie
inc cx
cmp cx, 10
jl petla
Opis
działania programu
Instrukcja LOOP
Procesor
8086 posiada specjalną instrukcję przeznaczoną do realizacji pętli:
LOOP etykieta
Dzięki temu nie trzeba samodzielnie wykonywać instrukcji DEC CX.
mov cx, 5
petla:
; instrukcje wykonywane 5 razy
loop petla
Przykład pętli oczekującej na znak
petla:
mov ah, 01h
int 21h
cmp al, 'k'
jne
petla
Takie rozwiązanie nazywane jest często pętlą nieskończoną z
warunkiem wyjścia.
Zadanie 1.
Napisz
program w trzech wersjach wyświetlający 20 razy napis „Jezyk assembler”.
Użyj instrukcje loop oraz instrukcje warunkowe
(warunek pozwalający pozostać w pętli, warunek wyjścia z pętli.
Zadanie
2.
Napisz
program pobierający znaki z klawiatury. Program powinien ciągle pobierać znaki
wyświetlając napis „nacisnij klawisz ”, aż do momentu wciśnięcia klawisza
‘k’.
Zadanie 3.
Napisz
program obliczający n silnie. Wartość n pobierz z klawiatury (od 1 do 9, w
przeciwnym wypadku wyświetl komunikat „nieprawidłowa wartość).
Zadanie 4.
Napisz
program wyświetlający wartości parzyste od 200 do 2. Napisz go w dwóch wersjach
przy pomocy instrukcji warunkowych oraz pętli loop.