home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast.iso / sysutil / exectest.asm < prev    next >
Assembly Source File  |  1994-03-05  |  2KB  |  83 lines

  1. TITLE    Exec call test
  2. PAGE    60,132
  3.  
  4. ;  This program demonstrates shelling to DOS command processor
  5. ;  using the EXEC funtion.
  6. ;  Assemble, link and convert to a .COM file.
  7. ;  Program written by Brian M. Markey
  8.  
  9. code    SEGMENT    'codesg'
  10.     ASSUME    CS:code,DS:code,ES:code
  11.  
  12.     ORG    0100H                ; Program entry point
  13. exectest:                    ;  ..
  14.  
  15.     MOV    SP,OFFSET stack            ; Set up local stack
  16.  
  17.     MOV    AH,09H                ; Print "Before shell"
  18.     MOV    DX,OFFSET mess1            ;  .
  19.     INT    21H                ;  ..
  20.  
  21.     MOV    BX,OFFSET lastloc+15        ; BX := program size in
  22.     MOV    CX,4                ;  paragraphs
  23.     SHR    BX,CL                ;  ..
  24.  
  25.     MOV    AX,4A00H            ; Deallocate unused memory
  26.     INT    21H                ;  ..
  27.  
  28.     MOV    SI,2CH                ; Get environment address
  29.     MOV    AX,CS:[SI]            ;  from PSP+2CH
  30.     MOV    WORD PTR parmblk,AX        ;  ..
  31.  
  32.     MOV    AX,CS                ; Set segment registers
  33.     MOV    WORD PTR parmblk+4,AX        ;  in paramater block
  34.     MOV    WORD PTR parmblk+8,AX        ;  .
  35.     MOV    WORD PTR parmblk+12,AX        ;  ..
  36.  
  37.     MOV    DX,OFFSET filenam        ; Set up exec call
  38.     MOV    BX,OFFSET parmblk        ;  .
  39.     MOV    AX,4B00H            ;  ..
  40.  
  41.     PUSH    DS                ; Save machine state
  42.     PUSH    ES                ;  .
  43.     MOV    CS:savess,SS            ;  .
  44.     MOV    CS:savesp,SP            ;  ..
  45.  
  46.     INT    21H                ; Shell to DOS
  47.  
  48.     MOV    SP,CS:savesp            ; Restore machine state
  49.     MOV    SS,CS:savess            ;  .
  50.     POP    ES                ;  .
  51.     POP    DS                ;  ..
  52.  
  53.     MOV    AH,09H                ; Print "After shell"
  54.     MOV    DX,OFFSET mess2            ;  .
  55.     INT    21H                ;  ..
  56.  
  57.     INT    20H                ; Terminate program
  58.  
  59. savess    DW    ?                ; Holders for SS:SP
  60. savesp    DW    ?                ;  ..
  61.  
  62. mess1    DB    'Before shell',0DH,0AH,'$'
  63. mess2    DB    'After shell',0DH,0AH,'$'
  64.  
  65. filenam    DB    'A:\COMMAND.COM',0        ; Assume COMMAND.COM on A:
  66.  
  67. parmblk    DW    00                ; Parameter block
  68.     DW    OFFSET comline,00        ;  .
  69.     DW    5CH,00                ;  .
  70.     DW    6CH,00                ;  ..
  71.  
  72. comline    DB    09H,'/C dir A:',0DH        ; Command line
  73.  
  74. PAGE
  75.  
  76.     DB    128  DUP (?)            ; Stack
  77. stack    LABEL    BYTE                ;  ..
  78.  
  79. lastloc    LABEL    BYTE                ; End of program
  80.  
  81. code    ENDS
  82.     END    exectest
  83.