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 4,634 of 4,675   
   Kerr-Mudd, John to John"   
   Re: Rot13 for DOS   
   18 Nov 23 11:10:20   
   
   XPost: comp.os.msdos.programmer, alt.lang.asm   
   From: admin@nospicedham.127.0.0.1   
      
   On Fri, 27 Jan 2023 13:30:13 +0000   
   "Kerr-Mudd, John"  wrote:   
      
   > On Fri, 27 Jan 2023 09:57:22 +0000   
   > "Kerr-Mudd, John"  wrote:   
   >   
   > > On Wed, 25 Jan 2023 17:02:43 +0000   
   > > "Kerr-Mudd, John"  wrote:   
   > >   
   > []   
   > > > > Kerr-Mudd, John wrote:   
   > > > > > Finally, a rot13 program for DOS that's smaller than the standard   
   version   
   > > > > > with jumps:   
   > > > > >   
   []   
   > 'Better' still use C3 (embedded 'ret') to reduce prog to 45 bytes.   
   []   
      
   One that works even if the rot amount isn't 13 (ie the older version   
   didn't!) also 45 bytes:   
      
   ->u 100 l2D   
   16AD:0100 BA E6 0D       mov          dx,0DE6   
   16AD:0103 B4 3F          mov          ah,3F   
   16AD:0105 B5 C3          mov          ch,C3   
   16AD:0107 CD 21          int          21   
   16AD:0109 91             xchg         ax,cx   
   16AD:010A E3 FA          jcxzw        0106   
      
   16AD:010C 89 D6          mov          si,dx   
   16AD:010E 51             push         cx   
      
   16AD:010F AC             lodsb   
   16AD:0110 24 DF          and          al,DF   
   16AD:0112 2C 41          sub          al,41   
   16AD:0114 2C 1A          sub          al,1A   
   16AD:0116 18 E4          sbb          ah,ah   
   16AD:0118 00 F0          add          al,dh   
   16AD:011A D6             salc   
   16AD:011B 21 D0          and          ax,dx   
   16AD:011D 00 E0          add          al,ah   
   16AD:011F 00 64 FF       add          [si-01],ah   
   16AD:0122 E2 EB          loopw        010F   
      
   16AD:0124 59             pop          cx   
   16AD:0125 43             inc          bx   
   16AD:0126 B4 40          mov          ah,40   
   16AD:0128 CD 21          int          21   
   16AD:012A 4B             dec          bx   
   16AD:012B EB D6          jmp          0103   
      
   ->          d 100 l2D   
   16AD:0100 BA E6 0D B4-3F B5 C3 CD-21 91 E3 FA-89 D6 51 AC  ....?...!.....Q.   
   16AD:0110 24 DF 2C 41-2C 1A 18 E4-00 F0 D6 21-D0 00 E0 00  $.,A,......!....   
   16AD:0120 64-FF E2 EB 59-43 B4 40 CD-21 4B EB D6           d...YC.@.!K..   
   ->          q   
      
      
      
   And a version that allows the rot amount as a parameter in 64 bytes:   
   example usage:   
   rot 3u 100 l40   
   16AD:0100 BA E6 0D       mov          dx,0DE6   
   16AD:0103 BE 82 00       mov          si,0082   
   16AD:0106 AD             lodsw   
   16AD:0107 2D 30 30       sub          ax,3030   
   16AD:010A 72 04          jb           0110   
   16AD:010C 86 E0          xchg         ah,al   
   16AD:010E D5 0A          aad          0A   
   16AD:0110 3C 00          cmp          al,00   
   16AD:0112 72 02          jb           0116   
   16AD:0114 88 C6          mov          dh,al   
      
   16AD:0116 B4 3F          mov          ah,3F   
   16AD:0118 B5 C3          mov          ch,C3   
   16AD:011A CD 21          int          21   
   16AD:011C 91             xchg         ax,cx   
   16AD:011D E3 FA          jcxzw        0119   
      
   16AD:011F 89 D6          mov          si,dx   
   16AD:0121 51             push         cx   
      
   16AD:0122 AC             lodsb   
   16AD:0123 24 DF          and          al,DF   
   16AD:0125 2C 41          sub          al,41   
   16AD:0127 2C 1A          sub          al,1A   
   16AD:0129 18 E4          sbb          ah,ah   
   16AD:012B 00 F0          add          al,dh   
   16AD:012D D6             salc   
   16AD:012E 21 D0          and          ax,dx   
   16AD:0130 00 E0          add          al,ah   
   16AD:0132 00 44 FF       add          [si-01],al   
   16AD:0135 E2 EB          loopw        0122   
      
   16AD:0137 59             pop          cx   
   16AD:0138 43             inc          bx   
   16AD:0139 B4 40          mov          ah,40   
   16AD:013B CD 21          int          21   
   16AD:013D 4B             dec          bx   
   16AD:013E EB D6          jmp          0116   
      
   ->          d 100 l40   
   16AD:0100 BA E6 0D BE-82 00 AD 2D-30 30 72 04-86 E0 D5 0A  .......-00r.....   
   16AD:0110 3C 00 72 02-88 C6 B4 3F-B5 C3 CD 21-91 E3 FA 89  <.r....?...!....   
   16AD:0120 D6 51 AC 24-DF 2C 41 2C-1A 18 E4 00-F0 D6 21 D0  .Q.$.,A,......!.   
   16AD:0130 00 E0 00 44-FF E2 EB 59-43 B4 40 CD-21 4B EB D6  ...D...YC.@.!K..   
   ->          q   
      
      
      
   --   
   Bah, and indeed Humbug.   
      
   --- 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