2013-06-25 2 views
0

J'ai besoin de décrémenter certains octets sur/de la pile à une adresse donnée (indexée à partir de esi).ASM: décrémenter le contenu de l'adresse spécifique

pop esi ; 

maintenant en train de changer ne serait pas un problème, je ne peux tout simplement faire

mov [esi+13], al ; 

pour stocker le contenu d'al dans esi + 13. Mais comment puis-je décrémenter ce qui est dans "esi + 13"?

E.g. valeur de esi + 13 = 0xFF → Nouvelle valeur de esi + 13 = 0xFE.

J'ai essayé différentes choses comme

dec [esi+13] ; 
sub [esi+13], 1; 
dec esi+13; 

et ainsi de suite, mais je ne trouve pas une solution.

Je ne sais pas quels octets seront dans "esi + 13" donc je ne peux pas déplacer le "résultat" à l'adresse, je dois vraiment le décrémenter.

Merci!

+0

Que voulez-vous dire que vous ne pouvez pas déplacer un résultat à un emplacement pour lequel vous avez un pointeur dans esi? Je peux comprendre pourquoi tu ne * veux * pas le faire dans les petits pas, mais cela devrait être * possible *. –

Répondre

0

Je pense que cela devrait fonctionner:

dec byte ptr [esi+13] 
+0

Merci pour votre idée. Utiliser nasm c'est simplement "dec byte [esi + 13]" :) – CFP

Questions connexes