home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.asm.x86      Ahh, the lost art of x86 assembly      4,675 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 2,870 of 4,675   
   Kerr-Mudd,John to wolfgang kern   
   Re: BASE64 again   
   19 Jul 17 20:37:30   
   
   From: notsaying@nospicedham.invalid.org   
      
   "wolfgang kern"  wrote in news:okknlr$9ll$2   
   @gioia.aioe.org:   
      
   > Kerr Mudd-John wrote:   
   >   
   >>>> Another alternative: (needs cl=7 at start and 7 on the stack).   
   >>> cx=0007, not cl   
   >>>   
   >>>> 123 98             cbw   
   >>>> 124 49             dec          cx   
   >>>> 125 D3 C8          ror          ax,cl   
   >>>> 127 08 05          or           [di],al   
   >>>> 129 47             inc          di   
   >>>> 12A 88 25          mov          [di],ah   
   >>>   
   >>> or you can start here with cx=0 (still need 0x0007 on the stack)   
   >>>> 12C 49             dec          cx   
   >>>> 12D 79 03          jns          0132   
   >>>> 12F 4F             dec          di   
   >>>> 130 59             pop          cx        ; OR push dx   
   >>>> 131 51             push         cx        ;    pop cx   
   >>>> 132 AC             lodsb   
   >>>> 133 3C 3D          cmp          al,3D   
   >>>> 135 75 D4          jnz          010B   
   >>>> 137 59             pop          cx       ; tidy stack on exit   
   >>>>   
   >>>> or could set dl=7 and "push dx/pop cx" to save the extra 2 stack   
   ops?   
   >   
   >   
   >> Yet another one!   
   >> uses 'xor' instead of 'or', so 1 less FU (FixUp);   
   >> 88=mov changed for AA=stosb; 'cmp al' just 1 FU, no need for cbw.   
   >>   
   at start needs ah=0 (or pad at di), cl=0   
      
   >> 0127 41             inc          cx   
   >> 0128 41             inc          cx   
   >> 0129 D3 E0          shl          ax,cl   
   >> 012B 30 25          xor          [di],ah   
   >> 012D 47             inc          di   
   >> 012E AA             stosb   
   >> 012F 4F             dec          di   
    or start here with cx=0008   
   >> 0130 51             push         cx   
   >> 0131 58             pop          ax   
   >> 0132 3C 08          cmp          al,08   
   >> 0134 75 03          jnz          0139   
   >> 0136 4F             dec          di   
   or here (still need ah=0 or pad at di)   
   >> 0137 55             push         bp   
   >> 0138 59             pop          cx   
   >> 0139 AC             lodsb   
   >> 013A 3C 3D          cmp          al,3D   
   >> 013C 75 D1          jnz          010F   
   >   
   > thanks, I'll check if this work. It would make it shorter.   
   > __   
   > wolfgang   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca