home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / pascal / tplib21.zip / INSTALL.EXE / SUCASE.ASM < prev    next >
Assembly Source File  |  1993-06-24  |  4KB  |  95 lines

  1. ;               TURBO PASCAL LIBRARY 2.1
  2. ;               Case conversion module
  3.  
  4.                 TITLE   UNIT STRINGS: Case conversion module
  5.                 PAGE    66,132
  6.                 %BIN    12
  7.  
  8. CODE            SEGMENT WORD
  9.                 ASSUME  CS:CODE
  10.                 LOCALS
  11.                 PUBLIC  LOCASE, UPPERCASE, LOWERCASE
  12.  
  13.  
  14. ;               FUNCTION LoCase (ch: CHAR): CHAR
  15. ;               Convert character to lower-case equivalent
  16.  
  17. LOCASE          PROC    FAR
  18.                 POP     BX                      ; Get return address from stack
  19.                 POP     CX
  20.                 POP     AX                      ; Get character in AL
  21.                 CMP     AL,'A'                  ; No adjust if not capital
  22.                 JB      @@L1
  23.                 CMP     AL,'Z'
  24.                 JA      @@L1
  25.                 OR      AL,20H                  ; Convert upper to lower case
  26. @@L1:           PUSH    CX                      ; Restore return address
  27.                 PUSH    BX
  28.                 RET
  29. LOCASE          ENDP
  30.  
  31.                 PAGE
  32.  
  33.  
  34. ;               FUNCTION UpperCase (s: STRING): STRING
  35. ;               Convert string to upper case
  36.  
  37. UPPERCASE       PROC    FAR
  38.                 PUSH    BP
  39.                 MOV     BP,SP                   ; Set up stack frame pointer
  40.                 PUSH    DS
  41.                 LDS     SI,DWORD PTR [BP+6]     ; Point DS:SI to input string
  42.                 LES     DI,DWORD PTR [BP+10]    ; Point ES:DI to output string
  43.                 CLD
  44.                 MOV     CL,[SI]                 ; Get input-string length in CX
  45.                 XOR     CH,CH
  46.                 MOVSB                           ; Copy string-length byte
  47.                 JCXZ    @@L3                    ; Skip loop if null string
  48. @@L1:           LODSB                           ; Get char. from input string
  49.                 CMP     AL,'a'                  ; No adjust if not lower case
  50.                 JB      @@L2
  51.                 CMP     AL,'z'
  52.                 JA      @@L2
  53.                 AND     AL,0DFH                 ; Convert lower to upper case
  54. @@L2:           STOSB
  55.                 LOOP    @@L1
  56. @@L3:           POP     DS                      ; Restore registers
  57.                 POP     BP
  58.                 RET     4
  59. UPPERCASE       ENDP
  60.  
  61.                 PAGE
  62.  
  63.  
  64. ;               FUNCTION LowerCase (s: STRING): STRING
  65. ;               Convert string to lower case
  66.  
  67. LOWERCASE       PROC    FAR
  68.                 PUSH    BP
  69.                 MOV     BP,SP                   ; Set up stack frame pointer
  70.                 PUSH    DS
  71.                 LDS     SI,DWORD PTR [BP+6]     ; Point DS:SI to input string
  72.                 LES     DI,DWORD PTR [BP+10]    ; Point ES:DI to output string
  73.                 CLD
  74.                 MOV     CL,[SI]                 ; Get input-string length in CX
  75.                 XOR     CH,CH
  76.                 MOVSB                           ; Copy string-length byte
  77.                 JCXZ    @@L3                    ; Skip loop if null string
  78. @@L1:           LODSB                           ; Get char. from input string
  79.                 CMP     AL,'A'                  ; No adjust if not upper case
  80.                 JB      @@L2
  81.                 CMP     AL,'Z'
  82.                 JA      @@L2
  83.                 OR      AL,20H                  ; Convert lower to upper case
  84. @@L2:           STOSB
  85.                 LOOP    @@L1
  86. @@L3:           POP     DS                      ; Restore registers
  87.                 POP     BP
  88.                 RET     4
  89. LOWERCASE       ENDP
  90.  
  91. CODE            ENDS
  92.  
  93.                 END
  94.  
  95.