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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? xlib.doc

?? DOS保護模式下匯編程序設(shè)計.zip
?? DOC
?? 第 1 頁 / 共 5 頁
字號:
  purposes.



                                        8






       From protected mode, interrupt vectors can be managed with PMSETPMIV and
  PMGETPMIV.  These procedures have the same specifications as SETPMIV and
  GETPMIV.
       Interrupt handlers installed with SETPMIV/PMSETPMIV are never disabled by
  XLIB and will therefore always be active under protected-mode execution.
  These handlers will not be active under real-mode execution in tha absence of
  DPMI.  That is, real-mode interrupts are never deflected to protected mode in
  such environments.  However if DPMI is active, then all hardware interrupts
  (IRQs 0-15) and the software interrupts:  1CH (BIOS timer tick), 23H (DOS CTRL
  C), and 24H (DOS critical error) are deflected from real mode to the installed
  protected-mode handler.  If the user has not installed protected-mode handlers
  for these interrupts, then they are serviced by default handlers in the DPMI
  host.  The default handlers service the interrupts with the inherited real-
  mode handlers.
       Under DPMI, all hardware interrupts and software interrupts 0-7 will
  receive control with interrupts disabled.  Since DPMI virtualizes the
  interrupt flag, the IRET instruction may not reenable interrupts.
  Consequently, all handlers for these interrupts should execute STI before
  executing IRET.  This is not a concern if the interrupts are cascaded.
       Hardware interrupts IRQ 0 through IRQ 7 are typically assigned to
  interrupt numbers 08H through 0FH, while IRQs 8 through 15 are typically
  assigned interrupt numbers 70H through 77H.  However, IRQs may be remapped
  under either VCPI or DPMI.  The current mappings may be loaded from IRQ0INTNO
  (IRQ 0 interrupt number) and IRQ8INTNO.  These are public BYTE locations in
  DSEG.  They should be read only after the call to INITXLIB.
































                                        9






                               5. Memory Management


       XLIB supplies memory management procedures for both real mode and
  protected mode.  These procedures are configured at initialization to work
  with the currently resident memory management interfaces.
       Conventional memory may be allocated and released in real mode through
  DOS in usual fashion (INT 21H functions 48H and 49H).  However, DOS functions
  may not work properly in protected mode.  Therefore, use the XLIB routines
  PMGETDOSMEM and PMFREEDOSMEM for such requests.  Call PMGETDOSMEM with the
  requested number of bytes in EAX.  If successful (EAX returned as zero), then
  the linear address of the allocated block is returned in EDX; the allocated
  block size is returned in ECX and will be at least as large as the requested
  size.  A block handle is returned in EBX.  Call PMFREEDOSMEM to release a
  previously allocated block.  The block handle should be in EAX upon call.
       Call PMGETDOSMEM with EAX = 0 to get the largest available DOS memory
  block.  The call is successful if EAX is returned as zero, in which event the
  size of the largest available block will be in ECX (EBX and EDX are
  preserved).
       The real-mode extended memory management procedures are GETMEM, FREEMEM,
  and RESETMEM.  Allocate memory by calling GETMEM with the number of bytes
  requested in EAX.  With successful execution (EAX returned as zero), GETMEM
  will return with the linear address of the allocated extended memory block in
  EDX.  The size of the allocated block will be returned in ECX and will be at
  least as large as the requested size.  The memory block handle will be
  returned in EBX.  Release the block by calling FREEMEM with the block handle
  in EAX.  Release all previously allocated extended memory at once by calling
  RESETMEM.
       The protected-mode memory management procedures are PMGETMEM, PMFREEMEM,
  and PMRESETMEM.  These procedures function exactly as the corresponding real-
  mode procedures:  GETMEM, FREEMEM, and RESETMEM.
       GETMEM and PMGETMEM can also be used to obtain the size of the largest
  available extended memory block (not total free memory).  Call with EAX = 0
  for this purpose.  If this call is successful (EAX returned as zero), then the
  size of the largest free block will be returned in ECX (EBX and EDX are
  preserved).
       XLIB will seek extended memory through XMS only if it is present and if
  both DPMI and VCPI are absent.  If either protected-mode interface is present,
  then all extended memory will be allocated through the configured interface.
       XLIB will not use XMS to allocate memory from the high memory area (HMA)
  or from upper memory blocks (UMBs).  XLIB will however allocate from the HMA
  when it has full responsibility for extended memory management (DPMI, VCPI,
  and XMS are all absent).  XLIB never issues calls under the Expanded Memory
  Specification (EMS).













                                        10






                              6. XLIB Initialization


       Most XLIB procedures should be called only after XLIB has been
  initialized by calling INITXLIB.  This procedure will examine the operating
  environment for the presence of DPMI, VCPI, and XMS.  It will then perform
  extensive code modifications upon itself to accommodate the resident software.
  INITXLIB is to be called only once within a program.  Subsequent calls have no
  effect.
       If XLIB finds that neither DPMI nor VCPI are present, then XLIB will
  completely handle all mode switching and interrupt management.  If XLIB finds
  that XMS is absent also, then XLIB will handle all extended memory management.
  If XLIB finds that both DPMI and VCPI are present, then it will configure
  itself for DPMI by default.  However, the default may be changed by setting
  bit 0 of IFLAGS (initialization flags) before calling INITXLIB.  If this bit
  is set, then VCPI is given priority over DPMI.  IFLAGS is a public WORD
  location in DSEG.
       INITXLIB will probably attempt to allocate some conventional memory
  through DOS.  Since high-level language modules and assembly language modules
  often claim all available DOS memory by default, INITXLIB may fail for lack of
  available DOS memory.  This problem can be averted with assembly language
  modules by linking with the CPARM:1 parameter.  This forces the assembly
  language module to claim no more DOS memory than is necessary.  High-level
  language modules should call XLIBMEMREQ (XLIB memory requirements) to obtain
  conventional memory requirements in DX:AX (measured in bytes), and then
  release at least this much memory.  This process is illustrated for Microsoft
  BASIC in the next example.  C does not allocate all DOS memory and therefore
  does not require such special action.
       If both VCPI and DPMI are present, then conventional memory requirements
  will depend upon which of these interfaces is to be chosen by INITXLIB.  In
  such cases, XLIBMEMREQ will return DPMI memory requirements if bit 0 of IFLAGS
  is clear, and will return VCPI requirements otherwise.  Therefore, this bit
  should be set to the appropriate value by the user before calling XLIBMEMREQ.
  DPMI conventional memory requirements may by obtained in DX:AX by calling
  DPMIMEMREQ.  VCPI conventional memory requirements may be obtained in DX:AX by
  calling VCPIMEMREQ.
       The XLIB routine XLIBCONFIG (XLIB configuration) returns the results of
  INITXLIB.  The initialized protected-mode configuration is returned in AX.
  The value of the lower nibble specifies the configured protected-mode
  interface.  The value will be 1 for DPMI, 2 for VCPI, and 3 for XLIB.  Bit 4
  of AX will be set if XMS is configured.  XLIBCONFIG is a real-mode routine.
















                                        11






                               7. XLIB Termination


       XLIB is terminated simply by executing INT 21 function 4CH (DOS
  termination) from real mode.  This function must not be called from protected
  mode.  Upon termination, XLIB releases all previously allocated memory and
  resets all interrupt vectors to their original values.
       Termination of DPMI requires that INT 21 function 4CH be executed from
  protected mode.  XLIB intercepts INT 21 calls and determines if the function
  number is 4CH.  If so, and if DPMI is active, then XLIB shifts to protected
  mode and issues the call.














































                                        12






                  8. Using XLIB in High-Level Language Libraries


       The following program illustrates the usage of XLIB in libraries called
  from Microsoft BASIC 7.0.  The library contains a protected-mode procedure
  which sums the elements in a single precision array created within BASIC.  The
  general methodolgy here is recommended for developing assembly language
  libraries.
       Since BASIC cannot call a 32-bit segment, a real-mode interface procedure
  must be placed in a 16-bit segment to receive the BASIC call and then transfer
  execution to 32-bit protected mode.  The interface procedure is call SUMARRAY
  while the 32-bit protected-mode procedure which actually sums the array
  elements is called SUMARRAY32.
       BASIC must pass certain arguments to the library procedures.  These
  include the array address and the number of elements to be summed.  These
  arguments could be passed on the stack; however, such approach proves awkward
  since the stack must be changed when entering protected mode.  Consequently,
  BASIC places all arguments in a contiguous block of memory called a "control
  block," and then passes only the address of the control block to the library.
  BASIC constructs the control block with a user-defined type.
       The first four bytes of the control block are reserved for placement of
  error codes by the library procedures.  Also, the address of the control block
  is placed in CCODEPTR so that any FPU exceptions will be signalled in the
  error code location as well.  Were an FPU exception to occur, the FPU
  interrupt handler will immediately transfer control to EXITPM which will shift
  to real-mode, restore registers, and return control to BASIC.
       The library also contains a real-mode function called LINADR which may be
  called by BASIC to convert segment addresses to linear addresses.
       An example of this same program for Microsoft C 7.0 is included in
  Appendix D.


  Example 2:  Calling Protected-Mode Libraries From BASIC
  -----------------------------------------------------------------------------
                            +++++++++++++++++++++++++
                            + ASSEMBLY CODE LIBRARY +
                            +++++++++++++++++++++++++


  ;The following library should be combined with XLIB.LIB using the Microsoft
  ;LINK and LIB utilities.  If BASIC is to be executed from the QBX
  ;environment, then a quick library must be loaded with the environment.  See
  ;BASIC documentation for instructions.


                 .MODEL         LARGE,PASCAL
                 .386P

                 INCLUDE        XLIB.INC

  CSEG           SEGMENT PARA PUBLIC USE16 'CODE'
                 ASSUME CS:CSEG, DS:DSEG





                                        13






  ;Function to calculate linear address from segment address on stack.
  ;Returns linear address in DX:AX.
  LINADR         PROC FAR PUBLIC,
                 SEGADR:DWORD                  ;Segment address of variable
                 XOR            EAX,EAX        ;Clear high words

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产| 国内久久精品视频| 精品一区二区三区日韩| 99久久国产综合色|国产精品| 欧美怡红院视频| 久久久久久久久久看片| 亚洲伊人色欲综合网| 国产伦精一区二区三区| 欧美怡红院视频| 国产精品免费人成网站| 美女视频一区在线观看| 日本乱人伦aⅴ精品| 26uuu国产在线精品一区二区| 亚洲三级理论片| 国产在线看一区| 欧美日韩精品一区二区三区四区| 亚洲国产激情av| 老司机免费视频一区二区| 一本色道亚洲精品aⅴ| 精品久久久久久久久久久久久久久久久 | 国产盗摄女厕一区二区三区 | 国产成人精品综合在线观看| 精品视频全国免费看| 亚洲免费在线看| www.久久精品| 中文字幕电影一区| 国产99一区视频免费| 日韩一级片网站| 午夜伦欧美伦电影理论片| 欧美日韩在线播放一区| 国产精品家庭影院| 波多野结衣在线aⅴ中文字幕不卡| 久久中文字幕电影| 国产精品99久久久久久宅男| 久久综合久久久久88| 久久国产精品72免费观看| 欧美一卡二卡在线| 日本在线不卡一区| 欧美成人猛片aaaaaaa| 久久99精品网久久| 久久精品网站免费观看| 大桥未久av一区二区三区中文| 久久精品在这里| www.亚洲激情.com| 亚洲激情图片qvod| 欧美少妇bbb| 日韩精品亚洲专区| 精品久久久网站| 成人午夜免费电影| 日韩理论在线观看| 欧美性生活一区| 日韩精品成人一区二区三区| 欧美一级日韩不卡播放免费| 另类小说图片综合网| 国产片一区二区| 色哟哟一区二区| 免费高清成人在线| 国产女人aaa级久久久级| 99精品视频在线观看| 天天综合日日夜夜精品| 日韩欧美国产精品一区| 国产成人av资源| 亚洲第一会所有码转帖| 久久久亚洲精华液精华液精华液| 波多野结衣亚洲| 日本成人中文字幕| 久久精品一二三| 欧美视频三区在线播放| 国产麻豆成人传媒免费观看| 亚洲欧美电影院| 精品国免费一区二区三区| 91香蕉视频污| 国产在线观看一区二区| 亚洲激情校园春色| 久久综合色一综合色88| 欧美三级视频在线观看| 国产成人亚洲综合a∨婷婷| 亚洲国产另类精品专区| 国产视频一区不卡| 91精品国产麻豆| 91蜜桃传媒精品久久久一区二区| 欧美aaa在线| 一区二区久久久| 日本一区二区高清| 日韩欧美中文字幕制服| 色老汉av一区二区三区| 免费高清在线一区| 亚洲线精品一区二区三区| 久久精品视频在线免费观看| 欧美精品电影在线播放| 99久久99久久免费精品蜜臀| 国内欧美视频一区二区 | 国产精品理论在线观看| 欧美日韩一区二区三区四区| 成人高清免费在线播放| 久久国产三级精品| 日韩精品亚洲一区二区三区免费| 亚洲欧洲日韩一区二区三区| 日韩美女天天操| 91精品国产麻豆| 在线观看日韩毛片| jlzzjlzz亚洲女人18| 国产一区二区三区四区五区美女| 日韩成人免费在线| 亚洲国产你懂的| 亚洲自拍偷拍图区| 亚洲综合视频在线| 亚洲激情欧美激情| 一区二区三区免费看视频| 亚洲视频在线一区二区| 国产午夜久久久久| 久久久国产精华| 国产天堂亚洲国产碰碰| 国产欧美一区二区三区网站 | 国产精品剧情在线亚洲| 国产欧美精品一区二区三区四区| 精品欧美久久久| 久久婷婷国产综合国色天香| 欧美v国产在线一区二区三区| 欧美成人一区二区三区在线观看 | 日韩电影一二三区| 午夜精品久久久久久久久久| 亚洲自拍偷拍网站| 视频一区在线播放| 看电影不卡的网站| 国产精品18久久久久久久久| 国产精品一品二品| eeuss鲁片一区二区三区在线观看| 99精品视频在线免费观看| 日本道免费精品一区二区三区| 91捆绑美女网站| 91行情网站电视在线观看高清版| 欧美综合一区二区三区| 欧美日韩精品免费| 精品国产自在久精品国产| 国产日韩精品一区| 亚洲黄一区二区三区| 婷婷久久综合九色综合伊人色| 日本视频免费一区| 国产在线一区二区| 91在线小视频| 日韩一区和二区| 国产精品嫩草久久久久| 亚洲成人免费在线观看| 久久精品国产99| 色噜噜偷拍精品综合在线| 色一情一乱一乱一91av| 欧美一区二区三区在线观看视频 | 日本高清视频一区二区| 91.com在线观看| 欧美精品一区二区久久久| 国产精品久久夜| 日本成人中文字幕| 97精品久久久午夜一区二区三区| 欧美日韩激情在线| 国产亚洲美州欧州综合国| 亚洲最大成人网4388xx| 精品一区二区久久久| 日本乱人伦一区| 久久九九99视频| 天堂影院一区二区| 波多野结衣中文字幕一区| 欧美一级日韩一级| 一区二区三区在线观看网站| 国产又黄又大久久| 欧美精品丝袜中出| 自拍偷拍亚洲激情| 韩国三级电影一区二区| 欧美日韩国产免费| 国产精品国产三级国产普通话99| 日韩激情在线观看| 一本大道av一区二区在线播放| 久久在线观看免费| 奇米色一区二区三区四区| 色哟哟国产精品免费观看| 国产午夜精品一区二区三区嫩草| 日韩精品亚洲专区| 欧美影院一区二区三区| 国产精品视频线看| 国产精品一区二区在线观看网站| 欧美美女黄视频| 一区二区三区**美女毛片| 成人国产亚洲欧美成人综合网| 精品嫩草影院久久| 日韩成人一区二区| 欧美无人高清视频在线观看| 国产精品久久久久9999吃药| 极品少妇一区二区| 精品国产三级a在线观看| 性做久久久久久| 欧美日韩亚洲不卡| 亚洲婷婷国产精品电影人久久| 国产东北露脸精品视频| 欧美成人艳星乳罩| 久久国产精品色婷婷| 日韩欧美一级二级三级| 日韩高清国产一区在线| 制服.丝袜.亚洲.另类.中文| 天堂精品中文字幕在线| 欧美高清精品3d|