Elektronika i Telekomunikacja POLSL
Forum Elektroników Wydziału AEI Politechniki Śląskiej
FAQ  ::  Szukaj  ::  Użytkownicy  ::  Grupy  ::  Galerie  ::  Rejestracja  ::  Profil  ::  Zaloguj się, by sprawdzić wiadomości  ::  Zaloguj


Zadania ze skryptu pt."Maszyna W. Pierwsze programy.&qu

 
Napisz nowy temat   Odpowiedz do tematu    Forum Elektronika i Telekomunikacja POLSL Strona Główna » Semestr I / WDI
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Gość







PostWysł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ść







PostWysł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

PostWysł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
Zobacz profil autora
Gość







PostWysł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

PostWysłany: Pon 22:03, 23 Paź 2006    Temat postu:

dzięki za info Razz
Powrót do góry
Zobacz profil autora
Gość







PostWysł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ść







PostWysł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

PostWysł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
Zobacz profil autora
Gość







PostWysł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

PostWysłany: Nie 18:12, 29 Paź 2006    Temat postu:

A TAM DUPCZYSZ
Powrót do góry
Zobacz profil autora
Gość







PostWysł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 Very Happy
Powrót do góry
Christopher
Tłuste zero



Dołączył: 11 Paź 2006
Posty: 81
Przeczytał: 0 tematów


PostWysł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
Zobacz profil autora
maro
PRAWIE elektronik - prawie robi...



Dołączył: 17 Paź 2006
Posty: 188
Przeczytał: 0 tematów

Skąd: Katowice

PostWysłany: Śro 18:34, 01 Lis 2006    Temat postu:

Że się wtrące w wątek... wiecie jak to jest? Póki co Wink jesteśmy studentami. Jakby nam kazali narysować i nauczyć się schematu Pentium IV, to i tak jakoś byśmy się nauczyli Wink
Powrót do góry
Zobacz profil autora
Gość







PostWysł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
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Elektronika i Telekomunikacja POLSL Strona Główna » Semestr I / WDI Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
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
  ::  
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group   ::   template subEarth by Kisioł. Programosy   ::  
Regulamin