declare function GetStrLoc(ByVal integer) as integer declare function GetStrAlloc(ByVal integer) as integer declare function RlsStrAlloc(ByVal integer) as integer StrIn$="Gryrsbatroueraorerpuahat. Orerpuarg qvr Xbfgra rvarf Gryrsbatrfce„puf" RotitASM StrIn$,sOut$ print sOut$ sub RotitASM(ByVal StrIn$,sOut$) ! push ds ! push si ! push di ! les di,[bp+6] ;pointer to sOut$ ! mov bx,es:[di] ;Kennung ! or bx,bx ;empty? ! jz OutOK ! push bx ! call RlsStrAlloc ;free sOut$ ! xor ax,ax ;clear ax ! mov es:[di],ax OutOK: ! mov ax,[bp+10] ;Kennung StrIn$ ! or ax,ax ;not empty? ! jz RotDone ! push ax ! call GetStrLoc ;get pointer to StrIn$ ! push ax ;offset ! push dx ;segment ! push cx ;len ! call GetStrAlloc ;alloc MEM ! stosw ! push ax ! call GetStrLoc ;pointer to MEM ! mov es,dx ! mov di,ax ! pop ds ! pop si Rotloop: ! lodsb ! cmp al,122 ;'z' ! ja stoit ! cmp al,65 ;'A' ! jb stoit ! cmp al,77 ;'M' ! jbe add13 ! cmp al,90 ;'Z' ! jbe sub13 ! cmp al,97 ;'a' ! jb stoit ! cmp al,109 ;'m' ! jbe add13 ! jmp sub13 add13: ! add al,13 ! jmp stoit sub13: ! sub al,13 stoit: ! stosb ! loop Rotloop RotDone: ! pop di ! pop si ! pop ds end sub