AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > 汇编语言

汇编源码--fxn

51自学网 http://www.51zixue.net
         name      FXN4BH         page      55,132         title     'FXN4BH --- demo PC-DOS EXEC function';; FXN4BH --- demonstrate use of the; PC-DOS 2.0 EXEC function call 4BH;; Copyright (c) 1983 by Ray Duncan;cr       equ       0dh       ;ASCII carriage returnlf       equ       0ah       ;ASCII line feed                             ;cseg     segment   para public 'CODE'                             ;         assume    cs:cseg,ds:data,ss:stack                             ;demo     proc      far                             ;at entry DS & ES = PSP         push      ds        ;Save address for final         xor       ax,ax     ;FAR RET to PC-DOS on stack         push      ax                             ;save copy of SS:SP for use                             ;after return from overlay         mov       cs:STK_SEG,ss         mov       cs:STK_PTR,sp                             ;                             ;Reserve 1000H bytes for                             ;this loader and release                             ;the rest of memory for                             ;use by the overlayed program.         mov       bx,100h   ;ES=segment of PSP of loader         mov       ah,4ah    ;BX=paragraphs to reserve         int       21h                             ;make the messages in data                             ;segment addressable         mov       ax,seg DATA         mov       ds,ax         mov       es,ax                             ;jump if memory                             ;de-allocation failed         jc        ALLOC_ERR                             ;print memory successfully                             ;released         mov       dx,offset MSG2         mov       ah,9         int       21h                             ;                             ;now load and execute                             ;the overlaid program.         mov       dx,offset PGM_NAME         mov       bx,offset PAR_BLK         mov       al,0         mov       ah,4bh         int       21h                             ;restore stack pointers                             ;to state before EXEC call         mov       ss,cs:STK_SEG         mov       sp,cs:STK_PTR                             ;Make data segment                             ;addressable again         mov       ax,seg DATA         mov       ds,ax                             ;print message that loader                             ;successfully regained control         mov       dx,offset MSG3         mov       ah,9         int       21h                             ;now exit to PC-DOS         retalloc_err:                   ;come here if memory                             ;cannot be released         mov       dx,offset MSG1         mov       ah,9         int       21h       ;print error message and         ret                 ;exit to PC-DOS                             ;demo     endp                             ;                             ;these two variables must                             ;reside in Code Segment so                             ;that they are addressable                             ;after return from overlay.stk_seg  dw        0         ;original SS contentsstk_ptr  dw        0         ;original SP contents                             ;cseg     ends                             ;declare a stack area                             ;for use by this loaderstack    segment   para stack 'STACK'                             ;allow 64 bytes in this case         db        64 dup (?)stack    ends                             ;declare data segment to                             ;contain variables and tablesdata     segment   para public 'DATA';msg1     db        cr,lf         db        'Unable to release memory.'         db        cr,lf,'$'msg2     db        cr,lf         db        'Memory above loader released.'         db        cr,lf,'Now loading CHKDSK.COM.'         db        cr,lf,'$'msg3     db        cr,lf         db        'Loader regained control from CHKDSK,'         db        cr,lf         db        'now making final exit to PC-DOS.'         db        cr,lf,'$';                             ;drive, path, and name of program                             ;to be loaded and executed.pgm_name db        '/CHKDSK.COM',0;par_blk  dw        ENVIR     ;segment address of                             ;environment descriptor                             ;                             ;full address of command line                             ;to be passed at offset 80H         dw        offset CMD_LINE     ;in overlaid         dw        seg CMD_LINE        ;program's PSP                             ;                             ;full address of default                             ;File Control Block to be                             ;passed at offset 5CH in         dw        offset FCB1         ;overlaid         dw        seg FCB1            ;program's PSP                             ;                             ;full address of default                             ;File Control Block to be                             ;passed at offset 6CH in         dw        offset FCB2         ;overlaid         dw        seg FCB2            ;program's PSP;                             ;actual command line tail                             ;to be passed to overlaycmd_line db        4,' *.*',cr,0;                             ;first default FCB tofcb1     db        0         ;be passed to overlay         db        11 dup ('?')         db        25 dup (0)                             ;second default FCB tofcb2     db        0         ;be passed to overlay         db        11 dup (' ')         db        25 dup (0);data     ends                             ;declare separate data                             ;segment to contain                             ;environment descriptorenvir    segment   para 'ENVIR'                             ;                             ;Search path used by PC-DOS                             ;to look for commands or                             ;batch files not found in         db        'PATH=',0 ;the current directory                             ;                             ;Search path used by PC-DOS                             ;to locate COMMAND.COM         db        'COMSPEC=A:/COMMAND.COM',0         db        0         ;extra 0 byte designates                             ;end of environmentenvir    ends         end       demo

 

 

 
上一篇:汇编源码--getseg_c  下一篇:汇编源码--frespace