Objet: Changer le signe d'une zone binaire.
Les deux zones peuvent se superposer
Appel: Masm :
invoke kneg,addr kle,addr kcr,addr chs,addr pas,addr chd,addr pad
;le registre ax contient kcr en sortie
Paramètres:
1) KLE : Limite d'erreur: nombre négatif qui est ajouté à KCR si erreur détectée.
2) KCR : Numéro de compte rendu
>=0 Le traitement s'est correctement exécuté et donne le signe de
(CHD,PAD) 0 pour plus, et 1 pour moins
<0 erreurs dans l'exécution du programme
3) CHS Nom de la chaîne contenant la zone source
4) PAS Pavé descripteur de la zone source.
5) CHD Nom de la chaîne contenant la zone destination.
6) PAD Pavé descripteur de la zone destination.
Messages: Voir dossier des messages
Exemples:
Connexes:
Versions:
1 du 27/12/95 création de kneg
4.1 du 25/4/04 programmation en 32 bits
Fonctions:
En MASM : LUDP
Variables:
As : abscisse source
Ls : longueur source
Ad : abscisse destination
Ld : longueur destination
Ly : longueur courante
Ry : retenue courante
Cy : octet en cours
Cr : compte rendu interne
Traitement:
Pour changer le signe d'une zone entière, il faut faire un NOT sur chaque bit et ajouter 1 au nombre ainsi obtenu.
En pratique: 1er octet inot+1
2eme octet inot + retenue précédente
etc...
Si la zone destination est plus longue, on prolonge avec le signe destination (0 ou 255)
si la zone destination est plus courte, on vérifie que les octets en sur nombre sont soit 0 soit 255 suivant le signe de la zone source.
Taille: lignes: code:
Corrections:
Améliorations:
Organigramme et Source dans le fichier ASTK.ZIP
__________________________
moby