Hallo,
mit ret springst Du nicht aus dem
asm-Block, sondern aus der ganzen Prozedur. Da Du nicht aufräumst, kann hier alles mögliche passieren. Verwende ein Label in Verbindung mit einem jmp, so wie von thkerkmann vorgeschlagen.
Bei Deiner inzwischen geposteten Version hat Du auch wieder das Problem, dass der Wert überschrieben wird.
Gruß
xaromz