Izvorno kodo vseh programov dodajte v svojo shrambo. Vse programe boste oddali v okviru prve domače naloge.

SIC/XE simulator

Prenesite, namestite in preizkusite SIC/XE simulator. Pri tem lahko uporabite naslednji primer:

primer  START  0
. kaj naredi naslednji programček?
first   LDA   #42
        ADD    x
        STA    x
. kaj dela naslednji ukaz
halt    J      halt
. podatki
x       WORD   22
        END    first
  • Preizkusite Start / Stop / Step.
  • Oglejte si disassembly programa.
  • Med izvajanjem spremenite vrednosti registrov.
  • Kaj se med izvajanjem dogaja v pomnilniku?
  • Na kateri lokaciji se hrani vrednost x?

Osnovna aritmetika

V tej nalogi izračunamo vsoto, razliko, zmnožek in kvocient ter ostanek pri deljenju dveh celih števil. Števili naj se nahajata na lokacijah z oznakama (angl. labels) x in y. Rezultate operacij zapišite na lokacije sum, diff, prod, quot in mod, na koncu pa naj se program zacikla.

  1. Napišite program arith.asm, ki za izračun uporabi aritmetične ukaze z neposrednim naslavljanjem.
  2. Napišite program arithr.asm, ki za izračun uporabi aritmetične ukaze z registrskim naslavljanjem. Vsakega od x oz. y berite le enkrat, vsakega od sum, diff, prod, quot in mod zapišite le enkrat.

Izračun polinoma

V tej nalogi izračunamo vrednost polinoma x⁴+2x³+3x²+4x+5 v točki x=2.

  1. Napišite program poly.asm, ki vrednost izračuna „klasično“ (vsak člen posebej).
  2. Napišite program horner.asm, ki vrednost izračuna po Hornerjevi metodi.

Primerjajte oba programa. Kateri je krajši in kateri je hitrejši?

Uporaba subrutin

Izračun polinoma iz prejšnje naloge izvedite z subrutino. Kako boste prenašali parametre? Poskrbite, da subrutina za seboj počisti, t.j. uporabljene registre pusti v originalnem stanju.

  1. Nato izračunajte vrednost polinoma v nekaj točkah, npr. x ∈ {0, 5, 42}.
  2. Točke, v katerih računate vrednost polinoma, naj bodo podane s tabelo na naslovu in. Rezultate izračuna zapišite v isto tabelo.

Za sprehod preko tabele uporabite zanko. Za ugotavljanje dolžine tabele (v bajtih) lahko uporabite trik z EQU:

in      WORD 0
        WORD 5
        ...
lastin  EQU *
len     EQU lastin - in
Последнее изменение: воскресенье, 16 октября 2022, 17:34