Bonjour à tous,
je cherche à diviser deux entier signé codé sur 16 bits , logiquement lorsque j'utilise
par exemple : idiv bx , si j'ai bien compris l'opération est dx:ax / bx .
Le quotient est stocké dans ax et le reste dans dx .
Déjà je ne comprend pas comment fonctionne dx:ax pour le numérateur, du coup je me suis contenté de mettre mon mot de 16 bits dans ax , ça fonctionne pour mon exemple 32000 / 30 ou 32000 / -30 .
Mais par contre si je fait -32000 / -30 j'obtiens un chiffre négatif , j'ai compris que c'est du au fait le signe de ax n'est pas étendu à dx pour le numérateur, du coup il est toujours considéré comme positif à moins d'initialiser dx avec des 1 , mais la çà devient du chipotage .
comment faire ? manipuler directement dx:ax ou alors étendre le signe de ax à dx .
Est aussi à quoi sert ce fameux reste stocke dans dx, la division entière n'est pas censé ne laisser aucun reste ? comme en C
Merci d'avance pour vos éclaircissement
Partager