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