home *** CD-ROM | disk | FTP | other *** search
- TITLE Exec call test
- PAGE 60,132
-
- ; This program demonstrates shelling to DOS command processor
- ; using the EXEC funtion.
- ; Assemble, link and convert to a .COM file.
- ; Program written by Brian M. Markey
-
- code SEGMENT 'codesg'
- ASSUME CS:code,DS:code,ES:code
-
- ORG 0100H ; Program entry point
- exectest: ; ..
-
- MOV SP,OFFSET stack ; Set up local stack
-
- MOV AH,09H ; Print "Before shell"
- MOV DX,OFFSET mess1 ; .
- INT 21H ; ..
-
- MOV BX,OFFSET lastloc+15 ; BX := program size in
- MOV CX,4 ; paragraphs
- SHR BX,CL ; ..
-
- MOV AX,4A00H ; Deallocate unused memory
- INT 21H ; ..
-
- MOV SI,2CH ; Get environment address
- MOV AX,CS:[SI] ; from PSP+2CH
- MOV WORD PTR parmblk,AX ; ..
-
- MOV AX,CS ; Set segment registers
- MOV WORD PTR parmblk+4,AX ; in paramater block
- MOV WORD PTR parmblk+8,AX ; .
- MOV WORD PTR parmblk+12,AX ; ..
-
- MOV DX,OFFSET filenam ; Set up exec call
- MOV BX,OFFSET parmblk ; .
- MOV AX,4B00H ; ..
-
- PUSH DS ; Save machine state
- PUSH ES ; .
- MOV CS:savess,SS ; .
- MOV CS:savesp,SP ; ..
-
- INT 21H ; Shell to DOS
-
- MOV SP,CS:savesp ; Restore machine state
- MOV SS,CS:savess ; .
- POP ES ; .
- POP DS ; ..
-
- MOV AH,09H ; Print "After shell"
- MOV DX,OFFSET mess2 ; .
- INT 21H ; ..
-
- INT 20H ; Terminate program
-
- savess DW ? ; Holders for SS:SP
- savesp DW ? ; ..
-
- mess1 DB 'Before shell',0DH,0AH,'$'
- mess2 DB 'After shell',0DH,0AH,'$'
-
- filenam DB 'A:\COMMAND.COM',0 ; Assume COMMAND.COM on A:
-
- parmblk DW 00 ; Parameter block
- DW OFFSET comline,00 ; .
- DW 5CH,00 ; .
- DW 6CH,00 ; ..
-
- comline DB 09H,'/C dir A:',0DH ; Command line
-
- PAGE
-
- DB 128 DUP (?) ; Stack
- stack LABEL BYTE ; ..
-
- lastloc LABEL BYTE ; End of program
-
- code ENDS
- END exectest
-