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

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

?? mstenvp.c

?? 由3926個源代碼
?? C
字號:
/* 
MSTENVP.C 
test bed for different methods of finding the master environment

cl -qc mstenvp.c
*/

#include <stdlib.h>
#include <dos.h>

typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long ULONG;
typedef void far *FP;

#ifndef MK_FP
#define MK_FP(seg,ofs)  ((FP)(((ULONG)(seg) << 16) | (ofs)))
#endif

#ifdef __TURBOC__
#define ASM asm
#else
#define ASM _asm
#endif

/**********************************************************************/

#pragma pack(1)

typedef struct {
    BYTE type;          /* 'M'=in chain; 'Z'=at end */
    WORD owner;         /* PSP of the owner */
    WORD size;          /* in 16-byte paragraphs */
    BYTE unused[3];
    BYTE dos4[8];
    } MCB;

MCB far *get_mcb(void)
{
    ASM mov ah, 52h
    ASM int 21h
    ASM mov dx, es:[bx-2]
    ASM xor ax, ax
    /* in both Microsoft C and Turbo C, far* returned in DX:AX */
}

#define MCB_FM_SEG(seg)     ((seg) - 1)
#define IS_PSP(mcb)         (FP_SEG(mcb) + 1 == (mcb)->owner)
#define ENV_FM_PSP(psp_seg) (*((WORD far *) MK_FP(psp_seg, 0x2c)))
#define PARENT(psp_seg)     (*((WORD far *) MK_FP(psp_seg, 0x16)))

char far *env(MCB far *mcb)
{
    char far *e;
    unsigned env_mcb;
    unsigned env_owner;
    
    if (! IS_PSP(mcb))
        return (char far *) 0;
    
    e = MK_FP(ENV_FM_PSP(mcb->owner), 0);
    env_mcb = MCB_FM_SEG(FP_SEG(e));
    env_owner = ((MCB far *) MK_FP(env_mcb, 0))->owner;
    return (env_owner == mcb->owner) ? e : (char far *) 0;
}

typedef enum { FALSE, TRUE } BOOL;
typedef BOOL (*WALKFUNC)(MCB far *mcb);

/*
    General-purpose MCB walker.
    The second parameter to walk() is a function that expects an 
    MCB pointer, and that returns TRUE to indicate that walk()
    should keep going, and FALSE to indicate that walk() should
    stop.
*/
BOOL walk(MCB far *mcb, WALKFUNC walker)
{
    for (;;)
        switch (mcb->type)
        {
            case 'M':
                if (! walker(mcb))
                    return FALSE;
                mcb = MK_FP(FP_SEG(mcb) + mcb->size + 1, 0);
                break;
            case 'Z':
                return walker(mcb);
                break;
            default:
                return FALSE;   /* error in MCB chain! */
        }
}

/**********************************************************************/
    
/* using the GETVECT 2Eh technique (ENVPKG.ASM) */
void far *mstenvp1(void)
{
    ASM mov ax, 352eh       /* get INT 2Eh vector */
    ASM int 21h
    ASM mov dx, es:[002Ch]  /* environment segment */
    ASM xor ax, ax          /* return far ptr in DX:AX */
}

/**********************************************************************/

/* walk MCB chain, looking for very first environment */
void far *env2 = (void far *) 0;

BOOL walk2(MCB far *mcb)
{
    if (env2 = env(mcb))
    {
        unsigned psp = FP_SEG(mcb)+1;
        return (PARENT(psp) == psp) ? FALSE /*found it!*/ : TRUE;
    }
    else
        return TRUE;    /* keep going */
}

void far *mstenvp2(void)
{
    walk(get_mcb(), walk2);
    return env2;
}

/**********************************************************************/

/* walk MCB chain, looking for very LAST env addr > PSP addr */
void far *env3 = (void far *) 0;

#define NORMALIZE(fp)   (FP_SEG(fp) + (FP_OFF(fp) >> 4))

BOOL walk3(MCB far *mcb)
{
    void far *fp;
    /* if env seg at greater address than PSP, then
       candidate for master env -- we'll take last */
    if (fp = env(mcb))
        if (NORMALIZE(fp) > (FP_SEG(mcb)+1))
            env3 = fp;
    return TRUE;
}

void far *mstenvp3(void)
{
    walk(get_mcb(), walk3);
    return env3;
}

/**********************************************************************/

/* walk MCB chain, looking for very first environment belonging
   to PSP which is its own parent */
void far *env4 = (void far *) 0;

#define PARENT(psp_seg)     (*((WORD far *) MK_FP(psp_seg, 0x16)))

BOOL walk4(MCB far *mcb)
{
    if (env4 = env(mcb))
    {
        unsigned psp = FP_SEG(mcb) + 1;
        return (PARENT(psp) == psp) ? FALSE /*found it!*/ : TRUE;
    }
    else
        return TRUE;    /* keep going */
}

void far *mstenvp4(void)
{
    walk(get_mcb(), walk4);
    return env4;
}

/**********************************************************************/

main()
{
    printf("GETVECT 2Eh method; mstenvp1   = %Fp\n", mstenvp1()); 
    printf("WALK MCB method; mstenvp2      = %Fp\n", mstenvp2());
    printf("WALK MCB/LAST method; mstenvp3 = %Fp\n", mstenvp3());
    printf("WALK MCB/OWN PARENT; mstenvp4  = %Fp\n", mstenvp4());
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
玉足女爽爽91| 色综合天天性综合| 欧美三级资源在线| 亚洲国产精品久久久久秋霞影院| 91老师国产黑色丝袜在线| 亚洲激情网站免费观看| 欧美三级在线视频| 日韩高清欧美激情| 亚洲成人动漫在线免费观看| 欧美婷婷六月丁香综合色| 日韩精品色哟哟| 久久亚洲二区三区| 成人黄色在线网站| 亚洲国产一区在线观看| 欧美一区二区三区四区在线观看| 加勒比av一区二区| 中文久久乱码一区二区| 色8久久人人97超碰香蕉987| 日精品一区二区| 久久久久久免费| 色乱码一区二区三区88| 肉色丝袜一区二区| 久久精品视频一区二区| 91麻豆自制传媒国产之光| 亚洲成人中文在线| 精品不卡在线视频| 99久久精品免费| 水蜜桃久久夜色精品一区的特点| 精品国产一区二区三区忘忧草| 成人精品一区二区三区中文字幕| 一区二区免费在线播放| 日韩一级黄色片| 国产剧情av麻豆香蕉精品| 久久99精品久久久久久久久久久久| 久久久久久久久久看片| 色婷婷久久久亚洲一区二区三区 | 欧美一区二区不卡视频| 国产精品 日产精品 欧美精品| 18成人在线观看| 欧美精品三级日韩久久| 国产99久久久国产精品潘金| 亚洲综合清纯丝袜自拍| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲欧美怡红院| 91麻豆精品国产91久久久使用方法| 欧美成va人片在线观看| k8久久久一区二区三区| 日本欧美一区二区| 日韩一区欧美小说| 日韩免费高清av| 91美女片黄在线观看| 老司机免费视频一区二区三区| 国产精品国产三级国产有无不卡 | 一区二区三区欧美| 精品av综合导航| 91黄色激情网站| 国产一区二区三区久久久| 亚洲国产精品人人做人人爽| 国产无人区一区二区三区| 在线成人免费视频| 99re这里只有精品6| 精品一区二区精品| 亚洲成av人片观看| 国产精品大尺度| 精品福利av导航| 欧美日韩一区二区在线观看视频| 成人网在线免费视频| 日韩av不卡一区二区| 亚洲精品水蜜桃| 国产欧美日韩麻豆91| 日韩一区二区三区在线| 在线欧美一区二区| 成人国产精品视频| 国产在线视频不卡二| 日韩高清不卡一区二区三区| 亚洲免费成人av| 中文天堂在线一区| 久久亚洲精精品中文字幕早川悠里| 亚洲制服丝袜一区| 久久久久国产一区二区三区四区| 欧美精三区欧美精三区| 色天使久久综合网天天| 99精品视频一区二区| 国产成人自拍在线| 激情综合色播激情啊| 日本中文字幕不卡| 午夜精品福利一区二区三区蜜桃| 亚洲另类春色国产| 国产精品久久久久久久岛一牛影视| www国产精品av| 日韩午夜激情免费电影| 欧美精品在线视频| 欧美午夜一区二区三区免费大片| 91在线国内视频| www.亚洲色图| 从欧美一区二区三区| 国产毛片精品视频| 激情丁香综合五月| 精品在线播放免费| 极品尤物av久久免费看| 麻豆精品视频在线观看| 免费视频最近日韩| 美国十次了思思久久精品导航| 日韩精品国产精品| 日韩av中文字幕一区二区三区| 亚洲成av人**亚洲成av**| 亚洲一区二区三区精品在线| 一区二区三区视频在线看| 亚洲精品欧美综合四区| 亚洲精品视频一区| 亚洲一区二区视频在线观看| 亚洲制服欧美中文字幕中文字幕| 一区二区三区在线视频免费| 亚洲男人的天堂在线观看| 亚洲精品国产无套在线观| 一区二区三区在线播放| 亚洲精品国产品国语在线app| 亚洲精品视频免费看| 亚洲国产成人av好男人在线观看| 亚洲一区二区欧美激情| 亚洲超丰满肉感bbw| 日本欧美韩国一区三区| 久久黄色级2电影| 国产在线精品一区二区夜色 | 成人自拍视频在线观看| 国产日产欧美精品一区二区三区| 久久综合成人精品亚洲另类欧美| 国产亚洲午夜高清国产拍精品| 久久久久国产成人精品亚洲午夜 | 26uuu另类欧美| 国产亚洲欧美日韩日本| 国产精品网曝门| 亚洲免费观看高清| 亚洲成人在线观看视频| 日本vs亚洲vs韩国一区三区| 久久av中文字幕片| 国产ts人妖一区二区| 91日韩一区二区三区| 欧美丝袜丝交足nylons图片| 欧美高清dvd| 精品1区2区在线观看| 中文字幕精品一区二区精品绿巨人| 亚洲欧洲在线观看av| 亚洲一区二区三区精品在线| 美女诱惑一区二区| 国产黄色精品视频| 成人sese在线| 成人av小说网| 日韩激情一二三区| 五月婷婷综合在线| 精品一区二区三区在线播放视频| 国产风韵犹存在线视精品| 99精品国产99久久久久久白柏 | 欧美在线999| 欧美一区二区三区播放老司机| 久久一区二区三区四区| 日韩伦理免费电影| 日本美女一区二区三区| 国产成人免费网站| 欧美视频在线一区二区三区| 精品美女一区二区三区| 亚洲丝袜另类动漫二区| 日韩精品一二区| 成人综合日日夜夜| 欧美丰满嫩嫩电影| 国产女同互慰高潮91漫画| 亚洲一卡二卡三卡四卡五卡| 精品一区二区免费看| 色综合久久精品| 亚洲va天堂va国产va久| 国产精品一二一区| 欧美午夜精品久久久久久孕妇| 精品欧美一区二区在线观看| 亚洲日本va在线观看| 久久成人麻豆午夜电影| 91看片淫黄大片一级在线观看| 日韩欧美一二区| 成人免费小视频| 久久精品国内一区二区三区| 99re成人在线| 精品国产一区二区在线观看| 一区二区国产盗摄色噜噜| 国产在线精品视频| 欧美日韩激情在线| 国产精品久久久久久久久果冻传媒| 青椒成人免费视频| 91美女精品福利| 久久久电影一区二区三区| 亚洲第一会所有码转帖| 播五月开心婷婷综合| 欧美一级精品在线| 日韩av一级片| kk眼镜猥琐国模调教系列一区二区| 欧美日韩一区成人| 久久久久久久综合色一本| 三级久久三级久久| 亚洲色图清纯唯美| 久久99久久99| 欧美三级电影精品| 亚洲欧洲精品一区二区精品久久久|