home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l039 / 1.img / EXTERNAL.DOC < prev    next >
Encoding:
Text File  |  1980-01-01  |  1.7 KB  |  88 lines

  1.  
  2. ; * WARNING WARNING WARNING WARNING WARNING WARNING WARNING *
  3.  
  4. ;   Please do not try to use external procedures
  5. ;   unless you are familiar with assembly language.
  6. ;
  7. ;   IMPORTANT: Externals must be written in assembly language.
  8. ;
  9. ;   The following example translates a string to upper case.
  10.  
  11. ;
  12. ;   Place the following code in a file: "STU.ASM"
  13. ;
  14.  
  15.  
  16. CODE    SEGMENT
  17.         ASSUME     CS:CODE
  18.  
  19. STU     PROC       NEAR
  20.  
  21.         PUSH       BP                    ; SAVE ENVIRONMENT
  22.         MOV        BP,SP                 ; MANUAL PAGE 189
  23.  
  24.         LES        DI,[BP+4]             ; GET PARAMETER
  25.         MOV        CL,ES:[DI]
  26.         INC        CL
  27. L1:     DEC        CL
  28.         JZ         L2
  29.         INC        DI
  30.         CMP        ES:BYTE PTR[DI],'a'
  31.         JB         L1
  32.         CMP        ES:BYTE PTR[DI],'z'
  33.         JA         L1
  34.         SUB        ES:BYTE PTR[DI],20H
  35.         JMP        SHORT L1
  36.  
  37. L2:     MOV        SP,BP                 ; RESTORE ENVIRONMENT
  38.         POP        BP                    ; MANUAL PAGE 190
  39.         RET        4
  40. STU     ENDP
  41. CODE    ENDS
  42.         END
  43.  
  44. ; Now exit to PC-DOS and type:
  45. ;
  46. ; ASM STU
  47. ; LINK STU
  48. ; EXE2BIN STU.EXE STU.COM
  49. ;
  50. ; IGNORE MINOR ERRORS FROM ASM AND LINK
  51.  
  52.  
  53.  
  54. To use, write the following program:
  55.  
  56.  
  57. type
  58.   AnyString = string[255];
  59.  
  60. var
  61.   S: AnyString;
  62.   I: integer;
  63.  
  64.  
  65. procedure STU(var S: AnyString); external 'STU.COM';
  66.  
  67. begin
  68.   readln(S);
  69.   STU(S);
  70.   writeln(S);
  71. end.
  72.  
  73.  
  74.  
  75.  
  76. ;   The above external procedure is only an example. You
  77. ;   can achieve the same result in Turbo-Pascal:
  78. ;
  79. ;   procedure STU(var S: AnyString);
  80. ;   var
  81. ;     I: integer;
  82. ;   begin
  83. ;     for I:=1 to Length(S) do S[I]:=Upcase(S[I]);
  84. ;   end;
  85. ;
  86.  
  87.  
  88.