| Assembleur 370 |
DR |
| Divide Registers |
Syntaxe
Paramètres
| Nom |
Description |
| R1 |
Ce paramètre permet d'indiquer le registre impair utilisé pour stocker le quotient dans R1-1 et le reste dans R1. La division est effectuée sur les 64 bits (paire de registres R1-1:R1), où : R1-1 : contient la partie haute du dividende, R1 : contient la partie basse du dividende, le quotient (résultat de la division) est stocké dans R1-1 et R1. le reste est également entreposé dans R1. |
| R2 |
Ce paramètre permet d'indiquer le registre pair contenant le diviseur (32 bits signé) de la division. |
Description
Cette instruction permet d'effectuer la division d'une paire de registres par une registre.
Remarques
- L'instruction DR permet d'effectuer une division entière entre une paire de registres 64 bits et un registre 32 bits. Elle est utilisée pour traiter des entiers longs
nécessitant une précision sur 64 bits. Cela répond aux besoins de calculs plus complexes que les divisions simples.
- Le registre R1 doit impérativement être impair, car il fonctionne avec le registre précédent R1-1. Ensemble, ils forment le dividende sur 64 bits, un format nécessaire
pour diviser de grands nombres. Cette contrainte d'impair garantit un alignement correct en mémoire.
- Le registre R2 contient le diviseur sur 32 bits, représenté en binaire signé. Ce format impose des vérifications préalables, notamment sur la valeur zéro. Une division
par zéro entraîne une interruption de programme (abnormal termination).
- Le quotient de la division est stocké dans R1-1, tandis que le reste est conservé dans R1. Cela permet de récupérer simultanément les deux résultats d'une division
entière. Ce mécanisme est utile dans des calculs comme le modulo ou l'arrondi.
- DR est efficace pour les traitements de données binaires nécessitant des divisions exactes. Elle est souvent utilisée dans des algorithmes mathématiques, cryptographiques
ou de conversion. Sa nature purement registre-registre la rend rapide, sans accès mémoire.
- L'ordre des registres est crucial : R1-1:R1 est le dividende, R2 est le diviseur. Inverser ces rôles ou utiliser un registre pair pour R1 entraîne des erreurs
d'exécution. La documentation IBM recommande une gestion rigoureuse des paires de registres.
- Cette instruction est adaptée aux divisions où la précision est essentielle et où les dépassements de capacité doivent être évités. Toutefois, elle ne gère pas les
nombres décimaux ou packed. Pour cela, des instructions comme DP ou CVB/CVD sont plus appropriées.
- DR ne modifie pas les drapeaux conditionnels comme certaines autres instructions arithmétiques. Cela signifie qu'après DR, une instruction complémentaire est souvent
nécessaire pour tester le résultat. La neutralité sur les indicateurs facilite aussi les traitements enchaînés.
Dernière mise à jour : Mardi, le 22 août 2017