2017-05-05 4 views
-4

tout d'abord, je suis un débutant en langage d'assemblage et en ce moment j'étudie le microprocesseur. Nous avons programmé quelques petits programmes. Cependant, je travaille sur un programme appelé "Basic Encryption Scheme (BES)". L'idée est de faire basculer l'ordre inférieur du bit d'un caractère entré par l'utilisateur. puis, prenez l'entrée de 1-9 et ajoutez-la au caractère basculé. enfin, imprimez-le. Par exemple, si le caractère d'entrée est A et la valeur de clé d'entrée est 6. le programme doit prendre la valeur ASCIl de A, 01000001, basculer le bit [o: o], produisant 01000000, puis ajouter la touche de valeur d'entrée, 6. dernier caractère de sortie serait 01000110. qui est la valeur ASCII FComment basculer le bit de poids faible dans le langage d'assemblage 8086

les bonnes nouvelles sont que je programmé presque tout: => Je programmé un message qui prennent plus d'un des personnages et les enregistrer dans [si] => J'ai programmé un message qui prend la valeur de la clé d'entrée et la convertit en registre et l'enregistre en bl => J'ai programmé une morue qui prendra la chaîne de [si] et [di] et les imprime à l'écran. Juste ce dont j'ai besoin d'une morue qui applique la méthode de Basic Encryption Scheme en prenant la chaîne de [si] et la clé de (bl).

merci

+1

['xor'] (http://x86.renejeschke.de/html/file_module_x86_id_330.html), ['add'] (http://x86.renejeschke.de/html/file_module_x86_id_5.html) (Gardez à l'esprit' 'z '+ 6 == 128', donc vous devriez probablement décider, si les lettres de fin retourner à A/a (c'est-à-dire 'Z'->' B' pour 2, et 'z'->' b' pour 2 => une logique un peu complexe), ou si vous allez tourner à l'intérieur d'une "plage valide" comme 32-122, donc 'Z'->' a' pour 7, et 'z'->' 'pour 1)) – Ped7g

+2

Si vous avez fait toute cette programmation, vous devriez avoir du code à nous montrer. Peut-être un [MCVE], avec un commentaire ou deux montrant les parties où vous êtes coincé. –

+0

pas besoin de retourner de z à un, je veux une plage valide –

Répondre

2

Top:

prenant la chaîne de [si]

mov dl, [si] 

bit bascule [o: o]

xor dl, 1 

ajouter la valeur d'entrée clé

add dl, bl 

les imprimer à l'écran.

mov ah, 02h 
int 21h 

Puisque vous avez déjà

programment un massage qui prennent plus d'un des personnages et les enregistrer dans [si]

vous avez sauvé la longueur de cette chaîne en un certain emplacement de mémoire ou registre. Je pense que le registre CX aurait été un bon endroit.

Pour traiter toute la chaîne, puis, vous:

  • incrément le pointeur SI
  • décrément la longueur CX
  • si la longueur est de zéro, vous répétez du Top:
+1

++, vous méritez ce massage programmé –