Laboratorium architektury komputerów



Pobieranie 301,32 Kb.
Strona1/2
Data05.12.2017
Rozmiar301,32 Kb.
  1   2


Ćwiczenie 5.

Temat ćwiczenia:

Lista rozkazów

Jedna z częstych operacji jakie wykonywane przez wszystkie moduły oprogramowania uczestniczące w transmisji danych jest sprawdzanie parzystości bajtu lub dopisywanie bitu parzystości do bajtu. Jest to zadanie o stopniu skomplikowania zależnym od możliwości, jakie daje lista rozkazów.



Zadania do wykonania w trakcie laboratorium:
Moduł A. Analiza listy rozkazów mikrokontrolera


  1. Zanalizuj listę rozkazów mikrokontrolera MCS-51 (produkcja - Intel). Skorzystaj z dokumentacji producenta http://www.keil.com/dd/docs/datashts/intel/ism51.pdf

Policz, ile jest różnych rozkazów w grupach:

przy czym należy policzyć zarówno

  • ile jest rozkazów różniących się funkcją(rozkazy ADD A,Rn i ADD A,@Ri nie różnią się funkcją)

  • jak i ile jest różnych rozkazów. (rozkazy ADD A,Rn i ADD A,@Ri nie różnią się funkcją ale są to różne rozkazy)

Sporządź tabelkę:




rozkazów różniących się funkcją

różnych rozkazów

Operacje arytmetyczne








Operacje logiczne







Operacje przesłań







Operacje manipulacji na bitach







skoki










  1. Sprawdź, jaką długości (w bajtach) mają kody rozkazów mikrokontrolera (kolumna Byte dokumentacji). Policz, ile jest różnych rozkazów o długości 1, 2 i 3 bajtów.






Długości 1 bajty

2 bajty

3 bajty

różnych rozkazów mikrokontrolera













  1. 12 cykli zegara to jeden cykl maszynowy. Policz, ile rozkazów wykonuje się w czasie 1, 2, 3 i 4 cykli maszynowych.



Czas wykonania

1 cykl maszynowy

2 cykle

3 cykle

4 cykle

różnych rozkazów mikrokontrolera















  1. Czas wykonania instrukcji skoku warunkowego w wielu architekturach zależy od tego, czy skok jest efektywny (wykona się) czy nie jest. Jak to jest w 8051?

  2. Rozkazy przesłań (MOV) mikrokontrolera pozwalają przesłać dana ze źródła do miejsca przeznaczenia. Sporządź i wypełnij tabelę jak niżej.

    MOV


Skąd

dokąd


Rejestr A

RAM wewnętrzny bezpośrednio

RAM wewnętrzny pośrednio

Pamięć programu (tryb natychmiastowy)

Rejestr DPTR

Rejestr A
















RAM wewnętrzny bezpośrednio
















RAM wewnętrzny pośrednio
















Pamięć programu (tryb natychmiastowy)
















Rejestr DPTR



















  1. Architektura jednostki arytmetyczno-logicznej nie pozwala w większości wypadków na dowolne umiejscawianie wyniku operacji. Gdzie pojawia się wynik wymienionych niżej rozkazów?

Wynik
Rozkaz

Rejestr A

Rejestr B

Rejestr Ri

Rejestr DPTR

Komórka RAM wewnętrzny

Komórka RAM zewnętrzny

Dodaj ADD



















Odejmij

SUBB




















Zwiększ INC



















Zmniejsz DEC



















Mnożenie MUL



















Dzielenie DIV






















  1. 8051 posiada cały szereg instrukcji skoków warunkowych i bezwarunkowych. Można je podzielić generalnie na skoki długie, np. LJMP (w obrębie całej pamięci programu), skoki krótkie, np. AJMP i, skoki względne (odskoki), np. SJMP. Na jaką maksymalną odległość można skoczyć wykorzystując skok odpowiedniej kategorii? Sporządź i wypełnij tabelę jak niżej. W tabeli mogą znaleźć się następujące wartości:

    1. Cała pamięć

    2. Wartość dziesiętna lub hex.



skok

w przód

W tył

Typu LJMP







Typu AJMP







Typu SJMP






Jakiego typu są wymienione poniżej skoki (warunkowe i bezwarunkowe)?








Skok długi

Skok krótki

Skok względny

AJMP










LJMP










SJMP










JMP @A+DPTR










JZ, JNZ










JC, JNC










JB, JNB










JBC










CJNE










DJNZ












  1. W 8051 posiada listę instrukcji obejmującą 255 różnych kombinacji bitowych na pierwszym bajcie kodu rozkazu. Jedynym „nieobsadzonym” kodem jest 0xA5. Znajdź w Internecie informację na temat skutków użycia tego kodu. (8051 opcode 0xA5). Przykładowy program zawierający kod j/w zamieszczony jest poniżej



LJMP START

ORG 100H


START:

NOP ;instrukcja nic nie rob

DB 0A5H ;pseudoinstrukcja definiujaca zawartosc bajtu

NOP ;jeszcze jedna instrukcja nic nie rob



Moduł B. Pożytki z pewnych rozwiązań w architekturze procesora.


  1. Zaprojektuj algorytm, który dodaje do kodu ASCII trzeciej litery w twoim nazwisku bit parzystości. Kod powinien znajdować się w akumulatorze i tenże akumulator należy uzupełnić o bit parzystości. Można to zrobić na rożne sposoby, np. użyć operacji przesłania bitowego (MOV) i przesłać bit P (flaga P z PSW jest ustawiana w każdym cyklu rozkazowym w zależności od zawartości akumulatora – jeżeli w akumulatorze jest parzysta ilość jedynek P=0, w przeciwnym razie P=1) do bitu CY a potem manipulując akumulatorem i bitem CY za pomocą rozkazów z grupy przesunięć (RL, RR, RLC i RRC ) wstawić ten bit jako bit 7 akumulatora.



  1. Wyobraź sobie, że mikrosterownik nie ma wskaźnika parzystości P. Zaprojektuj algorytm, który tak jak uprzednio uzupełnia kod ASCII tej samej litery twojego nazwiska o bit parzystości. Kod powinien znajdować się w akumulatorze i tenże akumulator należy uzupełnić o bit parzystości.
    Trzeba będzie zsumować bity znaku i w zależności od uzyskanego wyniku (1 lub 0) ustawić 0 lub 1 jako bit 7 (najstarszy) akumulatora. Można to zrobić np. zliczając bity równe 1 wykonując (lub nie, w zależności od tego czy badany kolejny bit jest jedynką lub 0, rozkazy do wykorzystania JB, JNB) rozkaz increment a wszystko w pętli (7 razy) albo liniowo (7 rozkazów). Można inaczej, umieścić w 7 kolejnych komórkach pamięci 7 razy kod, każdy przesunięty o 1 bit w prawo. Potem należy zsumować modulo 2, np. używając rozkazu XRL, zawartość wszystkich 7 komórek ( siedmiu a nie ośmiu, bo interesuje nas siedem bitów, ósmy mamy ustawić). Jeden z bitów (który?) tak otrzymanej sumy będzie zawierał bit parzystości znaku.




  1. Porównaj oba algorytmy. Już wiesz jak bardzo zależy efektywność programowania od możliwości jakie daje lista rozkazów?


Moduł C
Mikrokontroler posiada tylko 2 typy rozkazów przesunięć i rotacji i oba typy rozkazów dotyczą przesunięć zawartości akumulatora (w lewo lub w prawo) z użyciem wskaźnika CY lub nie.

RL A





RR A

RLC A


RRC A

Zwykle zestaw tego typu operacji obejmuje jeszcze przesunięcia arytmetyczne w prawo i w lewo oraz rotacje w prawo i w lewo z jednoczesnym przeniesieniem bitu najmłodszego (najstarszego) do CY







  1   2


©operacji.org 2017
wyślij wiadomość

    Strona główna