Osnove
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.
- Napišite program
arith.asm
, ki za izračun uporabi aritmetične ukaze z neposrednim naslavljanjem. - Napišite program
arithr.asm
, ki za izračun uporabi aritmetične ukaze z registrskim naslavljanjem. Vsakega odx
oz.y
berite le enkrat, vsakega odsum
,diff
,prod
,quot
inmod
zapišite le enkrat.
Izračun polinoma
V tej nalogi izračunamo vrednost polinoma x⁴+2x³+3x²+4x+5 v točki x=2.
- Napišite program
poly.asm
, ki vrednost izračuna „klasično“ (vsak člen posebej). - 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.
- Nato izračunajte vrednost polinoma v nekaj točkah, npr. x ∈ {0, 5, 42}.
- 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