88 lines
1.7 KiB
Plaintext
88 lines
1.7 KiB
Plaintext
|
||
; * WARNING WARNING WARNING WARNING WARNING WARNING WARNING *
|
||
|
||
; Please do not try to use external procedures
|
||
; unless you are familiar with assembly language.
|
||
;
|
||
; IMPORTANT: Externals must be written in assembly language.
|
||
;
|
||
; The following example translates a string to upper case.
|
||
|
||
;
|
||
; Place the following code in a file: "STU.ASM"
|
||
;
|
||
|
||
|
||
CODE SEGMENT
|
||
ASSUME CS:CODE
|
||
|
||
STU PROC NEAR
|
||
|
||
PUSH BP ; SAVE ENVIRONMENT
|
||
MOV BP,SP ; MANUAL PAGE 189
|
||
|
||
LES DI,[BP+4] ; GET PARAMETER
|
||
MOV CL,ES:[DI]
|
||
INC CL
|
||
L1: DEC CL
|
||
JZ L2
|
||
INC DI
|
||
CMP ES:BYTE PTR[DI],'a'
|
||
JB L1
|
||
CMP ES:BYTE PTR[DI],'z'
|
||
JA L1
|
||
SUB ES:BYTE PTR[DI],20H
|
||
JMP SHORT L1
|
||
|
||
L2: MOV SP,BP ; RESTORE ENVIRONMENT
|
||
POP BP ; MANUAL PAGE 190
|
||
RET 4
|
||
STU ENDP
|
||
CODE ENDS
|
||
END
|
||
|
||
; Now exit to PC-DOS and type:
|
||
;
|
||
; ASM STU
|
||
; LINK STU
|
||
; EXE2BIN STU.EXE STU.COM
|
||
;
|
||
; IGNORE MINOR ERRORS FROM ASM AND LINK
|
||
|
||
|
||
|
||
To use, write the following program:
|
||
|
||
|
||
type
|
||
AnyString = string[255];
|
||
|
||
var
|
||
S: AnyString;
|
||
I: integer;
|
||
|
||
|
||
procedure STU(var S: AnyString); external 'STU.COM';
|
||
|
||
begin
|
||
readln(S);
|
||
STU(S);
|
||
writeln(S);
|
||
end.
|
||
|
||
|
||
|
||
|
||
; The above external procedure is only an example. You
|
||
; can achieve the same result in Turbo-Pascal:
|
||
;
|
||
; procedure STU(var S: AnyString);
|
||
; var
|
||
; I: integer;
|
||
; begin
|
||
; for I:=1 to Length(S) do S[I]:=Upcase(S[I]);
|
||
; end;
|
||
;
|
||
|
||
|
||
|