Vaje - Zbirnik SIC/XE osnove

Vaje - Zbirnik SIC/XE osnove

Izvorno kodo vseh programov v zbirniku SIC hranite v svojem Subversion skladišču. V ta namen ustvarite nov projekt. Vse programe boste (čez dva tedna) oddali v okviru prve domače naloge.

Uporaba SIC/XE simulatorja

Prenesite SIC/XE simulator in ga spoznajte. 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.
  • Tekom izvajanja spremenite vrednosti registrov.
  • Kaj se dogaja tekom izvajanja v pomnilniku?
  • Na kateri lokaciji se hrani vrednost x?

Osnovna aritmetika

Napišite program, ki sešteje/odšetje/množi/deli/izračuna ostanek dveh števili (fiksna vejica). Števili naj se nahajata na lokacijah z labelama (oznakama) x in y. Rezultate operacij zapišite na lokacije sum, diff, prod, quot, mod. Na koncu naj se program zacikla.

a) Uporabite aritmetične ukaze z neposrednim naslavljanjem.

b) Uporabite aritmetične ukaze z registrskim naslavljanjem. Vsakega od x oz. y berite le enkrat, vsakega od sum, diff, prod, quot, mod zapišite le enkrat.

Izračun vrednosti polinoma

Napišite program za izračun vrednosti polinoma: \( x^4 + 2x^3 + 3x^2 + 4x + 5 \). Izračunajte vrednost polinoma v neki točki, npr. \( x = 2 \).

a) Izračun polinoma izvedite "klasično" (vsak člen posebej).

b) Izračun polinoma izvedite po Hornerju.

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.

a) Nato izračunajte vrednost polinoma v nekaj točkah, npr. \( x = 0, 5, 42 \).

b) Točke v katerih računate vrednost polinoma naj bodo podane s tabelo, prav tako v tabelo zapišite rezultate izračuna.

  • Uporabite zanko za sprehod preko table.
  • Za ugotavljanje dolžine tabele (v bajtih) lahko uporabite trik z EQU

in     WORD 0
       WORD 5
...
lastin EQU *
len    EQU lastin-in

Last modified: Monday, 21 October 2013, 9:42 AM