Comment coder/decoder un caractère sur 2 octets ?

Comment coder/decoder un caractère sur 2 octets ? - ASM - Programmation

Marsh Posté le 08-03-2005 à 13:55:29    

Bonjour à tous, j'ai besoin d'aide en assembleur et je cale littéralement (c'est assez urgent :cry: ).
Voici le sujet :
 
Ecrire un sous programme "CODAGE" qui:

  • a en entrée un caractère à coder mis dans AL
  • réalise le codage d'un octet de données sur 2 octets
  • retourne dans AX le résultat du codage


mais aussi la réciproque :
 
Ecrire un sous programme "DECODAGE" qui:

  • a en entrée un caractère à décoder mis dans AX
  • réalise le décodage de 2 octets en un octet de données
  • retourne dans AL le résultat du décodage


Pourriez vous m'aider à réaliser ces 2 sous-programmes  
Merci d'avance...  :jap:


Message édité par Iryngael le 08-03-2005 à 13:57:09
Reply

Marsh Posté le 08-03-2005 à 13:55:29   

Reply

Marsh Posté le 08-03-2005 à 16:18:56    

[:valentinorossi]  
 
Personne pour m'aider ? :'(

Reply

Marsh Posté le 08-03-2005 à 16:19:40    

T'as vraiment pas un début de programme ?

Reply

Marsh Posté le 08-03-2005 à 17:50:23    

c'est quoi comme codage ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 08-03-2005 à 20:25:45    

en fait il me faut séparer le contenu de AL en 2 et le répartir dans 2 registres. J'ai le début du programme qui me fait la saisie du caractère ainsi que la fin qui convertit le binaire en ascii mais je calle sur coment répartir les 4premiers bits de AL dans un registre et les 4 derniers dans un autre ainsi que la manip inverse, c'est à dire réunir les 2 moitiés de l'octet en une . me faut-il utiliser les décalages SHl et SHR ?

Reply

Marsh Posté le 08-03-2005 à 20:31:18    

Ouais, décalage binaire, et tu stocke le résultat dans les registres qui vont bien

Reply

Marsh Posté le 08-03-2005 à 20:49:00    

Bon je vai tenter avec des SHR/SHL verrai bien ce que ca donne (quand je pense qu'après il faut que je me seve de ca pour faire de l'encapsulation de bits dans une trame reseau  :'( snif

Reply

Marsh Posté le 08-03-2005 à 22:07:31    

ça serait certainement plus indiqué d'utiliser ROR/ROL si tu veux conserver les bits décalés :o


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 08-03-2005 à 23:26:18    

Aie et ca marhe comment les ROR et ROL ?

Reply

Marsh Posté le 08-03-2005 à 23:36:17    

comparaison entre SHR et ROR (le principe est le même pour SHL et ROL) :
 
8 bits de départ : AL = 11001101
SHR AL,4
résultat : AL = 00001100
 
ROR AL,4
résultat : AL = 11011100
 
tu vois le topo ? le ROR fait un décalage circulaire (le bit de poids faible ejecté devient le bit de poids fort)
donc tu fais un ROR, et avec un AND tu masques les 4 bits de poids faible, et tu fous le résultat dans un registre. ensuite tu refais un ROR, puis AND, et idem


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 08-03-2005 à 23:36:17   

Reply

Marsh Posté le 09-03-2005 à 12:25:40    

Bonjour
voici une proposition de code :
mov ah, al
and al, 0fh
shr ah, 4
et le résultat est dans AX
pour l'inverse
and al, 0fh ; peut être initile si on est sur que le poids fort est nul
shl ah, 4
or al, ah
Je serais interressé de conaitre la solution en utilisant ror
cordialement

Reply

Marsh Posté le 09-03-2005 à 12:51:58    

je vais tester ce bout de code. je posterai la solution que j'ai trouvé dans l'après midi. Merci pour ta propal db__ et pour les explis harko


Message édité par Iryngael le 09-03-2005 à 12:52:27
Reply

Marsh Posté le 10-03-2005 à 12:59:01    

db__ a écrit :

Bonjour
voici une proposition de code :
mov ah, al
and al, 0fh
shr ah, 4
et le résultat est dans AX
pour l'inverse
and al, 0fh ; peut être initile si on est sur que le poids fort est nul
shl ah, 4
or al, ah
Je serais interressé de conaitre la solution en utilisant ror
cordialement


 
j'ai donc testé ton code et ca marche impeccabement. j'ai juste eu a faie 2 OR 01000000 pour appliquer un masque à Ah et AL, ce qui était le but du codage.
De même ta solution de décodage marche parfaitement.
Encore merci


---------------
/!\ Le point de rendez-vous des amateurs de vieux matos informatique c'est ici !/!\
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed