Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Gość
|
Wysłany: Nie 18:00, 22 Paź 2006 Temat postu: Zadania ze skryptu pt."Maszyna W. Pierwsze programy.&qu |
|
|
Adres do skryptu [link widoczny dla zalogowanych]
Chodzi mi dokładnie o ćw 2 (szukanie największej i najmniejszej liczby wśród 5)
Są 2 problemy:
1.czy uwzględniamy liczb ujemne gdy tak to jak wygląda algorytm działania
2.Jeżeli nie mamy ujemnych to jak wygląda algorytm
Jeżeli ktoś ma spis WSZYSTKICH sygnałów/rozkazów to byłbym wdzięczn za podanie ich
|
|
Powrót do góry |
|
|
|
|
Gość
|
Wysłany: Pon 4:27, 23 Paź 2006 Temat postu: |
|
|
Ehh... przekonbinowywowują...
Raz, że ta maszyna nie jest stworzona do tego typu rzeczy - brak jakiegokolwiek charakterystycznego rejestru poza akumulatorem sprawia, że mamy niemalże zupełnie związane ręce. Nie można nawet zrobić głupiej podprocedury, bo bez dodatkowego rejestru nie utworzymy sobie nijak stosu.
Po to powstały bardziej zaawansowane jej wersje, żeby właśnie na nich podobne problemy realizować.
Dwa, że sam pomysł też jest nieco głupi.
Jeśli już działamy jakoś na ciągu liczb, to powinniśmy to zrobić pętlą, znaczy liczby powinny zostać umieszczone w jakimś obszarze pamięci jedna po drugiej - tablicowo. A tutaj sobie wymyślają, że liczby mają być opisane etykietami i już w ogóle pozamiatane...
Ale dobra, koniec narzekań...
Stworzymy sobie rozkaz, który porównuje zawartość akumulatora z liczbą spod dołączonego adresu i zostawia w akumulatorze większą z nich:
Kod: | #max - jednoargumentowy
czyt wys wei il ;
wyad wea ;
czyt wys weja ode weak wyl wea;
if z then e1 ;
wys weja dod weak !
e1: wys weja przep weak ; |
i analogicznie z mniejszą wartością:
Kod: | #min - jednoargumentowy
czyt wys wei il ;
wyad wea ;
czyt wys weja ode weak wyl wea;
if !z then e1 ;
wys weja dod weak !
e1: wys weja przep weak ; |
Od razu gwoli wyjaśnienia: właśnie ten brak jakichkolwiek rejestrów sprawia, że nawet tak banalne operacje, jak ta powyższa, są prawie nie do zrealizowania. Bo co nam z tego, że odejmiemy od siebie dwie liczby i po znaku będziemy wiedzieć, która z nich jest większa/mniejsza, jeśli... jeśli jedną z nich tą właśnie operacją unicestwiliśmy na dobre, więc i tak jej nie znamy?
Ale to jest do odratowania, bo jeśli na magistrali danych mamy wciąż odjemnik, a w akumulatorze różnicę, odjemną możemy przywrócić wykonując odwrotną operację - dodawanie...
Czyli algorytm się przedstawia tak:
a - dotychczasowa wartość maksymalna
b - kolejna liczba do sprawdzenia
a - b = c
1. Jeśli c > 0, to znaczy, że stara liczba była większa, więc ją przywracamy: c + b = a
2. Jeśli c < 0, to interesuje nas liczba b, którą cały czas posiadamy - przepisujemy do akumulatora
I jeszcze sam program:
Kod: | pob St0
max St1
max St2
max St3
max St4
max St5
ład WnW
pob St0
min St1
min St2
min St3
min St4
min St5
ład WnM
stop
WnW: rst 0
WnM: rst 0
St0: rst 32
St1: rst 85
St2: rst 45
St3: rst 115
St4: rst 2
St5: rst 8 |
Odnośnie pytania o możliwe do użycia wartości: 7-bit unsigned, tj. 0-127.
To dość typowe, że jeśli jednostka licząca pracuje na 8 bitach, to przy tego typu operacjach będziemy mogli wykorzystać zaledwie 7.
Właśnie z tego powodu później był dodawany zawsze dodatkowy, dziewiąty bit przepełnienia, który może i sam w sobie się nie nadawał do wykonywania operacji matematycznych, ale dawał tyle, że umożliwiał nam wykonywanie wszelakich operacji 8-bitowych na 8-bitowej maszynie - inaczej to trochę bez sensu.
A na koniec jeszcze wersja All-In-One dla zboczonych hardcore'owców oraz miłośników tuningu komputerowo-samochodowego:
Kod: | #mx2 - sześcioargumentowy
czyt wys wei il ;
wyad wea ;
czyt wys weja przep weak wyl wea il ;
czyt wys wei ;
wyad wea ;
czyt wys weja ode weak wyl wea il ;
if z then e1a ;
wys weja dod weak ;
if z then e1b ;
if !z then e1b ;
e1a: wys weja przep weak ;
e1b: czyt wys wei ;
wyad wea ;
czyt wys weja ode weak wyl wea il ;
if z then e2a ;
wys weja dod weak ;
if z then e2b ;
if !z then e2b ;
e2a: wys weja przep weak ;
e2b: czyt wys wei ;
wyad wea ;
czyt wys weja ode weak wyl wea il ;
if z then e3a ;
wys weja dod weak ;
if z then e3b ;
if !z then e3b ;
e3a: wys weja przep weak ;
e3b: czyt wys wei ;
wyad wea ;
czyt wys weja ode weak wyl wea il ;
if z then e4a ;
wys weja dod weak ;
if z then e4b ;
if !z then e4b ;
e4a: wys weja przep weak ;
e4b: czyt wys wei ;
wyad wea ;
czyt wys weja ode weak wyl wea ;
if z then e5a ;
wys weja dod weak ;
if z then e5b ;
if !z then e5b ;
e5a: wys weja przep weak ;
e5b: ;
#mn2 - sześcioargumentowy
czyt wys wei il ;
wyad wea ;
czyt wys weja przep weak wyl wea il ;
czyt wys wei ;
wyad wea ;
czyt wys weja ode weak wyl wea il ;
if !z then e1a ;
wys weja dod weak ;
if z then e1b ;
if !z then e1b ;
e1a: wys weja przep weak ;
e1b: czyt wys wei ;
wyad wea ;
czyt wys weja ode weak wyl wea il ;
if !z then e2a ;
wys weja dod weak ;
if z then e2b ;
if !z then e2b ;
e2a: wys weja przep weak ;
e2b: czyt wys wei ;
wyad wea ;
czyt wys weja ode weak wyl wea il ;
if !z then e3a ;
wys weja dod weak ;
if z then e3b ;
if !z then e3b ;
e3a: wys weja przep weak ;
e3b: czyt wys wei ;
wyad wea ;
czyt wys weja ode weak wyl wea il ;
if !z then e4a ;
wys weja dod weak ;
if z then e4b ;
if !z then e4b ;
e4a: wys weja przep weak ;
e4b: czyt wys wei ;
wyad wea ;
czyt wys weja ode weak wyl wea ;
if !z then e5a ;
wys weja dod weak ;
if z then e5b ;
if !z then e5b ;
e5a: wys weja przep weak ;
e5b: ;
# i program:
mx2 St0 St1 St2 St3 St4 St5
ład WnW
mn2 St0 St1 St2 St3 St4 St5
ład WnM |
A propo: wie ktoś może, jak w tym symulatorze wykonać skok wewnątrz rozkazu? Skok warunkowy, jak widzę, jest, więc chyba i bezwarunkowy powinien być, ale wykorzystałem chyba wszystkie możliwości i nic - musiałem popełnić te głupie:
Kod: | if z then et ;
if !z then et ; |
|
|
Powrót do góry |
|
|
deeb
PRAWIE elektronik - prawie robi...
Dołączył: 10 Paź 2006
Posty: 294
Przeczytał: 0 tematów
Skąd: z XORa
|
Wysłany: Pon 17:42, 23 Paź 2006 Temat postu: |
|
|
a można wiedziec co oznacza ten "!" w instrukcji max lub min??
- - - - - - - - -
e3
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Pon 18:01, 23 Paź 2006 Temat postu: |
|
|
Umieszczony zamiast średnika kończy wykonywanie danego rozkazu.
Ten stojący przy 'z', czyli: 'if !z then ...', to negacja, tj. ten warunek jest spełniony, nastąpi skok, gdy liczba w akumulatorze będzie dodatnia.
A odnośnie tematu... czy ktoś poza E4 miał już na zajęciach to zadanie?
Chodzi mi o to, że u nas gość diametralnie zmienił treść zadania, napisał program na swój własny sposób, a ja teraz jestem ciekaw, czy tak jest wszędzie.
Jeśli ktoś już to miał i posiada listing programu z tymi maksymalnymi wartościami, to prosiłbym o przepisanie tutaj - chcę porównać z tym, co naskrobałem dziś w pociągu.
Dotyczy także E4 - ja, oczywiście, programu z tablicy nie przepisałem, a ciekaw jestem, o ile był dłuższy od mojego ;-P
|
|
Powrót do góry |
|
|
deeb
PRAWIE elektronik - prawie robi...
Dołączył: 10 Paź 2006
Posty: 294
Przeczytał: 0 tematów
Skąd: z XORa
|
Wysłany: Pon 22:03, 23 Paź 2006 Temat postu: |
|
|
dzięki za info
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Wto 18:45, 24 Paź 2006 Temat postu: |
|
|
Ja mam WdI jutro więc postaram sie na lekcji przepisać to na forum.Jak mi sie nie uda to wieczorem.
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Śro 16:53, 25 Paź 2006 Temat postu: |
|
|
Moze kazdy w opisie (signature) napisze z jakiej grupy jest.....?
|
|
Powrót do góry |
|
|
Dominik
PRAWIE elektronik - prawie robi...
Dołączył: 10 Paź 2006
Posty: 208
Przeczytał: 0 tematów
Skąd: Tychy
|
Wysłany: Śro 23:54, 25 Paź 2006 Temat postu: |
|
|
kur... powiedzcie że jestescie pasjonatami ... "TEGO" i jutro, sry dzisiaj nie będzie takich czarów na kartkówce ?!
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Czw 10:01, 26 Paź 2006 Temat postu: |
|
|
Pasjonatami?
Uważam, że to, co robimy na WDI, jest totalnie idiotyczne. Uczymy się wewnętrznej struktury procesora, jego zasady działania, tylko że nikt tu pewnie projektantem procesorów nie będzie - jeśli już ktoś faktycznie pójdzie w kompoutery, to będzie na tych procesorach programował, a nie tworzył je. Cały świat ucieka do jak najwyższych warstw abstrakcji w programowaniu, a my schodzimy do podziemia, poniżej assemblera! To jest chore.
Pozostaje nam się cieszyć, że bawimy się względnie prostą MaszynąW, że nie kazali nam się zajmować jakimś najnowszym Pentiumem, bo rozrysowanie jego struktury wewnętrznej by wymagało chyba oklejenia "mapą" całego budynku naszego wydziału.
Tym się już od dawna zajmują komputery, człowiek nie jest w stanie projektować tego typu rzeczy, bo to go najzwyczajniej przerasta.
Heh... gdyby polibuda uczyła sztuki pilotowania ciężkich samolotów pasażerskich, to by pewnie kazała wkuwać, jakie procesy termodynamiczne zachodzą w silniku, z jakich składników i w jakich warunkach jest tworzone paliwo do samolotu...
Ehh... paranoja...
|
|
Powrót do góry |
|
|
Dominik
PRAWIE elektronik - prawie robi...
Dołączył: 10 Paź 2006
Posty: 208
Przeczytał: 0 tematów
Skąd: Tychy
|
Wysłany: Nie 18:12, 29 Paź 2006 Temat postu: |
|
|
A TAM DUPCZYSZ
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Wto 1:14, 31 Paź 2006 Temat postu: |
|
|
Dla mnie WDI jest jednym z lepszych przedmiotów. Oczywiście lepiej jakby wogule go nie było
|
|
Powrót do góry |
|
|
Christopher
Tłuste zero
Dołączył: 11 Paź 2006
Posty: 81
Przeczytał: 0 tematów
|
Wysłany: Śro 18:09, 01 Lis 2006 Temat postu: |
|
|
masz racje brutal to jest paranoją czego sie uczymy a tak na boku to tej całej maszyny W nie da sie nazwac procesorem bo brakuje jej wiele elementarnych bloków ale to szczegół.Z tym pentiumem to fajnie zazartowałes ale to prawda bo schemat ideowy pentium 4 zawiera ponad 50 milionów tranzystorów a jeszcze drugie tyle rezystorów i diod hehehehehehehehe, powodzenia w rysowaniu zycze
|
|
Powrót do góry |
|
|
maro
PRAWIE elektronik - prawie robi...
Dołączył: 17 Paź 2006
Posty: 188
Przeczytał: 0 tematów
Skąd: Katowice
|
Wysłany: Śro 18:34, 01 Lis 2006 Temat postu: |
|
|
Że się wtrące w wątek... wiecie jak to jest? Póki co jesteśmy studentami. Jakby nam kazali narysować i nauczyć się schematu Pentium IV, to i tak jakoś byśmy się nauczyli
|
|
Powrót do góry |
|
|
Gość
|
Wysłany: Śro 21:23, 01 Lis 2006 Temat postu: |
|
|
Christopher napisał: | masz racje brutal to jest paranoją czego sie uczymy a tak na boku to tej całej maszyny W nie da sie nazwac procesorem bo brakuje jej wiele elementarnych bloków ale to szczegół. |
Pewnie :-)
Przecież już najprostsze mikrokontrolery za 5zł w elektronicznym posiadają dodatkowe rejestry, systemy przerwań i duuużooo, duuużo więcej, ale cała ta zabawa ma na celu właśnie pokazanie nam, jak działają procesory od środka. To, czego się uczymy na WDI, dotyczy także i najnowszych osiągnięć wprost z Doliny Krzemowej - nie jest to nawet promilem tego, co się dzieje w dzisiejszych prockach, ale bądź co bądź te najprostsze rejestry, skoki warunkowe, liczniki rozkazu i inne też tam występują, bo... bo muszą... :-)
|
|
Powrót do góry |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
|