Maszyna RAM 1. Schemat TAŚMA WEJŚCIOWA PROCESOR PROGRAM 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10 : 11 : READ READ LOAD STORE ET1: LOAD JZERO SUB STORE LOAD MULT STORE JUMP WRITE HALT 1 2 =1 3 2 WYN 1 2 3 1 3 ET1 3 TAŚMA WYJŚCIOWA Uwagi: Pamięć składa się z nieskończonej liczby komórek pamięci. Komórki ponumerowane są kolejnymi liczbami naturalnymi. Komórka o numerze (inaczej: adresie) 0 nazywana jest akumulatorem. Spełnia ona specjalną rolę (patrz: rozkazy maszyny) Każda komórka może pamiętać dowolną (ale w każdym momencie dokładnie jedną) liczbę naturalną. Taśmy wejściowa i wyjściowa są urządzeniami sekwencyjnymi i można na nich zapisywać dowolne ciągi liczb naturalnych. Na taśmie wejściowej zapisujemy dane, które będą wczytywane przez program; na taśmie wyjściowej liczby zapisywane są przez program. 2. Rozkazy 2.1 Format rozkazów: <nazwa rozkazu> <argument> 2.2 Lista rozkazów maszyny RAM: LOAD STORE przesłanie do akumulatora przesłanie do z akumulatora do komórki ADD SUB MULT DIV dodawanie odejmowanie mnożenie dzielenie JUMP JZERO JGTZ skok bezwarunkowy skok, jeśli w akumulatorze znajduje się zero skok, jeśli w akumulatorze znajduje się liczba dodatnia READ WRITE czytanie kolejnej liczby z taśmy wejściowej zapisywanie na taśmie wynikowej HALT zatrzymanie programu 2.3 Argumenty mogą mieć następującą postać: Postać Znaczenie <liczba> adres komórki =<liczba> stała liczbowa ^<liczba> adres pośredni <etykieta> etykieta rozkazu Etykieta jest dowolnym ciągiem znaków (liter lub cyfr) i występuje jako argument w rozkazach skoku. Instrukcja HALT nie posiada argumentu. 2.4 Przykłady: STORE 1 Przesłanie zawartości akumulatora do komórki o adresie 1 LOAD 5 Przesłanie zawartości komórki o adresie 5 w akumulatorze LOAD =5 Zapamiętanie liczby 5 w akumulatorze LOAD ^5 Przesłanie do akumulatora liczby znajdującej się w komórce, której adres znajduje się w komórce 5 JZERO ET Jeśli w akumulatorze znajduje się zero, to jako następny zostanie wykonany rozkaz, przed którym znajduje się etykieta ET MULT 1 Pomnożenie liczby znajdującej się w akumulatorze przez liczbę znajdującą się w komórce o adresie 1 i zapamiętanie iloczynu w akumulatorze 2.5 Uwagi: 1. Jednym z argumentów rozkazów arytmetycznych (ADD, SUB, MULT, DIV) jest zawsze akumulator. Wynik rozkazu arytmetycznego umieszczany jest w akumulatorze. 2. Nie każda postać argumentu może występować z każdym rozkazem. Przykładowo, nie mają sensu rozkazy: STORE =2 , ADD ET1, READ =3 czy JUMP 17 Rozkaz READ czyta liczbę znajdującą się aktualnie pod głowicą czytającą oraz przesuwa tę głowicę nad następną liczbę. 3.