Assembleur 370 |
DP |
Divide Packed |
Syntaxe
Paramètres
Nom |
Description |
D1(L1,B1) |
Ce paramètre permet d'indiquer l'adresse du dividende en format packed decimal. D1 : déplacement, L1 : longueur (en octets) du nombre à diviser (en général, cela correspond au nombre de chiffres du dividende empaqueté), B1 : registre de base. → Adresse effective = B1 + D1. Exemple : D1(L1,B1) pourrait pointer vers une zone mémoire contenant un nombre en packed decimal (exemple 12 34 5C pour la valeur 12345). |
D2(L2,B2) |
Ce paramètre permet d'indiquer l'adresse du diviseur en format binaire signé (32 bits). D2 : déplacement, L2 : longueur (en octets) du diviseur (généralement 4 octets pour un diviseur de 32 bits), B2 : registre de base. → Adresse effective = B2 + D2. Exemple : D2(L2,B2) pourrait pointer vers une valeur binaire de 32 bits (exemple 0x00000010 pour le diviseur 16). |
Description
Cette instruction permet d'effectuer la division d'une chaîne de données par une autre chaîne de données.
Remarques
- L'instruction DP est conçue pour diviser un nombre au format décimal empaqueté (packed) par un diviseur binaire signé. Elle fait le lien entre les mondes
décimal et binaire, courants dans les traitements financiers. C'est une opération mixte cruciale dans de nombreux traitements commerciaux.
- Le dividende est spécifié sous forme décimal empaqueté dans une zone mémoire pointée par D1(L1,B1). Cela permet de traiter de grands nombres en conservant une
représentation compacte. Le champ L1 doit être suffisant pour contenir toute la valeur à diviser.
- Le diviseur est un entier binaire signé de 32 bits, localisé à l'adresse D2(L2,B2). Cette dualité binaire/décimal nécessite des vérifications de validité avant
la division. Un diviseur nul entraîne une interruption système (div/0).
- Le quotient du calcul est réécrit dans la même zone mémoire que le dividende. Cela implique que le programme doit sauvegarder la valeur originale s'il en a encore
besoin. Le reste est quant à lui placé juste après le quotient, toujours en format empaqueté.
- Cette instruction est particulièrement utile pour les traitements financiers, fiscaux ou comptables, où les valeurs sont souvent entreposées en packed. Elle évite des
conversions manuelles coûteuses entre formats. Son usage augmente la précision et la lisibilité des traitements.
- Le format packed permet d'encoder deux chiffres décimaux par octet, ce qui économise de la mémoire. DP exploite ce format pour exécuter des divisions sur des entiers
de plusieurs dizaines de chiffres. Attention à bien dimensionner la zone mémoire pour le quotient et le reste.
- Si la longueur L1 du dividende est insuffisante pour contenir le quotient, le résultat sera tronqué, voire erroné. Il faut s'assurer que la zone mémoire est
suffisamment grande pour le traitement. Une mauvaise configuration peut corrompre les données voisines.
- L'instruction DP est souvent couplée avec les instructions CVB (convert to binary) ou CVD (convert to decimal). Cela permet de préparer ou d'exploiter les résultats
dans d'autres formats. DP constitue un maillon essentiel de la chaîne de conversion et de traitement des données numériques dans les systèmes IBM 370.
Dernière mise à jour : Mardi, le 22 août 2017