Forum www.wstigz.fora.pl Strona Główna
  FAQ  Szukaj  Użytkownicy  Grupy  Galerie   Rejestracja   Profil  Zaloguj się, by sprawdzić wiadomości  Zaloguj 

Egzamin AK

Napisz nowy tematOdpowiedz do tematu Forum www.wstigz.fora.pl Strona Główna -> Pomoc...
Zobacz poprzedni temat :: Zobacz następny temat
Autor Wiadomość
SzymekBs




Dołączył: 19 Gru 2007
Posty: 3
Przeczytał: 0 tematów

Skąd: Bieruń City

PostWysłany: 28.02.2008 (Czw) 13:54 Temat postu:

Przyłączam sie do pytanka - niestety na necie nic nie znalazłem na ten temat :/

PS. Wasia rusz mózgownicą i podaj rozwiązanie;)
Powrót do góry
Zobacz profil autora
mr.martin




Dołączył: 17 Sty 2008
Posty: 13
Przeczytał: 0 tematów


PostWysłany: 28.02.2008 (Czw) 20:01 Temat postu:

Rozwiązanie od usera chipek z forum wsti

Kod:

mag. A ========================================================================
         wyad ^ | wead    ^ |         wea ^ v wya           ,----,
         | v         | |           +-----+        +------+  |
       +-----+       | |           |  A  |        |Z| AK |  |
       |  D  |       | |           +-----+        +------+  |
       +-----+       | |           |     |  mnoz2>|    ^ |  |
                     | |        100| 0fff|    ode>|   w| |  |
           wysa>| |<wyas      |     |    dod>|   e| |  |<wyak
                | |      pisz>| PaO |    hex>|   a| |  |
       +-----+       | |      czyt>|     |    bcd>|   k| |  |
       |  B  |       | |           +-----+        +------+  |
       +-----+       | |           |  S  |        |  C   |  |
   wybs | ^ webs     | |           +-----+        +------+  |
        v |          | v         wys v ^ wes     wec ^      v
mag. S =========================================================================


Najwazniejsze mikrosygnaly:
- wyak   wyprowadzenie zawartosci AKumulatora na magistrale S
- weak   skopiowanie C lub wyniku dzialania w ALU do AK  (ALU to jednostka arytm.-logiczna)
- mnoz2  mnozenie zmiennoprzecinkowe razy 2, ja dopisalem ze zakladam ze nastepuje
         mnozenie zawartosci C i potem nalezyc uzyc sygnalu weak zeby wprowadzic
    wynik do AK, bo chyba rownie dobrze mogloby nastepowac mnozenie AK i od razu
    tam zapamietywac wynik
- dod    dodawanie C i A
- ode    odejmowanie
- hex    dzialanie jest wykonywane staloprzecinkowo
- bcd    dzialanie jest wykonywane w kodzie BCD

PaO  to pamiec operacyjna
mag. A to magistrala adresowa
mag. S to magistrala slowowa (danych)

rejestry sa 16-bitowe
...i wlasnie sie skapnalem ze powinienem napisac ze magistrale tez, ale moze on to powiedzial?
 
majac dane ze w rejestrze D jest liczba 100 dzisietnie, w B 154 (dziesietnie), i w komorce
pamieci nr 100 (dziesietnie) jest liczba 0fff (szesnastkowo) trzeba wykonac danej nizej rozkazy
i dzialania oraz podac co potem jest w jakich rejestrach i komorkach pamieci (co sie zmienilo).
Podane rozkazy nalezy tez zapisac za pomoca mikrosygnalow sterujacych.
1. ((D)) + ((D)) -> A  dodawanie stalopozycyjne
2. (B) - (D) -> (A)    odejmowanie BCD
3. 2 * (100) -> (B)    mnozenie zmiennoprzecinkowe

ad.1.
(D)=100,  ((D)) to zaw. komórki 100, czyli ((D))=0fff
x+x=2x wiec wystarczylo pomnozyc razy dwa, wiec przesunac bity w lewo o jeden (z prawej uzupelnic zerem)
mozna tez sobie dodac pisemnie:

0fff =    0000111111111111
        + 0000111111111111
        ------------------
     0001111111111110  = 1ffeH

                    /
                    | ((D)) -> AK                  wyad, _wya_, czyt, wys, _wec_, _weak_
((D)) + ((D)) -> A <| ((D)) -> C                   czyt, wys, _wec_  (adres ciagle jest w A)
                    | ((D)) + ((D)), czyli C+AK    hex, dod, _weak_
                    | (AK) -> A                    wyak, wysa, _wea_
                    \

W wyniku tego rozkazu zmienil sie glownie rejestr A, ale zapomnialem dopisac ze takze AK, C i S, ale
moze to juz by byla nadgorliwosc ;)

_wya_  - podkreslona nazwa sygnalu to sygnal impulsowy
wyak   - bez podkreslenia to sygnal statyczny

ad.2.
(B)=154, (D)=100, w bcd to bedzie
154 =     0001 0101 0100
100 =   - 0001 0000 0000
        ----------------
     0000 0101 0100 = 54 w BCD, czyli 0036H
    
                    /
                    | (B) -> AK               wybs, _wec_, _weak_
(B) - (D) -> (A)   <| (D) -> C                wyad, wyas, _wec_
                    | (B) - (D), czyli AK-C   bcd, ode, _weak_
                    | (AK) -> (A)             wyak, _wes_, pisz
                    \

W rej. A mielismy adres 1ffeH po poprzednim podpunkcie, i ta wlasnie komorka zmienila
swoja zawartosc na 0036H. Do tego oczywiscie S, AK i C ;)

ad.3.

Przy mnozeniu przez dwa wystarczylo zmniejszyc mantyse o 1. Ja niestety poszalalem, rozpisalem sie
i stracilem na dokladnosci (chociaz samo dzialanie zrobilem raczej dobrze i mam nadzieje, ze mi uzna).

|S| | | | | | | |S| | | | | | | |
   mantysa      |    cecha        << napisalem, ze przyjmuje 8 bitow na mantyse i 8 na ceche, zapis U2
   
2 = 2*2^1 (dziesietnie) = 10*2^0 (dwojkowo w U2) = 0,1*2^10 (dwojkowo w U2) = 01000000 00000010

(100) = 0fffH = 00001111 11111111 = (1/16+1/32+1/64+1/128)*2^(-1) = 15/128 * 1/2 = 15/256
                 mantysa  cecha                              cecha  mantysa
      
Przy mnozeniu liczb zmiennoprzecinkowych mnozymy mantysy i dodajemy cechy, wiec mi wyszlo:
mantysa = 15/128 * 1/2 = 15/256 = 00000111  (i tu stracilem na dokladnosci bo wypadla jedynka)
cecha   = 2 + (-1) = 1 = 00000001
ostatecznie: 0000011100000001 = 0301H
A mozna bylo tylko zmienic ceche z -1 na 0, i nie ruszac mantysy. Wtedy by bylo:
0000111100000000 = 0f00H

                    /
                    | (100) -> C              wyad, _wea_, czyt, wys, _wec_
2 * (100) -> (B)   <| 2*(100) czyli 2*(C)     mnoz2, _weak_
                    | (AK) -> (B)             wyak, _wes_, wybs, wysa, _wea_, pisz
                    \

Do komorki 154 (dziesietnie) wpisalo sie 0f00H



Ostatnio zmieniony przez mr.martin dnia 01.03.2008 (Sob) 18:54, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:
Napisz nowy tematOdpowiedz do tematu Forum www.wstigz.fora.pl Strona Główna -> Pomoc... 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
Theme bLock created by JR9 for stylerbb.net
Regulamin