home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
pascal
/
tplib21.zip
/
INSTALL.EXE
/
SUCASE.ASM
< prev
next >
Wrap
Assembly Source File
|
1993-06-24
|
4KB
|
95 lines
; TURBO PASCAL LIBRARY 2.1
; Case conversion module
TITLE UNIT STRINGS: Case conversion module
PAGE 66,132
%BIN 12
CODE SEGMENT WORD
ASSUME CS:CODE
LOCALS
PUBLIC LOCASE, UPPERCASE, LOWERCASE
; FUNCTION LoCase (ch: CHAR): CHAR
; Convert character to lower-case equivalent
LOCASE PROC FAR
POP BX ; Get return address from stack
POP CX
POP AX ; Get character in AL
CMP AL,'A' ; No adjust if not capital
JB @@L1
CMP AL,'Z'
JA @@L1
OR AL,20H ; Convert upper to lower case
@@L1: PUSH CX ; Restore return address
PUSH BX
RET
LOCASE ENDP
PAGE
; FUNCTION UpperCase (s: STRING): STRING
; Convert string to upper case
UPPERCASE PROC FAR
PUSH BP
MOV BP,SP ; Set up stack frame pointer
PUSH DS
LDS SI,DWORD PTR [BP+6] ; Point DS:SI to input string
LES DI,DWORD PTR [BP+10] ; Point ES:DI to output string
CLD
MOV CL,[SI] ; Get input-string length in CX
XOR CH,CH
MOVSB ; Copy string-length byte
JCXZ @@L3 ; Skip loop if null string
@@L1: LODSB ; Get char. from input string
CMP AL,'a' ; No adjust if not lower case
JB @@L2
CMP AL,'z'
JA @@L2
AND AL,0DFH ; Convert lower to upper case
@@L2: STOSB
LOOP @@L1
@@L3: POP DS ; Restore registers
POP BP
RET 4
UPPERCASE ENDP
PAGE
; FUNCTION LowerCase (s: STRING): STRING
; Convert string to lower case
LOWERCASE PROC FAR
PUSH BP
MOV BP,SP ; Set up stack frame pointer
PUSH DS
LDS SI,DWORD PTR [BP+6] ; Point DS:SI to input string
LES DI,DWORD PTR [BP+10] ; Point ES:DI to output string
CLD
MOV CL,[SI] ; Get input-string length in CX
XOR CH,CH
MOVSB ; Copy string-length byte
JCXZ @@L3 ; Skip loop if null string
@@L1: LODSB ; Get char. from input string
CMP AL,'A' ; No adjust if not upper case
JB @@L2
CMP AL,'Z'
JA @@L2
OR AL,20H ; Convert lower to upper case
@@L2: STOSB
LOOP @@L1
@@L3: POP DS ; Restore registers
POP BP
RET 4
LOWERCASE ENDP
CODE ENDS
END