Mates - 2007-01-16 18:33:23

Czy ktos wie jak zrobic to sprawozdanie na laborki z procesora oraz dodawania z przeniesieniem i bez itd. ???

axis - 2007-01-16 18:36:28

Ja wiem, napisałem już. Umieszam tylko i wyłącznie w celu wglądu. Proszę nie wzorować się na moim sprawozdaniu. Flagi są na każdej stronie.



Sprawozdanie nr 3

1.    Operacje arytmetyczne

a) Dodawanie z przeniesieniem i bez przeniesienia
   
Do 16-bitowego rejestru (15+1) wprowadzam liczby:
AX:    F00(HEX)     = 3840(DEC)    = 0000111100000000(BIN)
BX:    1000(HEX)     = 4096(DEC)    = 0001000000000000(BIN)

Po wykonaniu dodawania zarówno z przeniesieniem, jak i bez przeniesienia otrzymałem jednakowe wyniki:
    1F00(HEX)    = 7936(DEC)    = 0001111100000000(BIN)


Wprowadzam inne liczby do rejestrów:
AX:    FFFF(HEX)     = -1(DEC)    = 1111111111111111(BIN)
BX:    0004(HEX)     = 4(DEC)    = 0000000000000100(BIN)

Wykonując dodawanie be przeniesienia otrzymałem:
    0003(HEX)    = 3(DEC)    = 0000000000000011(BIN)

Natomiast po dodawaniu z przeniesieniem:
    0004HEX)    = 4(DEC)    = 0000000000000100(BIN)

Różnica w obliczeniach wynosi +1. Jest to spowodowane dodaniem do wyniku liczby 1 z przeniesienia. Przeniesienie może być równe 0 lub 1. W tym przypadku było równe 1, ponieważ w dodawaniu naszych liczb wynik był 17-bitowy. W związku z tym wynik byłby prawidłowy, gdybyśmy operowali na 17-bitach. Ponieważ jednak mamy rejestry 16-bitowe, jedynka z „17. bitu” (przeniesienia) została dodana do wyniku.
Analogiczna sytuacja nastąpi, gdy dodajemy dwie dowolne liczby. Podczas dodawania z przeniesieniem przy przeniesieniu równym 1 wynik będzie zawyżony o 1 (w przypadku, gdy wynik zmieści się na 16 bitach).


b) Odejmowanie z pożyczką i bez pożyczki

Wprowadzam następujące liczby do rejestrów:
AX:    1000(HEX)     = 4096(DEC)    = 0001000000000000(BIN)
BX:    0100(HEX)     = 256(DEC)    = 0000000100000000(BIN)

Wykonując odejmowanie AX od BX zarówno z pożyczką, jak i bez, przy przeniesieniu równym 0, otrzymałem ten sam wynik:
    F100(HEX)    = -3840(DEC)    = 1111000100000000(BIN)

Wynik jest prawidłowy, natomiast przeniesienie przyjęło wartość 1, co oznacza, że wynik jest poniżej wartości minimalnej.

Wykonam odejmowanie na tych samych liczbach przy przeniesieniu równym 1.
Przy odejmowaniu bez pożyczki otrzymałem:
    F100(HEX)    = -3840(DEC)    = 1111000100000000(BIN)

Wynik również jest prawidłowy, z tą różnicą, że wartość przeniesienia pozostała równa 1.

Przy odejmowaniu z pożyczką, przy przeniesieniu 1 otrzymałem:
    F0FF(HEX)    = -3841(DEC)    = 1111000011111111(BIN)

Wynik jest inny, niż w trzech poprzednich odejmowaniach, wartość przeniesienia nadal wynosi 1. Wynik jest mniejszy, a nie większy o 1, ponieważ operacje na liczbach ujemnych są wykonywane w systemie binarnym, gdzie nie ma znaku. Bit odpowiadający za znak się nie zmienił, zmieniła się natomiast wartość samego wyrażenia, do którego została dodana jedynka.

Przy odejmowaniu mniejszej liczby od większej wyniki w każdym przypadku są takie same, a wartość przeniesienia pozostaje równa zero.

2.     Operacje logiczne

    Iloczyn logiczny (AND):

Wprowadzam liczby do rejestrów:
AX:    AAAA(HEX)     = -21846(DEC)    = 1010101010101010(BIN)
BX:    BBCC(HEX)     = -17460(DEC)    = 1011101111001100(BIN)

Po wykonaniu operacji logicznej AND AX, BX otrzymałem:
    AA88(HEX)    = -21880(DEC)    = 1010101010001000(BIN)

    Tablica prawdy dla AND:
   
A    B    C
1    1    1
0    1    0
1    0    0
0    0    0
Wynik tej operacji przyjmuje wartość
1 tylko przy A i B równych 1.


    Suma logiczna (OR):

AX:    AAAA(HEX)     = -21846(DEC)    = 1010101010101010(BIN)
BX:    BBCC(HEX)     = -17460(DEC)    = 1011101111001100(BIN)

Po wykonaniu operacji logicznej OR AX, BX otrzymałem:
    BBEE(HEX)    = -17426(DEC)    = 1011101111101110(BIN)

    Tablica prawdy dla AND:
   
A    B    C
1    1    1
0    1    1
1    0    1
0    0    0
Wynik tej operacji przyjmuje wartość
1 tylko, gdy co najmniej jedna z liczb
jest równa 1.
    Negacja logiczna (NOT):

AX:    AAAA(HEX)     = -21846(DEC)    = 1010101010101010(BIN)

Po wykonaniu operacji logicznej NOT AX otrzymałem:
    5555(HEX)    = 21845(DEC)    = 0101010101010101(BIN)

    Tablica prawdy dla NOT:
   
A    C
1    0
0    1
W wyniku operacji otrzymałem
wartości przeciwne.


    Suma modulo 2 (EXOR):

AX:    AAAA(HEX)     = -21846(DEC)    = 1010101010101010(BIN)
BX:    BBCC(HEX)     = -17460(DEC)    = 1011101111001100(BIN)

Po wykonaniu operacji logicznej XOR AX, BX otrzymałem:
    1166(HEX)    = 4454(DEC)    = 0001000101100110(BIN)

    Tablica prawdy dla EXOR:
   
A    B    C
1    1    0
0    1    1
1    0    1
0    0    0
W wyniku otrzymałem zero, gdy wartości
A i B były takie same. W przypadku, gdy
A i B były różne, otrzymałem 1.

szymoonek - 2007-01-17 18:48:25

respect nyyga ;-)

Kinia - 2007-01-17 21:24:04

nyga whaaaatttttt ? ;>

szymoonek - 2007-01-18 21:09:59

hehe :D ruuun nygga ruuun!!

czyszczenie kanalizacji Szczecin hosting gif ubezpieczenie dronów