Page 1 of 1

Freezing while start run exe file

Posted: Fri Sep 03, 2004 11:00 pm
by DIGO_RP
My PC freeze while I´m trying to load exec function in TASM in BP7
please could anyone help me, when freeze I press CTRL+ALT+DEL to reboot pc
I´m using only MSDOS 7 From Windows 98

{$L EXEC.OBJ}
Here is the EXEC.ASM, in pascal -> procedure exec(address : Word); Near; External;

.MODEL TPASCAL

.CODE

PUBLIC EXEC                           ; Exec function

EXEC PROC NEAR
      PUSH BP                          
      PUSH DS                          
      POP  ES                          
      MOV  BP, SP
      XOR  BX, BX
      JMP RelocateEXE

RelocateEXE:
      MOV AX, [BP+04]                       ; Adress of EXE file in pascal
      PUSH ES
      MOV ES, AX
      ADD  AX, [ES:0008h]                    ; ax = image base
      MOV  CX, [ES:0006h]                    ; cx = reloc items
      MOV  BX, [ES:0018h]                    ; bx = reloc table pointer

      JCXZ RELOCATIONDONE

RELOCYCLE:
      MOV  DI, [ES:BX]                       ; di = item ofs
      MOV  DX, [ES:BX+2]                     ; dx = item seg (rel)
      ADD  DX, AX                            ; dx = item seg (abs)
        
      PUSH DS
      MOV  DS, DX                            ; ds = dx
      ADD  [ES:DI], AX                       ; fixup
      POP  DS

      ADD  BX, 4                             ; point to next entry
      LOOP RELOCYCLE

RELOCATIONDONE:

      MOV  BX, AX
      ADD  BX, [ES:000Eh]
      MOV  SS, BX                            ; ss for EXE
      MOV  SP, [ES:0010h]                    ; sp for EXE

      ADD  AX, [ES:0016h]                    ; cs
      PUSH AX
      PUSH WORD [ES:0014h]                   ; ip
      JMP RUN
RUN:
      RETF
      POP ES
      POP BP                                
      RET 4
EXEC ENDP
END