Analiziranje programov

Primer:

Analizirajmo program, ki je zapisan v zbirniku.

Analiza programa pomeni razložiti si, kako program deluje in kakšni so rezultati, ki jih dobimo po končanju programa. Pri analizi moramo razbrati:

  1. kje se nahaja program: ugotovimo naslov, kjer je prvi ukaz programa
  2. kje so vhodni podatki: ugotovimo, od kod program črpa podatke
  3. kje so izhodni podatki: ugotovimo, kam program shranjuje podatke
  4. kaj se dogaja v registrih: med izvrševanjem programa ugotavljamo spremembe v registrih in kaj pomenijo
  5. kaj program naredi: ugotovimo, kaj nam pomenijo rezultati glede na vhodne podatke
  6. zapišemo sledenje programu: zapišemo tabelo sledenja registrov in "spremenljivk"
  7. narišemo diagram poteka: grafično upodobimo dogajanje v programu

R E Š I T V E


Program za analizo
 
        org   $fffe
        fdb   zacetek

        org   $a000
a       fcb   $d5
        fcb   $00
b       fcb   $2c

        org   $2500
zacetek LDX   #$a000
        LDAA  0,x
        INX
        INX
        ADDA  0,x
        STAA  $b000
        LDAB  $a000
        DECB
        DECB
        ADDB  0,x
        STAB  $b001
        ABA
        STAA  $b002
        CLRA
        LDAB  $a000
        ADDD  $a001
        STD   $b003
        end

* nastavimo reset vektor
* z začetnim naslovom programa

Analiza:
Naslov programa: $2500
Vhodni podatki: $a000
Izhodni podatki: $b000
Dogodki v registrih: X - kazalec na vhodne podatke
        LDAA  0,x
        INX
        INX
        ADDA  0,x
        STAA  $b000
seštevanje a + b v akumulatorju A
        LDAB  $a000
        DECB
        DECB
        ADDB  0,x
        STAB  $b001
seštevanje a - 2 + b v akumulatorju B
        ABA
seštevanje prejšnjih rezultatov v A in B
        STAA  $b003
        CLRA
        LDAB  $a000
        ADDD  $a001
        STD   $b004
seštevanje a + b v akumulatorju D
Kaj program naredi: prikazuje seštevanje dveh spremenljivk v različnih registrih
Sledenje programu:
korak A B D X $b000 $b001 $b002 $b003,$b004
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.

$d5


$01






$00

$00









$d5
$d4
$d3
$FF




$d5



$d500


$0100

$01d5
$01d4
$01d3
$01FF

$00FF

$00FF
$00d5
$0101

$a000

$a001
$a002


















$01





















$FF


















$00




















$01,$01

Diagram poteka narišemo v zvezek!

K O N E C     R E Š I T E V


Naloge za reševanje in utrjevanje:

1. naloga: Sestavi program, ki sešteje pet enobajtnih števil (prvo $1A, drugo $3C, tretje $0F, četrto $29 in peto $81)! Uporabi posredni način naslavljanja, podatki pa naj se nahajajo na naslovu $4000 in naprej! Program naj se začne na naslovu $3500, rezultat pa shrani na naslov $6000 z neposrednim naslavljanjem.

2. naloga: Analiziraj spodnji program!

        org   $fffe
        fdb   zacetek

        org   $2000
a       fcb   $3d
b       fcb   $05

        org   $2500
zacetek LDX   #$2000
        LDAA  0,x
        ADDA  0,x
        ADDA  0,x
        ADDA  0,x
        ADDA  0,x
        DECA
        DECA
        DECA
        DECA
        DECA
        STAA  $2020
        LDAA  0,x
        LDAB  1,x
        MUL
        SUBD  #5
        STD   $2021
        end