2017-05-21 1 views
0

J'utilise x86_64 Linux Assembly et on me demande de mettre à 1 les trois bits les plus bas d'un caractère (à partir de l'entrée de l'utilisateur), puis d'imprimer le caractère résultant. Pour illustrerComment définir sur 1 les 3 bits inférieurs d'un personnage?

Input: b  ; ASCII in binary: 01100010 

Set the last 3 bits to 1: 

01100010 -> 01100111 

Output: g  ; ASCII in binary: 01100111 

D'après ce que je comprends, le caractère d'entrée est déjà considéré comme binaire dans l'assemblage. Donc, ma question est:

Y at-il un moyen d'obtenir la forme binaire du personnage? Si oui, je serais heureux si quelqu'un pouvait fournir un pseudocode.

Jusqu'à présent, la seule chose qui me vint à l'esprit était de convertir le caractère ASCII du caractère d'entrée en entier -> convertir en binaire -> ensemble à un des 3 bits inférieurs -> passe de binaire en entier -> convertir en chaîne -> imprimer . Mais je n'ai pas trop réfléchi à ce sujet, car il est clair que ça a l'air assez fastidieux.

+0

Montrez-nous ce que vous avez essayé, un [MCVE] pour démontrer. – t0mm13b

+2

'bits' ou' bytes' - il n'y a pas de piqûres. Sauf si vous mordez quelque chose. – luk2302

+0

@ t0mm13b Ma seule tentative a été celle que j'ai décrite plus haut sur la conversion du code ASCII en entier. Vous pouvez imaginer combien de lignes de code serait cet exemple (sans considérer la solution de contournement avec la partie set-to-one-the-lower-3-bits). C'est la raison pour laquelle je ne le publie pas. – Jazz

Répondre

4

Si vous avez un caractère dans votre programme, il est déjà dans la forme dont vous avez besoin. Par exemple, ASCII b est représenté par le nombre 98. Lorsque vous chargez le caractère b dans le registre al, c'est la même chose chose que le chargement du numéro 98 en al.

Enfin, pour activer les bits, utilisez l'instruction or. Par exemple, si votre personnage est en al, vous pouvez activer le plus bas trois bits en utilisant

or al, 7