nie napisales ze gorna magistrala to adresowa, a dolna to "slowowa" (danych), i nie napisales sygnalow sterujacych
ale mialem podobne zadanie kiedys, i jest banalne jesli sie uwazalo na wykladach :P
Kod:
1. 0ffeh = 0000111111111110
+0000111111111110
-----------------
0001111111111100
mikrosygnaly sterujace:
/
| ((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_
\
2. 154-100 (bcd)
100 w uzupelnieniu do 9 = 899
154+899= 0001 0101 0100
+1000 1001 1001
---------------
1001 1110 1101
+ 0110 0110 korekta
---------------
1010 0101 0011
+0110 korekta
---------------
1 0000 0101 0011 wyskoczyla jedynka, to sie nazywalo chyba cykliczne przeniesienie, trzeba ja dodac
+ 1
----------------
0000 0101 0100 = 054 w BCD, czyli 0036H w pamieci kompa
/
| (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
\
3. no i tu jest problem bo trzeba wiedziec w jakim standardzie zapisana jest liczba zmiennoprzecinkowa...
poniewaz rozpoznaje to zadanie od prof. K. to zakladam ze chodzi o 8 bitow na mantyse w kodowaniu U2
i 8 bitow na mantyse w U2 (kod dwojkowy uzupelnienie do 2), pierwszy bit mantysy to bit znaku, a nastepne
maja wagi -1, -2, -3 ... -7 czyli sa to czesci ulamkowe
zeby pomnozyc przez 2, wystarczy zwiekszyc ceche o 1
0ffeh = 0.0001111 11111110
mantysa cecha
2*0ffeh = 0.0001111 11111111 = 0fff (zawartosc AK rejestru po wykonaniu dzialania)
w sumie mozna tez tak:
2*0ffeh = 0.0011110 11111110 = 1e1e (zawartosc AK rejestru po wykonaniu dzialania)
nie wiem co zrobi JA-L :P zalezy od jego budowy
/
| (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
\