POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI I INFORMATYKI Architektura komputerów Zadanie laboratoryjne N 4
Zadanie laboratoryjne N 4
TEMAT: ROZKAZY SKOKÓW WARUNKOWYCH I ORGANIZACJI PĘTLI Celem niniejszego zadania laboratoryjnego jest zapoznanie się studentów ze sposobem wykonywania rozkazów skoków warunkowych oraz z rozkazami organizacji pętli programowych. Ro-dzaje skoków warunkowych, z jakimi będziemy mieli do czynienia na obecnych zajęciach, przed-stawiono w Tabeli 1, kody operacji natomiast w Tabeli 2. Rysunek 1 określa format rozkazu jaki przyjmiemy dla obecnie opracowywanych rozkazów.
15
8 7
0
Kod operacji
IP_inc
Rysunek 1: Format rozkazów skoków warunkowych i organizacji pętli Skok warunkowy umożliwia wykonanie skoku o wartość zadaną w kodzie rozkazu w pozycji IP_INC, w przypadku gdy zadany warunek jest spełniony. Liczba IP_INC jest traktowana jako liczba ze znakiem, więc korzystając z rozkazu skoku warunkowego jesteśmy w stanie wykonać przejście o ± 127 względem bieżącej wartości znajdującej się w liczniku rozkazów.
Tabela 1:
Mnemonik
Opis
Mnemonik
Opis
JA
Skok, jeżeli powyżej
JNA
Skok, jeżeli nie powyżej JAE
Skok, jeżeli powyżej lub równe JNAE
Skok, jeżeli nie powyżej lub równe JB
Skok, jeżeli poniżej
JNB
Skok, jeżeli nie poniżej JBE
Skok, jeżeli poniżej lub równe JNBE
Skok, jeżeli nie poniżej lub równe JC
Skok, jeżeli przeniesienie JNC
Skok, jeżeli brak przeniesienia JE
Skok, jeżeli równe
JNE
Skok, jeżeli nie równe JG
Skok, jeżeli większe
JNG
Skok, jeżeli nie większe JGE
Skok, jeżeli większe lub równe JNGE
Skok, jeżeli nie większe lub równe JL
Skok, jeżeli mniejsze
JNL
Skok, jeżeli nie mniejsze JLE
Skok, jeżeli mniejsze lub równe JNLE
Skok, jeżeli nie mniejsze lub równe JO
Skok, jeżeli przepełnienie JNO
Skok, jeżeli brak przepełnienia JS
Skok, jeżeli znak
JNS
Skok, jeżeli brak znaku JZ
Skok, jeżeli zero
JNZ
Skok, jeżeli nie zero
Rozkazy organizacji pętli jako licznik pętli wykorzystują rejestr CX, który jest zmniejszany przy każdym przejściu przez pętlę i w zależności od rodzaju wykonywanego rozkazu pętli (spełnienia lub nie, określonego warunku) wykonywana jest zmiana zawartości licznika rozkazów.
Rozkaz JCXZ sprawdza jedynie czy rejestr CX = 0 i odpowiednio modyfikuje IP.
Istnieje również rozkaz skoku bezwarunkowego o formacie rozkazu przedstawionym na Rysunku 1.
Zagadnienia do opracowania przed przystąpieniem do wykonywania zadania laboratoryjnego:
1. Zasada działania rozkazów skoków warunkowych i bezwarunkowych.
2. Zasada działania rozkazów:
LOOP;
LOOPE;
LOOPNE;
LOOPZ;
LOOPNZ;
JCXZ.
1 z 2
POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI I INFORMATYKI Architektura komputerów Zadanie laboratoryjne N 4
Tabela 2:
Mnemonik
Kod
Warunek
Mnemonik
Kod
Warunek
operacji
operacji
JO
70h
OF=1
JNO
71h
OF=0
JB, JC, JNAE
72h
CF=1
JNB, JNC, JAE
73h
CF=0
JE, JZ
74h
ZF=1
JNE, JNZ
75h
ZF=0
JNA, JBE
76h
CF=1 or ZF=1
JA, JNBE
77h
CF=0 and ZF=0
JS
78h
SF=1
JNS
79h
SF=0
JL, JNGE
7Ch
SF != OF
JNL, JGE
7Dh
SF=OF
JNG, JLE
7Eh
ZF=1 or SF!=OF JG, JNLE
7Fh
ZF=0 and SF=OF
JCXZ
E3h
CX=0
JMP
EBh
LOOP
E2h
LOOPE, LOOPZ
E1h
CX!=0 and ZF=1 LOOPNE,LOOPNZ
E0h
CX!=0 and ZF=0
gdzie OF oznacza flagę przepełnienia, SF – znaku, CF – przeniesienia/pożyczki, ZF – zera 3. Zapisz w postaci binarnej i szesnastkowej kody rozkazów zadanych w tabeli 3, oraz
rozkazy LOOP, JCXZ.
4. Zapisz w postaci algorytmu program powstały na poprzednich zajęciach i uzupełnij go, o rozkazy zawarte punkcie 2 powyżej. Zaznacz nowe treści.
Tabela 3:
Nr st.
Rozkaz
1 i 6 JNC, JNZ, JO
2 i 7 JC, JZ, JNO
3 i 8 JNC, JNE, JS
4 i 9 JNAE, JE, JNS
5 i 10 JB, JNE, JS
Zadania podstawowe do wykonywania w czasie trwania zajęć laboratoryjnych: P_1. Rozbuduj program z 2 zajęć laboratoryjnych o rozkazy zawarte w bieżącym algorytmie.
P_2. W czasie dekodowania sprawdź kod operacji rozkazu.
Zadania dodatkowe wykonywania w czasie trwania zajęć laboratoryjnych: D_1. Weź program z poprzednich zajęć i ustaw jako komentarz dekodowanie wszystkich rozkazów poza NOP, następnie usuń (lub ustaw jako komentarz) fragment (lub fragmenty) programu z obszaru w którym są wykonywane te rozkazy.
D_2. Dodaj kolejne rozkazy do już obsługiwanych przez program, tak aby wykonywał się dowolny skok warunkowy.
D_3. Zadbaj o to by program zajmował jak najmniej komórek pamięci mikro rozkazów.
2 z 2