09.12.35 Stırikerfi I

Forritunarverkefni 2


Í şessu forritunarverkefni eigiğ şiğ ağ skrifa 32-bita slembitölufall í 8086-smalamáli. Şiğ eigiğ ağ setja upp slembitölugjafann Multiply-With-Carry (MWC), en hann hefur langa lotu og şykir gefa jafndreifğar slembitölur. Almenna formúlan fyrir MWC er hér ağ neğan:

xn = (a*xn-1 + cn-1) mod b

Hér verğur b = 232 og a = 27795 (16-bita). Slembitalan xn er şví 32-bita, en geymdi hlutinn (carry) cn 16-bita tala. Í upphafi er gefiğ 48-bita sæğiğ c0, x0.

Şegar reiknağ er úr segğinni ağ ofan fær xn gildiğ sem hún gefur, en cn útkomuna úr

cn = (a*xn-1 + cn-1) div b

Í okkar tilfelli er gefur segğin (27795*xn-1 + cn-1) 48-bita útkomu. Şar sem b = 232 getum viğ sagt ağ xn fái neğri 32 bitana, en cn fái efri 16 bitana.

Í útreikningnum şurfiğ şiğ ağ margfalda 32-bita tölu (ş.e. xn-1) meğ 16-bita tölu (ş.e. 27795). Şağ er ekki hægt meğ einni skipun í 8086, svo şiğ verğiğ ağ skrifa forritsbút til ağ meğhöndla şağ.

Falliğ sem şiğ eigiğ ağ skrifa á ağ taka inn 32-bita x í DX,AX og 16-bita c í BX. Skila á nıjum gildum í şessi şrjú gistu samkvæmt MWC-formúlunni. Falliğ má ekki breyta neinum öğrum gistum (nema ağ forğa şeim áğur).

Ef c0 er 12345 og x0 er 1234567890, şá á ağ fást c1=7989 og x1=2320787151.


Skiliğ útprentun şriğjudaginn 22. október.

hh@rhi.hi.is, 15. október, 1996.