Description de la fonction
IEC_BMDI copie mot à mot le nombre d'éléments indiqué dans LENGTH, de la position OFF_IN du tableau source (SEL_IN) à la position OFF_OUT du tableau cible (SEL_OUT). Lors de la copie, LENGTH utilise toujours le type de SEL_IN pour l'orientation (%IX, %MX : LENGTH = nombre de bits ; %IW, %MW : LENGTH = nombre de mots)
Comportement lors de la copie :
-
%MX ou %IX vers %MX
Lors de la copie de %MX ou %IX vers %MX, la longueur source et la longueur cible sont identiques.
-
%IW ou %MW vers %MW
Lors de la copie de %IW ou %MW vers %MW, la longueur source et la longueur cible sont identiques.
-
%MX ou %IX vers %MW
Lors de la copie de %MX ou %IX vers %MW, une copie WORD vers WORD a également lieu. A cette occasion, le premier bit source est copié dans le MSB (bit de poids fort) du premier registre %MW et ainsi de suite. LENGTH indique le nombre de bits à copier. La longueur maximum de sortie est LENGTH/16 registres.
-
%IW ou %MW vers %MX
Lors de la copie de %IW ou %MW vers %MX, une copie WORD vers WORD a également lieu. A cette occasion, le MSB (bit de poids fort) du premier registre est copié dans le premier bit cible et ainsi de suite. LENGTH indique le nombre de registres à copier. La longueur maximum de sortie est LENGTH x 16 bits.
Dans notre exemple, 64 bits %MX source sont copiés de l'adresse de départ %MX129 vers le registre %MW cible (commençant par l'adresse %MW112). La plage d'entrée s'étend de %MX129 à %MX192 et la plage de sortie de %MW112 à %MW115.
Dans notre exemple, 11 registres %MW sources sont copiés de l'adresse de départ %MW250 vers le registre %MX cible (commençant par l'adresse %MX257). La plage d'entrée s'étend de %MW250 à %MW260 et la plage de sortie de %MX257 à %MX432.
Dans notre exemple, 128 bits %MX sources sont copiés de l'adresse de départ %MX001 vers le registre de destination %MX cible (commençant par l'adresse %MX257). La plage d'entrée s'étend de %MX001 à %MX127 et la plage de sortie de %MX257 à %MX384.
Dans notre exemple, 15 bits %MW sources sont copiés de l'adresse de départ %MW250 vers le registre de destination %MW cible (commençant par l'adresse 4:01030). La plage d'entrée s'étend de %MW250 à %MW264 et la plage de sortie de 4:01030 à 4:01044.