Obraz zawierający tekst, Czcionka, Grafika

Opis wygenerowany automatycznie 

Kierunek Informatyka

 

Instrukcja do ćwiczeń laboratoryjnych nr:

6

Nazwa przedmiotu:
Programowanie niskopoziomowe

Temat: Pętle  

Tryb studiów: stacjonarny
i niestacjonarny

Czas trwanie ćw.

2x45 min

Autor materiałów: dr Marcin Skuba

 

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

  1. Do rejestru CX wpisywana jest wartość 1.
  2. Program wykonuje instrukcje znajdujące się wewnątrz pętli.
  3. Instrukcja INC CX zwiększa licznik.
  4. CMP CX, 10 porównuje wartość licznika z liczbą 10.
  5. JL petla powoduje powrót do początku pętli, gdy CX < 10.

 

Instrukcja LOOP

Procesor 8086 posiada specjalną instrukcję przeznaczoną do realizacji pętli:

 

LOOP etykieta

 

  1. automatycznie zmniejsza wartość rejestsru CX,
  2. sprawdza czy CX ≠ 0,
  3. wykonuje skok do wskazanej etykiety.

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.