class Hovedminne: """ simulerer hovedminnet med et gitt antall adresser """ def __init__(self, storrelse): """ oppretter minnet med alle plasser satt til 0 """ self._adresserom = storrelse self._innhold = [0] * storrelse # Dette oppretter en liste med storrelse antall 0-er def _valider_adresse(self, adresse): """ kontrollerer at adressen er innenfor adresserommet """ assert 0 <= adresse < self._adresserom, \ f"Ugyldig adresse {adresse}" def hent_innhold(self, adresse): """ returnerer verdien på den gitte adressen """ self._valider_adresse(adresse) return self._innhold[adresse] def _sett_gyldig_verdi(self, verdi): """ holder verdien innenfor -999 til 999 (1000-komplement) """ if verdi > 999: verdi %= 1000 elif verdi < -999: verdi = -(abs(verdi) % 1000) return verdi def sett_innhold(self, adresse, verdi): """ lagrer verdien på den gitte adressen """ self._valider_adresse(adresse) self._innhold[adresse] = self._sett_gyldig_verdi(verdi) def last_innhold(self, innhold): """ laster et helt minnebilde (liste) inn i minnet """ assert len(innhold) <= self._adresserom, \ "Minnebildet er større enn RAM" for adresse in range(len(innhold)): verdi = innhold[adresse] self.sett_innhold(adresse, verdi)