/* Test rozkazu DzD - Dzielenia Długiego Dane: [0c02000] = 0c1500000000000; =0.01101 // dzielna = 13/32 [0c02001] = 0c3600000000000; =0.11110 // dzielnik = 30/32 Długi iloraz, dzielna/dzielnik = 13/30, zostanie zapisany w komórkach [0c10000]..[0c10005]: [0c10000] = bity 0... 38 Ω = bit 39 dla N=43 (bit 0 = bit znaku) [0c10001] = bity 39... 77 Ω = bit 78 dla N=82 [0c10002] = bity 78...116 Ω = bit 117 dla N=121 [0c10003] = bity 117...155 Ω = bit 156 dla N=160 [0c10004] = bity 156...194 Ω = bit 195 dla N=199 [0c10005] = bity 195...233 Ω = bit 234 dla N=238 Najdalsze możliwe do uzyskania bity ilorazu znajdą się w komórce [0c10206], a po zaokrągleniu bitem Omega dodatkowo będą zapisane w komórce [0c10406]: [0c10206] = bity 212...250 Ω = bit 251 dla N=255 [0c10406] = bity 212...250 zaokrąglone bitem Ω Wynik: <-------- [0c10000]: bity 0..38 -------><------- [0c10001]: bity 39..77 ------><------ [0c10002]: bity 78..116 ------><------ [0c10003]: bity 117..155 -----><------ [0c10004]: bity 156..194 -----><------ [0c10005]: bity 195..233 -----> 0.01101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101110111011101 < >< >< >< >< [0c10206]: niezaokrąglone bitem Omega 011101110111011101110111011101110111011 [0c10406]: zaokrąglone bitem Ω=1: 011101110111011101110111011101110111100 <----------- bity 212..250 -----------> Słowo w komórce [0c10206], na pozycjach bitowych 22..38 zawiera już tylko 17 dodatkowych bitów ilorazu w uzupełnieniu do wcześniej otrzymanych. Bity 0..21 tego słowa pokrywają się z bitami 17..38 poprzedniego słowa, zapisanego w komórce [0c10005]. Słowo w komórce [0c10406] zawiera zaokrągloną bitem Omega wersję słowa z komórki [0c10206]. Zaokrąglenie to (normalne) polega na dodaniu bitu Omega na najmłodszej pozycji bitowej słowa, z ewentualnym przeniesiem na starsze pozycje. Zatem bity 0..21 słowa [0c10406] mogą być inne niż te same bity słowa [0c10206] i bity 17..38 słowa zapisanego w komórce [0c10005]. Co więcej, zaokrąglenie może wymagać propagacji przeniesienia na wszystkie komórki zawierające starsze bity, a nawet spowodować nadmiar (przeniesienie na bit znaku ilorazu). Bit nr 0 w początkowej komórce ilorazu jest bitem znaku ilorazu. W następnych komórkach ilorazu, bity nr 0 są zwykłymi bitami rozwinięcia liczby. */ ;Etyk: Rozkaz Komentarz ;===== =================== ================================ BLOK 0 ;Adres początku programu TEST A=[licznik] M=[mianown], M, A=A/M [iloraz0] = A ;bity 0..38 Ω = bit 39 A=[licznik] DzD 82 ;A = A // M, 82 [iloraz1] = A ;bity 39..77 Ω = bit 78 A=[licznik] DzD 121 ;A = A // M, 121 [iloraz2] = A ;bity 78..116 Ω = bit 117 A=[licznik] DzD 160 ;A = A // M, 160 [iloraz3] = A ;bity 117..155 Ω = bit 156 A=[licznik] DzD 199 ;A = A // M, 199 [iloraz4] = A ;bity 156..194 Ω = bit 195 A=[licznik] DzD 238 ;A = A // M, 238 [iloraz5] = A ;bity 195..233 Ω = bit 234 A=[licznik] DzD 255 ;A = A // M, 255 Najdalsze możliwe do uzyskania bity ilorazu [ilorazD] = A ;bity 212..250 Ω = bit 251 Okr ;A = A + Ω Najdalsze możliwe do uzyskania bity ilorazu [ilorazO] = A ;bity 212..250 po zaokrągleniu normalnym bitem Omega Stop 0c17777 ..TEST BLOK 0c02000 ;Przykładowe dane licznik :150 00000 00000 00 ;=0.01101 // dzielna = 13/32 mianown :360 00000 00000 00 ;=0.11110 // dzielnik = 30/32 iloraz PLOK 0c10000 ;Słowa wyniku dzielenia długiego iloraz0 :000 0 0 0 iloraz1 :000 0 0 0 iloraz2 :000 0 0 0 iloraz3 :000 0 0 0 iloraz4 :000 0 0 0 iloraz5 :000 0 0 0 ilorazD PLOK *+0c200 ;Najdalsze możliwe do uzyskania bity ilorazu ilorazO PLOK ilorazD+0c200 ;to samo po zaokrągleniu normalnym bitem Omega Koniec ==