You are on page 1of 28

1

5 Instructions Complexes
a / Oprations List. b / Oprations de calculs. c / Gestions Programme et Dcalage. d / Oprations sur Mots. e / Oprations sur laccumulateur. f / Chargement / transfert. g / Le Mot dtat. h / Adressage Indirect.
Aforest
PH.Fvrier/05

- Page: 02 05 - Page: 06 07 - Page: 08 109 - Page: 10 10 - Page: 11 14 - Page: 15 15 - Page: 16 17 - Page: 18 28


T 104 264 20

Maintenance S7

a/ Oprations List
Instructions logiques:
z z z z z z z z z z z z z O( O ON ON( U( U UN UN( X( X XN XN( )

Le Combinatoire sur Bits...

OU dune expression OU OU NON OU PAS dune expression. ET dune expression ET ET NON ET PAS dune expression OU EXCLUSIF dune expression OU EXCLUSIF OU EXCLUSIF NON OU NON EXCLUSIF dune expression Fermer la parenthse dune expression.

Instructions et RLG:
z z z z z z CLR: SET: SAVE: NOT: FN: FP:

Mettre le RLG 0. Mettre le RLG 1. Sauver le RLG dans le RB. Inversion du RLG. Front Descendant. Front Montant.

Sorties et RLG:
z = z R z S

Mettre 1. Mettre 0 sur front Mettre 1 sur front

a/ Oprations List

LES CONVERTIONS ...

Instructions Conversion, inversion,:


z z z z z z z z z z z z z z z BTI ITB ITD BTD DTB DTR INVI INVD NEGI NEGD NEGR RND TRUNC RND+ RND:BCD_I : :I_BCD : :I_DI : :BCD_DI: :DI_BCD: :DI_R : :INV_I : :INV_DI: :NEG_I : :NEG_DI: :NEG_R : :ROUND: :TRUNC : :OEIL : :FLOOR :

Convertir un nombre DCB en un entier de 16 bits. Convertir un entier de 16 bits en un nombre DCB. Convertir un entier de 16 bits en un nombre entier de 32 bits. Convertir un nombre DCB en un entier de 32 bits. Convertir un nombre entier de 32 bits en un nombre DCB. Convertir un nombre entier de 32 bits en un nombre rel. Complment 1 dun entier de 16 bits. Complment 1 dun entier de 32 bits. Complment 2 dun entier de 16 bits. Complment 2 dun entier de 32 bits. Inverser le signe dun rel. Arrondir le nombre. Former un nombre entier. Arrondir lentier suprieur. Arrondir lentier infrieur.

EN CONT
Rq :

EN LIST

a/ Oprations List

Les Blocs de Donnes

Instructions Appel, chargement,


z z z z z z AUF: L DBLG: L DBNO: L DILG: L DINO: TDB:

Ouvrir un bloc de donnes. Charger longueur de DB global dans laccumulateur 1. Charger le numro de DB global dans laccumulateur 1. Charger longueur de DB dinstance dans laccumulateur 1 Charger le numro de DB dinstance dans laccumulateur 1 Permuter le DB global et le DB dinstance.

Exemple:
AUF L T

DB DBW MW DI DIB DBB

10 // Ouvrir le bloc de donnes DB10 comme bloc de donnes global. 35 // Charger dans laccumulateur 1-L la valeur du mot DBW35 22 // Transfrer le contenu de laccumulateur dans la mmoire MW22. 20 // Ouvrir le bloc DB20 comme bloc de donnes dinstance. 12 // Charger dans lACCU 1-L loctet DIB12 du DB dinstance ouvert. 37 // Transfert le contenu de lACCU 1-L dans loctet 37 du DB global ouvert.

AUF L T

a/ Oprations List
Instructions de saut,
z z z z z z z z z z z z z z z z z z z LOOP: SPA: SPB: SPBB: SPBI: SPBIN: SPBN: SPBNB: SPL: SPM: SPMZ: SPN: SPO: SPP: SPPZ: SPS: SPU: SPM: SPZ:

Les Oprations de Sauts

Boucle de programme. Saut Inconditionnel. Saut si le RLG=1 Saut si le RLG=1 avec RB Saut si le RB=1 Saut si le RB=0 Saut si le RLG=0 Saut si le RLG=0 avec RB Saut vers liste Saut si moins Saut si <= 0 Saut si diffrent de 0 Saut si DEB =1 Saut si Plus Saut si >= 0 Saut si DM = 1 Saut si Illicite Saut si moins Saut si = 0

(Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel). (Conditionnel).

Rq :

RB et DM sont des bits qui proviennent du mot dtat.

b/ Calcul
Oprations Arithmtiques
z z z z z z z z z + I - I * I / I + D - D * D / D MOD :ADD_I : :SUB_I : :MUL_I : :DIV_I : :ADD_DI: :SUB_DI: :MUL_DI: :DIV_DI: :MOD_DI:

NOMBRES ENTIERS
Addition de deux nombres entiers de 16 bits. Soustraction de deux nombres entiers de 16 bits. Multiplication de deux nombres entiers de 16 bits. Division de deux nombres entiers de 16 bits. Addition de deux nombres entiers de 32 bits. Soustraction de deux nombres entiers de 32 bits. Multiplication de deux nombres entiers de 32 bits. Division de deux nombres entiers de 32 bits. Reste de division (32 bits).

Exemple en LIST:
U L L E MW MW

* I T

MW

0.0 // Si lentre est active. 100 // Charger dans ACCU 1-L la valeur du mot MW100 102 // Charger dans ACCU 1-L la valeur du mot MW102 // Lancien contenu de lACCU1 est charg dans lACCU2. // Multiplication de ACCU2 avec ACCU1, rsultat dans ACCU1 104 // Charger la valeur de lACCU1 vers la mmoire MW104.

Exemple en CONTACT:

b/ Calcul
z z z z z z z z z z z z z z z + R - R * R / R ABS SQRT SQR LN EXP SIN COS TAN ASIN ACOS ATAN :ADD_R :SUB_R :MUL_R :DIV_R :ABS :SQRT :SQR :LN :EXP :SIN :COS :TAN :ASIN :ACOS :ATAN : : : : : : : : : : : : : : :

NOMBRES REELS
Addition de deux nombres rels. Soustraction de deux nombres rels. Multiplication de deux nombres rels. Division de deux nombres nombres rels. Valeur absolue dun nombre rel. Racine carr. Carr. Logarithme naturel. Exposant. Sinus. Cosinus. Tangente. Arc Sinus. Arc Cosinus. Arc Tangente.

Oprations Arithmtiques et trigonomtriques:

Exemple en LIST:
L L MD MD

* R T

MD

100 // Charger dans ACCU 1 la valeur du mot MD100 104 // Charger dans ACCU 1 la valeur du mot MD104 // Lancien contenu de lACCU1 est charg dans lACCU2. // Multiplication de ACCU2 avec ACCU1, rsultat dans ACCU1 108 // Charger la valeur de lACCU1 vers la mmoire MD108.

c/ Gestion

LECTURE DE PROGRAMME
: : : : : : : : : : Fin de bloc. Fin de bloc inconditionnelle. Fin de bloc conditionnelle. Appel de Bloc. Appel de Bloc inconditionnel. Appel de bloc conditionnel. Sauvegarder RLG dans pile MCR, dbut de zone MCR. Fin de zone MCR. Activer la zone MCR. Dsactiver la zone MCR.

Instructions sur les blocs programme:


z z z z z z z z z z BE BEA BEB CALL UC CC MCR( )MCR MCRA MCRD

Exemple en LIST:
U CALL U BEB E FC E 0.0 // 1 //

Si lentre E0.0 est active. Appel du bloc Fonction FC1.

0.1 // Si lentre E0.1 est 1. // Fin du traitement du bloc, mme si il existe en dessous des lignes de programme.On retourne au bloc dappel.

c/ Gestion
Oprations Arithmtiques
z z z z z z z z SSI SSD SLW SRW SLD SRD RLD RRD :SHR_I : :SHR_DI: :SHL_W : :SHR_W: :SHL_DW: :SHR_DW: :ROL_DW: :ROR_DW:

DECALAGE / ROTATION
Dcalage vers la droite dun nombre entier de 16 bits. Dcalage vers la droite dun nombre entier de 32 bits. Dcalage vers la gauche de 16 bits. Dcalage vers la droite de 16 bits. Dcalage vers la gauche de 32 bits. Dcalage vers la droite de 32 bits. Rotation vers la gauche de 32 bits. Rotation vers la droite de 32 bits.

Exemple en LIST:
L L MW MW 100 // 102 // // // 104 //

* SRW T MD

Charger dans ACCU 1 la valeur du mot MW100 Charger dans ACCU 1 la valeur du mot MW102 Lancien contenu de lACCU1 est charg dans lACCU2. Dcalage vers la droite de 16 bits Charger la valeur de lACCU1 vers la mmoire MW104.

Exemple en CONTACT:
N

d/ Les Mots
z z z z z z UW OW XOW UD OD XOD :WAND_W : :WOR_W : :XOW : :WAND_DW : :WOR_DW : :WXOR_DW :

OPERATIONS LOGIQUES
Opration Opration Opration Opration Opration Opration ET sur 16 bits. OU sur 16 bits OU EXCLUSIF sur 16 bits ET sur 32 bits OU sur 32 bits OU EXCLUSIF sur 32 bits

10

Fonctions Masque, Auto-maintien, Inversion:

Exemple en LIST:
L L MD MD MD 100 // 104 // // // 108 //

* UD T

Charger dans ACCU 1 la valeur du mot MD100 Charger dans ACCU 1 la valeur du mot MD104 Lancien contenu de lACCU1 est charg dans lACCU2. ET logique entre ACCU2 et ACCU1 Charger la valeur de lACCU1 vers la mmoire MD108.

Exemple en CONTACT:

e/ Accumulateurs
z z z z z z z z z z z z BLD DEC INC NOP 0 NOP 1 POP PUSH TAK ENT LEAVE +AR1 +AR2 : : : : : : : : : : : :

TRANSFERTS

11

Instructions sur les Accumulateurs:

Opration de composition dimage (opration nulle). Dcrmenter laccumulateur 1-L-L. Incrmenter laccumulateur 1-L-L. Opration nulle (RLG 0). Opration nulle (RLG 1). Copies inverse de ACCU4=>3, 3=>2, 2=>1. Copies de ACCU1=>2, 2=>3, 3=>4. Permuter ACCU1 et ACCU2. Copies de ACCU2=>3, 3=>4. Copies de ACCU4=>3, 3=>2. Additionner ACCU1 au registre dadresse 1. Additionner ACCU1 au registre dadresse 2.

PUSH
ENT
A C C U 1 A C C U 2 A C C U 3 A C C U 4

TAK

LEAVE

POP

e/ Accumulateurs

PERMUTATIONS

12

Instructions sur les Accumulateurs: z TAW : Opration qui permet dinverser


1-H-H 1-H-L 1-L-H

lordre des octets 1-L-H et 1-L-L.


1-L-L

A C C U 1
1-H-H 1-H-L 1-L-H 1-L-L

TAW

TAD

: Permutation des octets de lACCU1, lACCU2 ntant pas affect.


1-H-H 1-H-L 1-L-H 1-L-L

A C C U 1

TAD
1-L-H 1-L-L

1-H-H

1-H-L

e/ Accumulateurs

ROTATION
bits de lACCU1.

13

Instructions sur les Accumulateurs: z RLDA : Rotation vers la gauche des 32


BI 1
Y Y

1-H

1-L
X

BI 1
X

z RRDA
BI 1
Y Y

: Rotation vers la droite des 32 bits de lACCU1.

1-H

1-L
X

BI 1
X

e/ Accumulateurs

Chargement et Transfert

14

Instructions de Chargement:
z z z z z z z z TAR : L : L STW: LAR1: LAR1 <d>: LAR1 AR2: LAR2: LAR2 <d>:

Permuter Registre dadresse 1 avec Registre dAdresse 2. Charger. Charger mot dtat dans laccumulateur 1. Charger Accumulateur1 => Registre dadresse1. Charger pointeur de 32 bits dans Registre dadresse1. Charger Registre dadresse 2 => Registre dadresse1. Charger Accumulateur1 => Registre dadresse 2. Charger pointeur de 32 bits dans Registre dadresse 2.

Instructions de Transfert:
z z z z z z z z TAR : T : T STW: TAR1: TAR1 <d>: TAR1 AR2: TAR2: TAR2 <d>:

Permuter Registre dadresse 1 avec Registre dAdresse 2. Transfrer. Transfrer laccumulateur 1 dans mot dtat. Transfrer Registre dadresse1 => Accumulateur1. Transfrer Registre dadresse1 ladresse de destination ( 32 bits). Transfrer Registre dadresse1 => Registre dadresse 2. Transfrer Registre dadresse 2 => Accumulateur1. Transfrer Registre dadresse 2 ladresse de destination (32 bits).

f/ Chargement
MW 100:

TRANSFERT

15

L MW100

STANDARD

ACCU2

23 0 0 23
TAK

14 23 23 0

MW 200: MW 200:

0
LAR1 STANDART A C C U 1

T MW200
A R 1

TAR1 LAR2 TAR2

+AR1 +AR1 P#x.y +AR2 +AR2 P#x.y

TAR
A R 2

g/ Mot dtat
Mot dtat:

DESCRIPTIONS

16

Le mot dtat est un registre dans la mmoire de votre CPU contenant des bits auxquels vous pouvez accder dans les oprandes de combinaisons sur bits et sur mots. Structure du mot dtat :

Bits du Mot dtat:


Les oprations sur bits dtat sont des oprations combinatoires sur bits qui utilisent les bits du mot dtat. Chacune de ces oprations ragit lune des conditions suivantes indiques par un ou plusieurs bits du mot dtat :
z Le bit de rsultat binaire (BIE ---I I---) est 1 (son tat de signal est gal 1). z Un dbordement (OV ---I I---) sest produit lors dune opration arithmtique ou un dbordement mmoris (OS ---I I---). z Le rsultat dune opration arithmtique est illicite (UO ---I I---). z Le rsultat dune opration arithmtique par rapport 0 est :== 0, <> 0, > 0, < 0, >= 0, <= 0

Vous pouvez valuer les bits avec les oprations sur les nombres entiers et virgules flottantes.

g/ Mot dtat

BITS DU MOT

17

h/ Ad. Indirect
z

EN MEMOIRE

18

Exemple d un Pointeur en Format Mot :

U E0.0 L S5T#3s SE T[MW100]

Ajout de la valeur d un mot (index) une adresse donne: Si MW100= 0 Alors on travaille avec SE T0 Si MW100= 1 Alors on travaille avec SE T1 Si MW100= 10 Alors on travaille avec SE T10

Exemple d un Pointeur en Format Double Mot :

L T U =

P#8.7 MD2 E [MD2] A [MD2]

Charger la valeur du pointeur dans lACCU 1. Transfrer le pointeur dans MD2. Interroger l'tat du signal l'entre E 8.7 et Transfrer cet tat de signal la sortie A 8.7

h/ Ad. Indirect

EN MEMOIRE

19

Exemple d adressage Indirect en Mmoire :


z Effectuer une combinaison selon la table de vrit ET avec le bit d'entre. L'adresse figure dans le double mot de mmento MD2.

U = L AUF

[MD 2]

z Affecter l'tat de signal du bit RLG au bit de donnes d'instance. L'adresse figure dans le double mot de donnes DBD2.

DIX [DBD 2] EB [DID 4]

z Charger l'octet d'entre dans l'accumulateur 1. L'adresse figure dans le double mot d'instance DID4.

z Ouvrir le bloc de donnes. Le numro du bloc de donnes figure dans le mot de donnes locales LW2.

DB [LW 2]

h/ Ad. Indirect
Exemple 1 :

REGISTRE

20

z Charger la valeur du pointeur avec code de zone dans l'accumulateur 1. z Sauvegarder la zone de mmoire E et l'adresse 8.7 dans AR1. z Charger la valeur du pointeur avec code de zone dans l'accumulateur 1. z Sauvegarder la zone de mmoire A et l'adresse 8.7 dans AR2. z Interroger l'tat de signal l'entre E 8.7 (P#0.0 sert dcaler). z Le calcul dcoule de l'addition de 8.7 (AR2) + 1.1 (dcalage). Le rsultat gale 10.0 et non pas 9.8 (raisonne octal).

L L

P# E8.7

LAR1 LAR2 U =

P# A8.7

[AR1, P#0.0]

[AR2, P#1.1]

h/ Ad. Indirect
Exemple 2:

REGISTRE E 0.0 M002 P#M10.0 M001 P#A0.3

21

M002: M001:

U SPB L LAR1 SPA L LAR1 U =

Charger Valeur du pointeur dans ACCU1. Sauvegarder M et l'adresse 10.0 dans AR1.

Charger Valeur du pointeur dans ACCU1. Sauvegarder A et l'adresse 0.3 dans AR1.

E 0.4 [AR1, P#0.1]

Rq :

E 0.0 dtermine le pointeur qui sera utilis pour cette instruction. L'tat de signal en E 0.4 est affect soit au mmento M10.1 soit la sortie A0.4.

h/ Ad. Indirect
Exemple 3:

REGISTRE

22

z Effectuer une combinaison selon la table de vrit ET d'un bit. L'adresse est calcule par l'addition du contenu de AR1 + 4 octets + 3 bits. La zone de mmoire du bit est indique dans les bits 24, 25 et 26 du registre AR1. z Affecter au bit l'tat de signal du bit RLG. L'adresse figure dans le registre AR2. La zone de mmoire du bit est indique dans les bits 24, 25 et 26 du registre AR2. z Charger un octet dans l'accumulateur 1. L'adresse est calcule par l'addition du contenu de AR1 + 10 octets. La zone de mmoire du bit figure dans les bits 24, 25 et 26 du registre AR1. z Transfrer le contenu de l'accumulateur 1 dans un double mot. L'adresse est calcule par l'addition du contenu de AR2 + 53 octets. La zone de mmoire du bit figure dans les bits 24, 25 et 26 du registre AR2.

U =

[AR1,P#4.3]

[AR2, P#0.0]

L B

[AR1, P#10.0] [AR2,P#53.0]

T D

h/ Ad. Indirect
Exemple 4 :

REGISTRE

23

z Charger la valeur du pointeur dans lACCU 1.

z Charger le pointeur de l'accumulateur 1 dans AR1. z Interroger l'tat de signal l'entre E 8.7 , P#0.0 permet deffectuer un dcalage ou offset.

P#8.7

LAR1 U

E [AR1, P#0.0]

z L'adresse exacte 8.7 se trouve dans AR1. L'adresse exacte 10.0 est calcule par l'addition de 8.7 (AR1) plus 1.1 (Pointeur de dcalage). Le rsultat gale 10.0 et non pas 9.8 (numration octale).

A [AR1, P#1.1]

h/ Ad. Indirect
Exemple 5 :

REGISTRE

24

z Effectuer une combinaison selon la table de vrit ET avec le bit d'entre. L'adresse est calcule par l'addition du contenu de AR1 + 4 octets + 3 bits. z Affecter l'tat de signal du bit RLG au bit de donnes d'instance. L'adresse figure dans AR2. z Charger l'octet d'entre dans l'accumulateur 1. L'adresse est calcule par l'addition du contenu de AR1 + 10 octets. z Transfrer le contenu de l'accumulateur 1 dans le double mot de donnes locales. L'adresse est calcule par l'addition du contenu de AR2 + 53 octets.

U = L

E [AR1,P#4.3]

DIX [AR2, P#0.0] EB [AR1, P#10.0]

LD [AR2,P#53.0]

h/ Ad. Indirect
But :

ADRESSAGE INDIRECT

25

z Permet un accs toute la zone mmoire partir de quelques lignes dinstructions. Partie dclarative

Partie Programme

Si MW100= 0 on charge Si MW100= 1 on charge Si MW100= 10 on charge

DB10.DBB0 DB10.DBB1 DB10.DBB10

=> MB102 => MB102 => MB102

z Le Pointeur permet de dcaler: P#0.0 permet de travailler sur tous les bits. P#1.0 permet de travailler sur tous les Bytes (B). Rq : P#2.0 permet de travailler sur tous les Mots (W). P#4.0 permet de travailler sur tous les Double Mots (D).

Notes:

26

Aforest

PH.Fvrier/05

Maintenance S7

T 104 264 20

Notes:

27

Aforest

PH.Fvrier/05

Maintenance S7

T 104 264 20

Notes:

28

Aforest

PH.Fvrier/05

Maintenance S7

T 104 264 20

You might also like