Documente Academic
Documente Profesional
Documente Cultură
Limbajul IL
Limbajul IL
04.04.2015 10:31 1
Limbaje de programare
04.04.2015 10:31 2
Limbajul IL (Instruction List)
04.04.2015 10:31 3
Operatori în IL
Operatori de transfer (LD i ST sau =). Datele pot fi transferate de la
memorie la acumulator i invers;
Exemplu:
LD %I0.0 (*Încarca continutul intrarii I0.0 în acumulator*)
ST %Q1.0 (*Transfera la iesirea Q1.0 continutul acumulatorului*)
= %Q0.0 (*Transfera la iesirea Q0.0 continutul acumulatorului*)
Operatori de setare/resetare (S (Set) i R (Reset)). Realizeaz setarea,
respectiv resetarea operanzilor;
Exemplu:
S %M0.0 (*Seteaza bitul M0.0*)
R %M0.1 (*Reseteaza bitul M0.1* )
Operatori logici (AND, OR, XOR). Realizeaz func ii logice între con inutul
PROCESi acumulator;
operandului
Exemplu:
AND %M0.0 (*Realizeaza conjunctia logica intre acumulator si M0.0 *)
OR %M0.0 (*Realizeaza disjunctia logica intre acumulator si M0.0 *)
XOR %M0.0 (*Realizeaza SAU EXCLUSIV intre acumulator si M0.0 *)
04.04.2015 10:31 4
Operatori în IL
Operatori de transfer (MOV). Datele se transfer între o surs i o
destina ie. Operatorul are o liter suplimentar pentru a specifica felul
datei: B, dac este un transfer de octet, W, dac este un transfer de
cuvânt sau DW, dac este un transfer de dublu cuvânt. Instruc iunea are
doi operanzi: sursa i destina ia.
Exemplu:
MOVB %MB0, %MB1 (*Realizeaza transferul din MB0 in MB1*)
MOVW %MW0, %MW1 (*Realizeaza transferul din MW0 in MW1*)
Operatori aritmetici (ADD, SUB, MUL, DIV). Realizeaz opera iuni
aritmetice între operanzi.
Exemplu:
(*Programul realizeaza adunarea unor variabile*)
(*intregi si memoreaza rezultatul intr-o alta*)
PROCES
(*variabila intreaga*)
(*Variabilele a, b, c variabile simbolice de tip intreg*)
LD a (*Incaraca a in acumulator*)
ADD b (*Aduna cu b*)
ST c (*c=a+b*)
04.04.2015 10:31 5
Operatori în IL
Operatori rela ionali (GT, GE, EQ, NE, LE, LT). Compar operanzii i
seteaz acumulatorul în func ie de rezultatul compara iei.
Exemplu:
(* Programul seteaza doua variabile booleene în *)
(* functie de rezultatul comparatiei *)
(* Variabilele a, b, c sunt variabile simbolice *)
(* Variabilele bo1 si bo2 sunt variabile booleene *)
LD a (*Încarca a în acumulator*)
GT b (*Compara cu b*)
ST bool (*Memoreaza rezultatul comparatiei*)
LD b (*Încarca b în acumulator*)
GTPROCES
a (*Compara cu a*)
ST bool2 (*Memoreaza rezultatul comparatiei*)
04.04.2015 10:31 6
Operatori în IL
Operatori de salt (JMP, CALL, RET)
Exemplu:
(* Programul memoreaza în c rezultatul operatiei*)
(* a-b daca a este mai mare ca b sau rezultatul *)
(* operatiei b-a daca b este mai mare ca a *)
(* Variabilele a, b i c sunt variabile simbolice de tip întreg *)
LD a
GE b
JMPC ET1
LD b
SUB a
ST c
PROCES
JMP ETEND
ET1: LD a
SUB b
ST c
ETEND:
04.04.2015 10:31 7
Modificatori
Modificatorul este un caracter, care este ata at operatorului i poate
realiza:
Negarea boolean a operatorului. De obicei acest operator este
caracterul N;
Întârzierea opera iei. De obicei acest operator este caracterul (;
Realizarea unei opera ii condi ionate. Atunci când limbajul
permite, acest operator este caracterul C.
Exemplu:
ANDN %I0.0
realizeaz o opera ie logic AND între con inutul acumulatorului sau
stivei i negarea intr rii I0.0 a unui automat, iar rezultatul este re inut
în acumulator sau stiv .
Instruc iunile:
AND( %I0.0
OR %I0.1
)
04.04.2015 10:31 8
Lucrul cu stiva în STL
În STL trebuie utilizate instruc iuni speciale pentru controlul stivei.
Aceste instruc iuni sunt OLD i ALD, care execut opera ii de OR i AND
între componentele din capul stivei.
LD %I0.0 LD %I0.1 LD %I0.2 AND %I0.3
%I0.0 %I0.1 %I0.2 E
%I0.0 %I0.1 %I0.1
LD %I0.0 Stiva
%I0.0 %I0.0
LD %I0.1
LD %I0.2
AND %I0.3
E=%I0.3 AND %I0.2
OLD OLD ALD
ALDPROCES E1 E2
= %Q0.0 %I0.0
04.04.2015 10:31 10
Network 1
// Pornirea automata
LD RUN_P
O C1 // Autoretinere
AN LP // Este pozitionat pe pornire automata?
AN STOP_P // S-a generat un semnal de oprire?
A AV // Motorul este disponibil?
AN AVARIE // Nu a ap rut o avarie
// Pornirea manuala
LD L1 // S-a apasat butonul de pornire?
O C1 // Autoretinere
A LP // Este pozitionat pe pornire locla?
A LS // Butonul de oprire locala este apasat?
A AV // Motorul este disponibil?
AN AVARIE // Nu a ap rut o avarie
// Testul conditiei de pornire automata sau manuala
OLD
= C1
Network 2
// Testul inchiderii contactorului in 2 s
LD C1
AN B1
TON T37, 20
Network 3
// Generarea si resetarea semnalului de avarie
LD T37
O AVARIE
AN R_AV
= AVARIE
04.04.2015 10:31 11