Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

Podobne dokumenty
Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Architektura komputerów. Asembler procesorów rodziny x86

Jerzy Nawrocki, Wprowadzenie do informatyki

Sterowanie pracą programu

Sprzęt i architektura komputerów

Programowanie komputera

Architektura systemów komputerowych Laboratorium 10 Symulator SMS32 Urządzenia wejścia i wyjścia

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Algorytm mnożenia sekwencyjnego (wariant 1)

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Architektura typu Single-Cycle

Pętle. Dodał Administrator niedziela, 14 marzec :27

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Wstęp do Reverse engineeringu

Programowanie niskopoziomowe

START: ; start programu od adresu 0100H ; zerowanie komórek od 01H do 07FH ( 1 dec dec)

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Sprzęt i architektura komputerów

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

Architektura komputerów

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

organizacja procesora 8086

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Architektura komputerów

Podstawy Programowania C++

Pętla for. Wynik działania programu:

Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Metody Realizacji Języków Programowania

Lista Rozkazów: Język komputera

Magistrala systemowa (System Bus)

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

1. Operacje logiczne A B A OR B

Struktura i działanie jednostki centralnej

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Lista instrukcji mikroprocesora Programowanie w assemblerze

Warunki logiczne instrukcja if

WHILE (wyrażenie) instrukcja;

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Pracownia Komputerowa wykład IV

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Architektura komputerów

Instrukcje cykliczne (pętle) WHILE...END WHILE

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Pracownia Komputerowa wykład V

Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

Wydział Mechaniczny. Instrukcja do zajęć laboratoryjnych

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Każde wykonanie bloku instrukcji nazywamy pojedynczym przebiegiem lub iteracją pętli.

Lista rozkazów mikrokontrolera 8051

WHILE (wyrażenie) instrukcja;

Pracownia Komputerowa wyk ad IV

Instytut Teleinformatyki

ECDL Podstawy programowania Sylabus - wersja 1.0

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Pętle instrukcje powtórzeo

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Liczby losowe i pętla while w języku Python

Laboratorium 2: Pętle i instrukcje warunkowe. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

6. Pętle while. Przykłady

Programowanie komputerowe. Zajęcia 3

Część XV C++ Ćwiczenie 1

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Ćwiczenie 3. Konwersja liczb binarnych

Wykład z Technologii Informacyjnych. Piotr Mika

Mikrokontroler ATmega32. Język symboliczny

Programowanie komputerowe. Zajęcia 1

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

1.1. Pozycyjne systemy liczbowe

LibreOffice Calc VBA

Maxima i Visual Basic w Excelu

wagi cyfry pozycje

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

DSM51 operacje przesylania danych i operacje arytmetyczne strona 1

Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1

AGH Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Technika mikroprocesorowa I Wykład 2

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (

1 Wprowadzenie do algorytmiki

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Zapis liczb binarnych ze znakiem

Transkrypt:

Marcin Stępniak Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle 1. Informacje 1.1. Instrukcje skoku Instrukcje skoku zmieniają wskaźnik instrukcji w rejestrze IP. Powoduje to, że po wykonaniu skoku program kontynuuje pracę w innym miejscu. To miejsce ustalane jest za pomocą etykiety. Etykiety dodawane są do programu w postaci nazwa_etykiety:. Ten zapis wskazuje miejsce w kodzie programu, do którego można skoczyć na podstawie nazwy etykiety. Instrukcje skoku w języku asemblera zapisujemy w postaci nazwa_instrukcji_skoku nazwa_etykiety. W tabeli 1 zostały opisane dostępne instrukcje skoku. Warunkowe instrukcje skoku korzystają z rejestru flag SR (ang. Status Register). Rejestr ten jest modyfikowany przez operacje arytmetyczne i logiczne. Rejestr SR zawiera następujące flagi: Flaga "Z" (zera) jest ustawiana na jeden, jeśli obliczenia dały wynik zerowy. Flaga "S" (znaku) jest ustawiana na jeden, jeśli obliczenia dały wynik ujemny. Flaga "O" (przepełnienia) jest ustawiana, jeśli wynik był zbyt duży, aby zmieścić się w rejestrze. Gdy wartość rejestru osiągnie 7F (16) lub 127 (10), to następna powinna być liczba 128, ale ze względu na sposób, w jaki numery są przechowywane w systemie binarnym, następną liczbą jest minus 128. Efekt ten nazywany jest przepełnieniem. 1

Flaga "I" (przerwania) jest ustawiana, jeśli przerwania są włączone. Tabela 1. Instrukcje skoku symulowanego mikroprocesora Instr. JMP JZ JNZ JS JNS JO JNO Działanie skok bezwarunkowy; zawsze skacze do wskazanej etykiety skacze do wskazanej etykiety jeżeli flaga "Z" jest ustawiona skacze do wskazanej etykiety jeżeli flaga "Z" nie jest ustawiona skacze do wskazanej etykiety jeżeli flaga "S" jest ustawiona skacze do wskazanej etykiety jeżeli flaga "S" nie jest ustawiona skacze do wskazanej etykiety jeżeli flaga "O" jest ustawiona skacze do wskazanej etykiety jeżeli flaga "O" nie jest ustawiona Czasami zachodzi konieczność porównania dwóch wartości, a nie chcemy wykonywać operacji arytmetycznej ani logicznej. W takiej sytuacji można wykorzystać instrukcję CMP, która działa tak jak SUB, ustawia odpowiednie flagi, ale nie zapisuje wyniku w żadnym rejestrze. Działanie instrukcji CMP zostało zaprezentowane w tabeli 2. Instrukcja CMP AL,BL Tabela 2. Przykłady działania instrukcji CMP Działanie Ustawia flagę Z jeżeli AL = BL Ustawia flagę S jeżeli AL < BL CMP BL,13 Ustawia flagę Z jeżeli BL = 13 Ustawia flagę S jeżeli BL < 13 CMP CL,[20] Ustawia flagę Z jeżeli CL = [20] Ustawia flagę S jeżeli CL < [20] Listing 1 zawiera kod programu w języku asemblera wraz z komentarzami objaśniającymi działanie poszczególnych instrukcji skoku. Zrozumienie działania tych instrukcji będzie niezbędne do rozwiązania zadań. Program w zamieszczonej wersji nigdy się nie kończy. Po ostatnim teście następuje skok bezwarunkowy do testu pierwszego. Listing 2 zawiera kod programu z przykładami wyjaśniającymi działanie instrukcji CMP. Podobnie jak w przykładzie pierwszym, program nigdy się nie kończy. Po ostatnim teście następuje skok bezwarunkowy do testu pierwszego. Listing 1. Program demonstrujący instrukcje skoków CLO ; zamknij wszystkie okna. 2

test1: MOV AL, 7 SUB AL, 7 JZ test2 ;skacze do nastepnego testu ;jezeli ustawiona jest flaga zera JNZ end_label ;skacze na koniec ;jezeli nie jest ustawiona flaga zera test2: MOV AL, 6E ;110 ADD AL, 2C ;44 JO test3 ;skacze do nastepnego testu ;jezeli ustawiona jest flaga przepelnienia JNO end_label ;skacze na koniec ;jezeli nie jest ustawiona flaga przepelnienia test3: ;przepelnienie dla liczb ujemnych MOV AL, 89 ;-119 SUB AL, 2C ;44 JO test4 ;skacze do nastepnego testu ;jezeli ustawiona jest flaga przepelnienia JNO end_label ;skacze na koniec ;jezeli nie jest ustawiona flaga przepelnienia test4: MOV AL, 2C ;44 SUB AL, 6E ;110 JS unconditional ;skacze do etykiety unconditional ;jezeli ustawiona jest flaga znaku JNS end_label ;skacze na koniec ;jezeli nie jest ustawiona flaga znaku unconditional: JMP test1 ;skacze bezwarunkowo do etykiety test1 end_label: END Listing 2. Program demonstrujący instrukcje porównania (CMP) i skoków warunkowych CLO ; zamknij wszystkie okna. test1: CMP AL, 5 JZ test2 ;skacze do nastepnego testu jezeli ;ustawiona jest flaga zera (warunek 5=5) JNZ end_label ;skacze na koniec jezeli 3

;nie jest ustawiona flaga zera (niespelniony warunek 5!=5) test2: CMP AL, 7 JS test3 ;skacze do nastepnego testu jezeli ;ustawiona jest flaga znaku (warunek 5<7) JNS end_label ;skacze na koniec jezeli ;nie jest ustawiona flaga znaku (niespelniony warunek 5>=7) test3: CMP AL, 3 JZ end_label ;skacze na koniec jezeli ;jest ustawiona flaga znaku (niespelniony warunek 5=3) JNS unconditional ;skacze do etykiety unconditional jezeli ;nie jest ustawiona flaga znaku ;(spelniony warunek 5>=3) ;razem z warunkiem na zero mamy 5>3 JMP end_label ;skacze na koniec jezeli poprzednie ;instrukcje warunkowe nie zostaly wykonane unconditional: JMP test1 ;skacze bezwarunkowo do etykiety test1 end_label: END 1.2. Dodatkowe informacje http://www.softwareforeducation.com/sms32v50/sms32v50_manual/index.htm 2. Zadania 2.1. Zadanie 1 Napisać program zawierający pętlę zmniejszającą rejestr AL o 2 (10) w każdej iteracji. Początkową wartość rejestru należy ustawić na 11 (10). Warunkiem wyjścia z pętli jest wartość rejestru AL mniejsza od 0 (AL<0). 2.2. Zadanie 2 Napisać program zawierający pętlę zwiększającą rejestr AL o 3 (10) w każdej iteracji. Początkową wartość rejestru należy ustawić na 0. Warunkiem wyjścia z pętli jest wartość rejestru AL większa od 63 (10) (AL>63 (10) ). 4

Rysunek 1. Diagram przepływu dla pętli while 2.3. Zadanie 3 Napisać program, który zawiera zaimplementowaną pętlę typu while w postaci while(x<71 (10) ){x++}. Zmienna x powinna być ustawiana przed pętlą. Należy wziąć pod uwagę fakt, że pętla może nie wykonać się ani razu. 2.4. Zadanie 4 Napisać program umieszczający w rejestrze AL kolejne liczby ciągu Fibonacciego (pierwszy wyraz jest równy 0, drugi jest równy 1, każdy następny jest sumą dwóch poprzednich). Program powinien zakończyć swoją pracę po wystąpieniu przepełnienia w rejestrze AL. 5