strrepc.asm
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:1k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. ;***
  2. ;* $Workfile:   strrepc.asm  $
  3. ;* $Revision:   1.0  $
  4. ;*   $Author:   Dave Sewell  $
  5. ;*     $Date:   28 Apr 1989 16:52:44  $
  6. ;*
  7. ;* Replace all occurences of a particular character within a string with
  8. ;* another character.
  9. ;***
  10. INCLUDE dos.mac
  11. TEXTSEG
  12. PASCALDEF   strrepc
  13. ;***
  14. ;* strrepc -- Replace occurrences of a character within a string.
  15. ;*
  16. ;* extern  void pascal strrepc(char *str, int c, int repc);
  17. ;*
  18. ;* char *str;     pointer to target string
  19. ;* int c;     character in the string to replace
  20. ;* int repc;     replacement character
  21. ;*
  22. ;***
  23. str     EQU     X + I + I
  24. c     EQU     X + I
  25. repc     EQU     X
  26.     procent
  27.     IF     LDATA
  28.     PUSH    DS
  29.     LDS     SI, [BP + str]
  30.     ELSE
  31.     MOV     SI, [BP + str]
  32.     ENDIF
  33.     MOV     AH, BYTE PTR [BP + c]
  34.     MOV     BL, BYTE PTR [BP + repc]
  35. RepLoop:    LODS    BYTE PTR DS:[SI]
  36.     OR     AL, AL
  37.     JZ     RepDone
  38.     CMP     AL, AH
  39.     JNE     RepLoop
  40.     MOV     [SI - 1], BL    ;Replace target character
  41.     JMP     RepLoop
  42. RepDone:
  43.     IF LDATA
  44.     POP     DS
  45.     ENDIF
  46.     procret DP + I + I
  47. PASCALEND   strrepc
  48. TEXTEND
  49. END