Računalnik LMC: primeri


Vhod, izhod

Primer demonstrira vhodni in izhodni ukaz LMC. Prvi ukaz kopira 3 mestno število iz vhoda v akumulator. Drugi ukaz kopira vrednost akumulatorja v izhod:

INP
OUT
HLT

Podatki v pomnilniku, seštevanje, odštevanje

Program vnešene podatke pomni na naslovljenih lokacijah pomnilnika in jih nato jemmlje iz naslovljenih lokaci in izpisuje na izhod. Vendar je v tem programu skrita napaka :)

IN
STO 50     
IN
STO 51     
IN
STO 53   
LDA 51    
ADD 50  
SUB 33    
OUT    
HLT

Podatki v pomnilniku

Program je podoben prejšnjemu, vendar sedaj  uporabljamo označevanje pomnilnih lokacij z etiketami. Tako programiranje je lažje, saj ni potrebno štetje naslovov.

INP
STA FIRST
INP
STA SECOND
LDA FIRST
OUT
LDA SECOND
OUT
HLT
FIRST: DAT
SECOND: DAT


Seštevanje in odštevanje

Naslednji primer ponazoruje ukaze za seštevanje in odštevanje. Pozor: v računalniku LMC predvidevamo, da akumulator pomni le ne negativna tromestna števila.  Matematične operacije, ki tvorijo vrednosti večje od 999 ali manjše od 000, lahko povzročijo nepredvidljive učinke.

INP
STA FIRST
INP
ADD FIRST
OUT
INP
SUB FIRST
OUT
HLT
FIRST: DAT

Odločanje

Primer demonstrira uporabo ukazov za programiranje odločitev.  Tako lahko tvorimo poti v diagramu poteka.

INP
STA FIRST
INP
STA SECOND
SUB FIRST
BRP SECONDBIG
LDA FIRST
OUT
BRA END
SECONDBIG: LDA SECOND
OUT
END:  HLT
FIRST: DAT
SECOND : DAT




Ponavljanje (zanke)

Primer demonstrira uporabo razvejilnih ukazov za tvorbo zank. Program bo izpisal vrednosti od 1 do 10. Opomba: razvejilne ukaze oporabljamo le za povezavo poti našega diagrama poteka.

LDA ONE
STA COUNT
OUT
LOOPTOP: LDA COUNT
ADD ONE
OUT
STA COUNT
SUB TEN
BRP ENDLOOP
BRA LOOPTOP
ENDLOOP: HLT
ONE : DAT 001
TEN : DAT 010
COUNT : DAT


Množenje dveh števil

Ker ukaza za množenje ni, ga realiziramo s prištevanjem v zanki.

      INP
      STA FIRST
      INP
      STA SECOND
START:LDA RESULT
      ADD FIRST
      STA RESULT
      LDA SECOND
      SUB ONE
      STA SECOND
      BRZ END
      BRA START
END:  LDA RESULT
      OUT
      HLT
RESULT:DAT 0
FIRST: DAT
SECOND:DAT
ONE:   DAT 1

Računanje zaporedja Fibonacci

Vnesi število računanih členov.

    INP
    STA COUNT
START: LDA FIRST
    OUT
    ADD SECOND
    STA TEMP
    LDA FIRST
    STA SECOND
    LDA TEMP
    STA FIRST
    LDA COUNT
    SUB ONE
    STA COUNT
    BRZ END
    BRA START
END: HLT
FIRST:    DAT 0
SECOND:DAT 1
TEMP:  DAT
COUNT: DAT
ONE:   DAT 1