o rejestru instrukcji. Ludzie nie są szczególnie dobry w pamiętając bitowych wzorców, więc zbiór krótkich słowach są zdefiniowane do reprezentowania różnych wzorów bitowych. Ten zbiór słów nazywa się asemblera procesora. Asembler może tłumaczyć słowa w ich wzorów bitowych bardzo łatwo, a następnie wyjście asemblerze jest umieszczony w pamięci mikroprocesora do wykonania. Największa
Oto zestaw instrukcji asemblerowych że projektant może stworzyć dla Prosty mikroprocesor w naszym przykładzie:
Loada mem - Obciążenie zarejestrować od adresu pamięci Największa LOADB mem - Obciążenie rejestr B od adresu pamięci Największa CONB con - załadować stała wartość w rejestrze B Największa SAVEB mem - Zapisz zarejestruj B do adresu pamięci Największa SAVEC mem - Zapisz zarejestruj C do adresu pamięci
ADD - Dodaj A i B i przechowywać Wynik w C Największa SUB - Odejmij A i B i zapisać wynik w C Największa MUL - mnożenie A i B i zapisać wynik w C Największa DIV - Divide A i B i zapisać wynik w C Największa COM - Porównaj A i B i zapisać wynik w teście Największa JUMP addr - skok do adresu Największa JEQ addr - skok, jeśli równe, zająć Największa JNEQ addr - skok, jeśli nie równe, zająć
JG addr - skok, jeśli jest większa niż, zajęcia
JGE addr - skok, jeśli większa lub równa, zająć Największa JL addr - skok, jeśli mniej niż zająć
JLE addr - skok, jeśli mniejsza lub równa, zajęcia
STOP - wykonanie Zatrzymaj
Jeśli przeczytałeś Jak C Programming działa, to wiesz, że ten prosty kawałek kodu C oblicza silnię 5 (gdzie silnia 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120): Największa w = 1; f = 1; while (a < = 5) {f = f * a; a = a + 1;}
Na koniec realizacji programu, zmienna f zawiera silni 5. Największa Zgromadzenie Język
AC kompilator tłumaczy ten kod C do asemblerze. Zakładając, że RAM rozpoczyna się od adresu 128 w tym procesorze i pamięci ROM (który zawiera program asemblerze) rozpoczyna się od adresu 0, to dla naszego prostego mikroprocesora może wyglądać asemblera tak: Największa //Załóżmy, że jest pod adresem 128 //Załóżmy F jest pod adresem 1290 CONB 1 //a = 1; 1 SAVEB jeden tysięcy dwieście osiemdziesiąt dwa CONB 1 //f = 1; 3 SAVEB 1294 Loada 128 //jeśli > 5 skok do 175 CONB 56 COM7 JG 178 Loada 129 //f = f * a; 9 LOADB 12810 MUL11 SAVEC 12912 Loada 128 //a = a + 1; 13 CONB 114 ADD15 SAVEC 12816 JUMP 4 //pętla z powrotem do if17 STOP ROM