亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rxdosexe.asm

?? dos source
?? ASM
?? 第 1 頁 / 共 5 頁
字號:

_loadProgram_24:
        mov al, byte ptr [ _Mode  ][ bp ]               ; if load overlay 
        getdarg cx, dx, _filesize
        call ifOverlayLoader                            ; set up ret args if overlay
        ifz _loadProgram_46                             ; no need to build return stack -->

        getarg es, _programPSP                          ; child process' PSP
        mov word ptr [ _RxDOS_CurrentPSP ], es          ; change running PSP

        call _getSizeOfEnvString                        ; get size of env string

        xor si, si
     ;  cmp cx, (1024 /PARAGRAPH) * 64                  ; greater than 64k ?
     ;  jnc _loadProgram_28                             ; yes, use max value for seg
     ;  mov si, cx
     ;  shl si, 1
     ;  shl si, 1
     ;  shl si, 1                                       ; actual words
        
_loadProgram_28:
        mov word ptr es:[ si - 2 ], 0000                ; place a null return address at top of stack

        sub si, 4                                       ; top value minus 2 words
        mov word ptr es:[ pspUserStack. _pointer ], si
        mov word ptr es:[ pspUserStack. _segment ], es  ; child process psp

        sub si, _Flags
        mov bx, word ptr ss:[ _RxDOS_CurrentInstance ]
        mov word ptr ss:[ _pointer ][ bx ], si
        mov word ptr ss:[ _segment ][ bx ], es          ; where new process' startup stack will exist (COM)

        or si, si
        pushf
        pop word ptr es:[ _Flags        ][ si ]         ; Nz Nc ...

        mov word ptr es:[ _IP           ][ si ], 100h
        mov word ptr es:[ _CS           ][ si ], es
        mov word ptr es:[ _ExtraSegment ][ si ], es
        mov word ptr es:[ _DataSegment  ][ si ], es
        mov word ptr es:[ _BP           ][ si ], 0000
        mov word ptr es:[ _DI           ][ si ], 0000
        mov word ptr es:[ _SI           ][ si ], 0000
        mov word ptr es:[ _DX           ][ si ], 0000

        getdarg bx, cx, _filesize
        mov word ptr es:[ _CX           ][ si ], cx
        mov word ptr es:[ _BX           ][ si ], bx
        mov word ptr es:[ _AX           ][ si ], 0000

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  set DTA on the way out; switch stacks.
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

_loadProgram_40:
        cmp byte ptr [ _Mode  ][ bp ], execLoadOverlay  ; if load overlay 
        jz _loadProgram_46                              ; no need to allocate memeory -->

        mov es, word ptr [ _RxDOS_CurrentPSP ]          ; new PSP
        mov word ptr [ _RxDOS_pDTA. _segment ], es
        mov word ptr [ _RxDOS_pDTA. _pointer ], pspCommandTail

        cli
        mov bx, word ptr ss:[ _RxDOS_CurrentInstance ]
        mov ax, word ptr es:[ pspParentId    ]          ; parent PSP address
        sti                                             ; re-enable interrupts
        or ax, ax                                       ; if no current PSP
        jz _loadProgram_44                              ; none -->

        push word ptr ss:[ _segment ][ bx ]
        push word ptr ss:[ _pointer ][ bx ]
        pop word ptr es:[ pspUserStack. _pointer ]
        pop word ptr es:[ pspUserStack. _segment ]      ; child process

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  copy program name to Environment Block
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

_loadProgram_44:
        mov es, word ptr [ _RxDOS_CurrentPSP ]          ; new PSP
        lea dx, offset _expandedName [ bp ]             ; expanded name
        call _setProgramNameInMemBlock

        mov ax, word ptr es:[ pspEnvironment ]          ; get environment block
        or ax, ax                                       ; if no environment block
        jz _loadProgram_46                              ; -->

        push ds
        mov es, ax                                      ; get environment block
        call _setProgramNameInMemBlock

        setDS ss
        lea dx, offset _expandedName [ bp ]             ; expanded name to env block
        call appendProgramNametoEnv
        pop ds             

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  see if DEBUGGER support request
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

_loadProgram_46:
        cmp byte ptr [ _Mode ][ bp ], execLoadAndReturnDebug
        clc
        jnz _loadProgram_68                             ; if not debugger mode -->

        SaveSegments
        mov es, word ptr [ _RxDOS_CurrentPSP ]          ; new PSP
        mov dx, word ptr es:[ pspUserStack. _segment ]
        mov ax, word ptr es:[ pspUserStack. _pointer ]

      ; get CS: IP

        mov es, word ptr [ _RxDOS_CurrentPSP ]          ; new PSP
        mov bx, word ptr es:[ pspUserStack. _pointer ]
        mov es, word ptr es:[ pspUserStack. _segment ]  ; es:bx = current stack
        mov dx, word ptr es:[ _CS           ][ bx ]     ; get new prog cs:ip
        mov ax, word ptr es:[ _IP           ][ bx ]

        getdarg ds, si, _ExecBlock
        mov word ptr [ lprogCSIP. _segment ][ si ], dx
        mov word ptr [ lprogCSIP. _pointer ][ si ], ax  ; save in exec block

      ; save SS: SP in exec block

        mov word ptr [ lprogSSSP. _segment ][ si ], es
        mov word ptr [ lprogSSSP. _pointer ][ si ], bx  ; stack to exec block

      ; return to CS:IP of previous instance with new stack

        getdarg dx, ax, _DebuggerReturnTo
        mov word ptr es:[ _CS      ][ bx ], dx
        mov word ptr es:[ _IP      ][ bx ], ax

        mov bx, word ptr ss:[ _RxDOS_CurrentInstance ]
        getdarg dx, ax, _PrevInstance
        mov word ptr ss:[ _segment ][ bx ], dx
        mov word ptr ss:[ _pointer ][ bx ], ax

        RestoreSegments
        clc

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  exit.
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

_loadProgram_68:
        Return

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Load Exe Program                                             ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  Input:                                                       ;
        ;   ss:di  pointer to directory block                           ;
        ;   es:bx  address of EXEC structure                            ;
        ;   dx     load segment address if mode (al) is load Overlay    ;
        ;   cx     code relocation factor                               ;
        ;   ax     subfunction code                                     ;
        ;                                                               ;
        ;  Output:                                                      ;
        ;   dx     PSP segment address                                  ;
        ;   cy     load failed                                          ;
        ;...............................................................;

loadExe_Program:

        Entry
        def  _Mode, ax
        def  _programPSP,    0000
        def  _StartSegment,  dx
        def  _RelocFactor,   cx
        def  _SizePara
        def  _CheckSum
        ddef _returnSize
        ddef _ExecBlock, es, bx
        ddef _dirAccess, ss, di
        defbytes _exeHeader, sizeEXEHEADER
        defbytes _diskAccess, sizeDISKACCESS
        defbytes _relocitem, 4

        xor cx, cx
        storarg _programPSP  , cx
        storarg _CheckSum    , cx

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  initialize disk access block
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        mov ax, word ptr ss:[ fileAcDrive    ][ di ]
        mov dx, word ptr ss:[ fileAcCluster  ][ di ]
        lea bx, offset _diskAccess [ bp ]               ; build access control block
        call initdiskAccess                             ; [ax] is drive, [dx] is cluster

        les si, dword ptr [ fileAcBufferPtr ][ di ]
        add si, word ptr [ fileAcDirOffset ][ di ]
        mov ax, word ptr es:[ deFileSize. _low  ][ si ]
        mov dx, word ptr es:[ deFileSize. _high ][ si ]
        mov word ptr [ _diskAccess. diskAcFileSize. _low  ][ bp ], ax
        mov word ptr [ _diskAccess. diskAcFileSize. _high ][ bp ], dx

        sub ax,  200h
        sbb dx, 0000h                                   ; return size
        mov word ptr [ _returnSize. _low  ][ bp ], ax
        mov word ptr [ _returnSize. _high ][ bp ], dx

        xor dx, dx
        xor ax, ax                                      ; position to beg of file
        setES ss
        lea di, offset _exeHeader [ bp ]
        mov cx, sizeEXEHEADER
        call readLogicalBuffer                          ; Access buffer: ss: bx
        call computeChecksum
        mov word ptr [ _CheckSum ][ bp ], ax

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  compute size in pages of load module
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        mov dx, word ptr [ _exeHeader. exeExtraBytes ][ bp ]
        add dx, (PARAGRAPH - 1)                         ; round up parags needed
        shr dx, 1
        shr dx, 1
        shr dx, 1
        shr dx, 1                                       ; paragraphs at end needed

        mov ax, word ptr [ _exeHeader. exePages ][ bp ]
     ;   dec ax                                          ; adjust for last block
        shl ax, 1                                       ; conv pages to paragraphs
        shl ax, 1                                       ;  4
        shl ax, 1                                       ;  8
        shl ax, 1                                       ; 16
        shl ax, 1                                       ; 32
        sub ax, word ptr [ _exeHeader. exeHeaderSize ][ bp ]
        add ax, dx                                      ; actual paragr needed
        add ax, word ptr [ _exeHeader. exeMinAlloc ][ bp ]
        storarg _SizePara, ax                           ; save as paragraphs needed

        cmp byte ptr [ _Mode  ][ bp ], execLoadOverlay  ; if load overlay 
        jz loadExe_Program06                            ; no need to build return stack -->

        mov dx, word ptr [ _exeHeader. exeMaxAlloc ][ bp ]
        getdarg es, bx, _ExecBlock                      ; load exec module
        call _LoaderAllocMemory                         ; alloc memory for env block/ PSP
        ifc loadExe_Program50                           ; if cannot allocate -->

        storarg _StartSegment, es                       ; where data load begins 
        storarg _RelocFactor, es                        ; relocation factor
        storarg _programPSP, ax                         ; save seg address of PSP

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  load module
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
loadExe_Program06:
        mov ax, word ptr [ _exeHeader. exeHeaderSize ][ bp ]
        shl ax, 1                                       ;  2
        shl ax, 1                                       ;  4
        shl ax, 1                                       ;  8
        shl ax, 1                                       ; 16 byte offset
        getarg es, _StartSegment                        ; load overlay address 
        xor dx, dx

loadExe_Program08:
        push es
        push dx
        push ax                                         ; save position in file

        mov cx, word ptr [ _SizePara ][ bp ]            ; get paras to read
        test cx, 0F000h                                 ; over 65k ?
        jz loadExe_Program12                            ; no, read whole file -->
        mov cx, 0FFFh                                   ; read as much as possible.

loadExe_Program12:
        push cx                                         ; save paras to read

        shl cx, 1
        shl cx, 1
        shl cx, 1

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一色桃子久久精品亚洲| 中文文精品字幕一区二区| 国产成人在线色| 亚洲午夜久久久久久久久电影院| 久久综合中文字幕| 欧美性色黄大片| 成人高清免费观看| 久草热8精品视频在线观看| 亚洲国产精品久久不卡毛片| 国产午夜精品久久久久久免费视| 884aa四虎影成人精品一区| 成人免费av在线| 国产一区二区不卡| 免费在线观看精品| 五月婷婷综合激情| 亚洲另类在线一区| 中文字幕制服丝袜一区二区三区| 精品乱人伦小说| 欧美一二三区在线观看| 欧美私人免费视频| 欧美亚男人的天堂| 91免费版在线| 99精品国产99久久久久久白柏| 九九九精品视频| 蜜臀av性久久久久蜜臀av麻豆| 亚洲一级二级在线| 亚洲综合久久av| 一区二区三区精品视频在线| 国产精品美女久久久久久久久 | 中文字幕的久久| 亚洲精品一线二线三线无人区| 欧美视频日韩视频在线观看| 欧美在线影院一区二区| 色中色一区二区| 91免费视频网| 91福利在线播放| 在线看国产一区| 欧美三级在线播放| 3751色影院一区二区三区| 91精品久久久久久久91蜜桃 | 中文字幕亚洲区| √…a在线天堂一区| 国产精品久久久久精k8| 国产精品国产三级国产普通话99 | 欧美大片一区二区三区| 91精品国产色综合久久不卡蜜臀 | 一区二区三区欧美亚洲| 亚洲午夜一区二区| 午夜精品福利一区二区三区蜜桃| 亚洲自拍都市欧美小说| 日韩和欧美的一区| 美国一区二区三区在线播放| 开心九九激情九九欧美日韩精美视频电影| 美女mm1313爽爽久久久蜜臀| 国产伦精品一区二区三区视频青涩 | 欧美三区在线视频| 日韩一区二区视频| 久久亚洲一区二区三区明星换脸| 国产午夜亚洲精品午夜鲁丝片 | 国产精品欧美一区喷水| 亚洲欧美日韩精品久久久久| 亚洲午夜在线视频| 久久精品国产一区二区| 懂色av一区二区三区免费看| 在线欧美日韩精品| 日韩欧美色综合网站| 国产精品视频一区二区三区不卡| 亚洲制服丝袜在线| 久久99这里只有精品| 国产不卡在线播放| 欧美丝袜丝交足nylons| 精品国产乱码久久久久久牛牛| 国产精品私人自拍| 午夜一区二区三区在线观看| 国产精品一区2区| 在线中文字幕一区二区| 日韩不卡一区二区三区| 狠狠色综合色综合网络| 91亚洲精品乱码久久久久久蜜桃| 欧美日韩一级片在线观看| 精品日韩一区二区三区| 亚洲青青青在线视频| 九九**精品视频免费播放| 色婷婷综合久久久久中文一区二区| 欧美日韩不卡一区| 欧美国产成人精品| 日韩影院精彩在线| av色综合久久天堂av综合| 欧美一二区视频| 亚洲一区在线观看免费| 国产福利精品一区| 在线播放欧美女士性生活| 国产精品福利一区| 久久成人综合网| 欧美系列日韩一区| 国产精品美女一区二区三区 | 中文字幕第一区第二区| 免费在线看一区| 91官网在线免费观看| 欧美激情一区在线观看| 免费观看日韩电影| 欧美日韩亚洲丝袜制服| 亚洲视频精选在线| 成人一级片在线观看| 精品国产乱码久久久久久浪潮 | 国产精品灌醉下药二区| 国产乱码精品1区2区3区| 91精品欧美福利在线观看| 亚洲激情中文1区| 成人国产精品免费观看| 久久久午夜精品| 精久久久久久久久久久| 欧美欧美欧美欧美首页| 亚洲欧美激情视频在线观看一区二区三区 | 国产美女精品人人做人人爽| 欧美丰满少妇xxxxx高潮对白 | 亚洲精品一二三| aaa欧美色吧激情视频| 国产丝袜欧美中文另类| 久久精品国产**网站演员| 91精品国产综合久久久久久| 亚洲动漫第一页| 欧美日本一区二区三区四区| 一区二区三区免费看视频| 99v久久综合狠狠综合久久| 国产精品嫩草影院av蜜臀| 国产精品888| 欧美高清在线精品一区| 国产福利一区在线| 国产精品午夜免费| av福利精品导航| 亚洲日本va在线观看| 色综合天天综合在线视频| 亚洲欧美另类小说视频| 亚洲欧洲成人精品av97| 不卡的看片网站| 亚洲视频一区二区免费在线观看| 色综合久久久久综合99| 亚洲一区二区欧美| 欧美日韩一卡二卡| 青青青伊人色综合久久| 欧美mv日韩mv亚洲| 国产伦精品一区二区三区在线观看| 久久精品免费在线观看| 国产成人鲁色资源国产91色综 | 久久精品噜噜噜成人av农村| 日韩欧美www| 国产成人亚洲综合a∨婷婷图片| 久久精品视频在线免费观看| 成人免费毛片高清视频| 亚洲免费资源在线播放| 欧美丝袜丝交足nylons| 免费观看在线综合色| 欧美激情综合五月色丁香| 91影院在线观看| 日日欢夜夜爽一区| 26uuuu精品一区二区| 99久久er热在这里只有精品66| 亚洲综合在线视频| 欧美mv和日韩mv国产网站| 成人精品鲁一区一区二区| 亚洲精品精品亚洲| 日韩你懂的电影在线观看| 丁香网亚洲国际| 一区二区国产盗摄色噜噜| 精品国产一区二区三区av性色| 成人中文字幕在线| 亚洲国产wwwccc36天堂| 久久综合九色欧美综合狠狠| 99re在线精品| 免费久久99精品国产| 亚洲婷婷综合色高清在线| 7777精品伊人久久久大香线蕉 | 亚洲国产成人va在线观看天堂| 日韩欧美在线观看一区二区三区| 国产成人亚洲精品狼色在线| 亚洲一区在线观看网站| 久久久久久久网| 欧美亚洲动漫精品| 国产激情一区二区三区四区 | www.亚洲精品| 麻豆精品精品国产自在97香蕉| 国产精品免费久久久久| 欧美一级高清片在线观看| 97久久超碰国产精品电影| 日本不卡一区二区三区 | 色综合久久久久久久| 麻豆精品精品国产自在97香蕉 | 日韩在线观看一区二区| 中文字幕中文乱码欧美一区二区 | 国产亚洲福利社区一区| 欧美性大战久久久| 不卡视频在线观看| 久久99国内精品| 午夜视频久久久久久| 中文字幕在线不卡视频| 亚洲精品一区二区三区福利| 欧美三级韩国三级日本一级| 成人97人人超碰人人99| 国产一区在线精品|