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

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

?? xlib.doc

?? DOS保護(hù)模式下匯編程序設(shè)計(jì).zip
?? DOC
?? 第 1 頁 / 共 5 頁
字號(hào):
  CSEGSEL          CSEG              XLIB 16-bit code segment
  CSEGDSEL         CSEG              Data selector to CSEG
  TSEGSEL          TSEG              32-bit code segment
  TSEGDSEL         TSEG              Data selector to TSEG
  DSEGSEL          DSEG              XLIB data segment
  FLATSEL          .                 Flat-model code selector
  FLATDSEL         .                 Flat-model data selector
  DGROUPSEL        DGROUP            DGROUP data group
  SCRNSEL          .                 Screen data (color or monochrome)
  -----------------------------------------------------------------------------


       The flat-model and TSEG descriptors have limit FFFFFFFFH.  All other
  descriptors have limit FFFFH.  The screen descriptor has base set to B8000H
  for color monitors and B0000H for monochrome monitors.  The data descriptors
  have their big bits set; consequently, implicit stack instructions will use
  ESP rather then SP.  All code segments are readable and nonconforming.



                                        3






  Descriptor privilege levels and requested privilege levels are set to zero
  unless DPMI is installed.  Privilege levels under DPMI will be dictated by the
  DPMI host, but will generally be set to three.
       The values contained in the above selectors will be different under DPMI
  than other environments.  Moreover, DPMI selectors values can differ under
  different DPMI environments depending upon the DPMI host and the presence of
  other DPMI clients.  The user should therefore always read selector values
  from these locations.
       Since selectors are contained in DSEG, the user must never lose track of
  the DSEG selector.  This could prove a problem in interrupt handlers where no
  assumptions can be made as to segment register contents.  Consequently, XLIB
  places a copy of the DSEG selector in TSEG where it can always be found.  It
  is stored under WORD symbol CSDSEGSEL and may be read with CS segment
  override.  For example from TSEG code you can always load DS with DSEGSEL
  using MOV DS,CS:CSDSEGSEL.
       TSEG may be larger than 64K provided that certain rules are observed.
  First, only 32-bit protected-mode code should be placed in TSEG.  The
  processor will not generally be able to execute real-mode code in this segment
  because the offsets will be 32-bit values.  Second, real-mode code should
  never write to or read from TSEG.  Such instructions will also require 32-bit
  offsets.  If you need to make modifications to TSEG, then do them from a TSEG
  protected-mode procedure.  Finally, never encode segment constants in TSEG.
  For example, the symbols CSEG, TSEG, DSEG, and DGROUP should never be found in
  TSEG.  DOS will not be able to perform relocation fixups on these constants if
  they are in a segment larger than 64K.  To read these values from TSEG,
  initialize memory locations in a 16-bit segment to the values and then read
  the memory locations.  Memory locations in DSEG have already been initialized
  for XLIB segments.  See Appendix A.





























                                        4






                                3. Mode Switching


       As illustrated in Example 1, CALLPM may be used to transfer control to
  protected mode.  When execution is returned to real mode after CALLPM, only
  segment registers and ESP are restored to their original values.  Real mode
  receives other registers (except EFLAGS) at values as of the protected-mode
  RET instruction.  Control may be returned from protected mode to real mode
  either by RET or by a near jump to RETPM (return from protected mode).  RETPM
  is an XLIB procedure which successfully returns control to real mode
  regardless of stack state.
       Execution may also be transferred to protected mode with the ENTERPM
  (enter protected mode) procedure.  This procedure is specially designed to
  accommodate mixed language programming with high-level languages operating in
  real mode.  High-level language modules may be linked with libraries
  containing protected-mode procedures.  These procedures may then be called
  from high-level code.  However, such procedures must generally be careful to
  preserve register state.  ENTERPM restores register state as required by
  Microsoft high-level languages.  In particular, ENTERPM restores all 16-bit
  and 32-bit registers (including system and control flags in EFLAGS) except EAX
  and EDX.  EAX and EDX are not restored since these are typically used by high-
  level languages for return values.  ENTERPM otherwise functions exactly as
  CALLPM.
       Both CALLPM and ENTERPM save register state as of call; however, upon
  return to real mode, CALLPM restores only segment registers and ESP while
  ENTERPM restores all registers except EAX and EDX.  CALLPM and ENTERPM will
  also save and restore the state of the floating point unit (FPU) if requested.
  FPU save/restore can be enabled by setting bit 2 of OFLAGS (operation flags).
  The bit is clear by default.  OFLAGS is a public WORD in DSEG.
       FPU state is saved with the FSAVE instruction executed from real mode.
  This instruction resets the FPU; consequently, the FPU control word must be
  redefined.  XLIB will therefore load FPUCW (FPU control word) to the FPU
  control word after performing FSAVE.  FPUCW is a public WORD location in DSEG.
  FPU state is restored with the FRSTOR instruction executed in real mode.
       Control may be returned to real mode after ENTERPM either with the RET
  instruction or by a near jump to EXITPM.  EXITPM will return control to real
  mode regardless of stack state.
       The return address placed on the stack by CALLPM is actually a near
  return to RETPM.  Likewise, ENTERPM places a near return to EXITPM.  CALLPM
  and ENTERPM are otherwise identical procedures.  EXITPM restores all registers
  except EAX and EDX.  RETPM restores only segment registers and ESP.
       CALLPM and ENTERPM save registers to public locations in DSEG.  The
  following table specifies the symbols under which the registers are stored.
  The calling stack is always saved after the real-mode return address and the
  protected-mode target address have been popped from it.












                                        5






  Table 2:  CALLPM/ENTERPM Register Storage Locations by Public Symbol
  -----------------------------------------------------------------------------
  Register           Symbol              Symbol Type
  EBX                ORGEBX              DWORD
  ECX                ORGECX              DWORD
  ESI                ORGESI              DWORD
  EDI                ORGEDI              DWORD
  EBP                ORGEBP              DWORD
  ESP                ORGESP              DWORD
  EFLAGS             ORGEFLAGS           DWORD
  SS                 ORGSS               WORD
  DS                 ORGDS               WORD
  ES                 ORGES               WORD
  FS                 ORGFS               WORD
  GS                 ORGGS               WORD
  FPU State          ORGFPU              BYTE[94]
  -----------------------------------------------------------------------------


       The protected-mode targets of CALLPM and ENTERPM receive the XLIB
  protected mode stack (SS = TSEGSEL) with 1000H bytes of free space.  The
  target also receives DS = FLATDSEL (flat-model data selector), ES = TSEGDSEL
  (TSEG data selector), FS = DSEGSEL (DSEG selector), and GS = DGROUPSEL (DGROUP
  selector).  The target procedure may switch stacks if desired.
       Once within protected mode, far procedures in real mode can be called
  using CALLRM (call real mode), which is a near procedure in TSEG.  CALLRM
  should be called with the real-mode target address on the stack (push segment
  first)  CALLRM saves and restores only segments registers and ESP.  The target
  address receives the XLIB real-mode stack (SS = DSEG) with 200H free bytes, DS
  = DGROUP, and ES = DSEG.  Code called by this routine cannot perform XLIB
  shifts back to protected mode.  This excludes usage of the XLIB memory
  management procedures and XLIB interrupt-vector management procedures since
  these require protected-mode execution.
       CALLRM saves segment registers and ESP at public locations in DSEG.  The
  following table specifies the symbols under which the registers are stored.
  The calling stack is saved after popping the protected-mode near return and
  the real-mode target address.


  Table 3:  CALLRM Register Storage Locations by Public Symbol
  -----------------------------------------------------------------------------
  Register           Symbol              Symbol Type
  ESP                CALLESP             DWORD
  SS                 CALLSS              WORD
  DS                 CALLDS              WORD
  ES                 CALLES              WORD
  FS                 CALLFS              WORD
  GS                 CALLGS              WORD
  -----------------------------------------------------------------------------








                                        6






                             4. Interrupt Management


       XLIB handles nearly all interrupts occurring in protected mode by
  shifting to real mode and calling the inherited real-mode interrupt handlers.
  All interrupts are handled this way except the keyboard interrupt (IRQ 1) and
  the FPU interrupt (IRQ 13).  XLIB has its own handlers for these routines.
  These handlers are activated as of protected-mode entry through CALLPM or
  ENTERPM.  They remain active during calls back to real mode through CALLRM.
  They are disabled upon return to CALLPM/ENTERPM.  The user may replace or
  disable these handlers if desired.
       It is generally desirable for the user to be able to terminate a program
  or subroutine with a certain keypress combination.  Unfortunately, it is
  difficult to safely abort protected-mode execution from an interrupt handler.
  This is particularly the case under DPMI.  The DPMI host traps all interrupts
  before transferring control to the interrupt handler.  If control is not
  returned back to the host with an IRET instruction, the host will be left in
  an irregular and potentially unstable state.  Similar problems could occur
  under a VCPI multitasking control program.  Consequently, a keyboard interrupt
  handler cannot be safely used to immediately abort execution upon a keypress.
       The XLIB keyboard interrupt handler provides the best alternative.  The
  handler examines keyboard input to determine if a user definable hot key has
  been pressed.  If a pressed key is not the hot key, the interrupt handler
  cascades the interrupt to the inherited real-mode handler.  If the hot key is
  pressed, then a flag is placed in a DWORD condition code whose linear address
  is stored in CCODEPTR (condition code pointer).  CCODEPRR is a public DWORD in
  DSEG.  The condition code may then be polled by code in the main thread of
  execution where termination can be safely accomplished.  The hot key is not
  cascaded.
       The hot key specification is stored in DSEG at a public WORD location
  called HOTKEY.  The lower byte of HOTKEY contains the scan code of the hot key
  while the upper byte specifies the state of the shift keys.  Bit 8 specifies
  the state of SHIFT; bit 9 specifies CTRL, and bit 10 specifies ALT.  All other
  bits are ignored.  Set bits require that the designated shift key be pressed.
  The default setting for HOTKEY is 022EH (CTRL C).  The condition code flag for
  the hot key is included among XLIB error codes in Appendix C.
       By default CCODEPTR contains the linear address to public DWORD location
  CCODE which is in DSEG.  Therefore, the hot key flag would be written to CCODE
  by default.  CCODEPTR may be changed by the user; however, it must point to an
  address in conventional memory.
       The XLIB interrupt handler for the FPU performs three functions upon the
  occurrence of any FPU exception that is unmasked in the FPU control word.
  First, an error code is loaded to EAX and is also recorded at the linear
  address in CCODEPTR.  Next, the FPU is initialized with FNINIT (the FPU
  control word is preserved).  Third, control is transferred to EXITPM to return
  to real mode.  The high word stored in EAX and the condition code will be the
  FPU status word.  This word may be examined to determine the nature of the
  exception.
       The response of the FPU to exception conditions is largely determined by
  the settings in the FPU control word.  If FPU save/restore is enabled, then
  the FPU control word will be set to FPUCW upon execution of CALLPM/ENTERPM.
  The default value for FPUCW is 0332H.  This sets rounding control to nearest,
  precision control to 64 bits, and unmasks exceptions for overflow, zero
  divide, and invalid operations.  Exceptions for underflow, precision, and



                                        7






  denormalized operations are masked, and are therefore handled internally by
  the FPU.  FPUCW may be modified by the user.
       As explained above, the machine may be left in an unstable state after
  code has been terminated from within an interrupt handler.  This is also the
  case for the FPU interrupt handler.  If an FPU exception occurs under DPMI or
  under a VCPI-based multitasker, then the machine may need rebooting.  Most
  DPMI hosts appear to be restored to normal state by execution of INT 21
  function 4CH (DOS termination).  However, this approach is not recommended in
  the DPMI specifications, and should be particularly suspect under a
  multitasker.  It is generally safe to continue execution after an FPU
  exception when running in a single-task environment under VCPI or when running
  in the absence of both DPMI and VCPI.  The user may therefore wish to debug
  FPU code in these sorts of environments.
       Bit 0 of OFLAGS is used by XLIB to simultaneously enable or disable all
  of its own interrupt handlers.  Setting the bit enables the handlers.  XLIB
  sets this bit upon calls to CALLPM/ENTERPM and clears the bit upon return.
  All interrupts are cascaded to the inherited real-mode handlers when the bit
  is clear.
       The keyboard interrupt handler may be permanently disabled by setting
  HOTKEY to zero.  This follows since no key has a zero scan code.  With HOTKEY
  = 0, all keyboard interrupts are cascaded to the inherited real-mode handler.
       The FPU exception handler may be permanently disabled by setting bit 1 in
  OFLAGS.  If this bit is set, then the FPU interrupt handler simply cascades
  the interrupt to the inherited real-mode handler.  XLIB will set the bit
  during initialization if an FPU is not present; it is otherwise cleared.
       Real-mode software interrupts which receive or return values in segment
  registers cannot be used within protected mode because the deflection routine
  will restore selectors to segment registers upon completion of the interrupt.
  To use such software interrupts, one must switch to real mode through CALLRM;
  issue the interrupt, and then transfer the segment registers to other
  registers before returning to protected mode.
       The user may install real-mode interrupt handlers in usual fashion.  Such
  handlers will also receive interrupts occurring in protected mode provided
  that the protected-mode handlers cascade the interrupt.  Protected-mode
  interrupts will be deflected to real mode either by XLIB or by the DPMI host.
  If XLIB deflects the interrupt, then the handler will receive SS = DSEG with
  ESP set to 200H free bytes.  Stack sizes under DPMI will depend upon the host.
       The DOS routines to get and set interrupt vectors (INT 21H functions 35H
  and 25H) receive and return values through segment registers; consequently,
  they cannot be used in protected mode.  Instead, use the XLIB procedures
  PMGETRMIV and PMSETRMIV (protected mode - get/set real-mode interrupt vector).
  Call PMGETRMIV with the interrupt number in AL.  The handler address is
  returned in CX:DX.  Call PMSETRMIV with the interrupt number in AL and the new
  handler address in CX:DX.
       The user may install a protected-mode interrupt handler from real mode by
  calling SETPMIV (set protected-mode interrupt vector).  Call with the
  interrupt number in AL and the address of the new handler in CX:EDX (CX is a
  selector).  This routine returns an error code in EAX (EAX returned as zero if
  successful).  The current protected-mode interrupt vector may be obtained by
  calling GETPMIV.  Call with AL equal to the interrupt number.  The current
  handler address is returned in CX:EDX.  This routine is always successful.
  These routines should not be used to manage vectors for CPU exceptions when
  DPMI is active.  Direct calls to DPMI functions should be executed for these

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆免费看一区二区三区| 蜜臂av日日欢夜夜爽一区| 欧美精品精品一区| 国产精品888| 亚洲制服丝袜一区| 欧美国产精品v| 欧美日韩在线一区二区| 成人中文字幕在线| 99久久777色| 美女一区二区三区在线观看| 亚洲欧美激情在线| 久久久久久亚洲综合影院红桃| 日本韩国欧美国产| 国产69精品久久久久777| 日韩国产在线观看| 亚洲六月丁香色婷婷综合久久| 久久精品夜夜夜夜久久| 91精品国产高清一区二区三区蜜臀| 99精品视频一区| 国产经典欧美精品| 精品在线你懂的| 亚洲二区在线观看| 一区二区激情视频| 亚洲美女视频在线| 国产精品久久久久影院老司 | 亚洲自拍偷拍网站| 国产精品乱子久久久久| 久久精品亚洲麻豆av一区二区| 精品噜噜噜噜久久久久久久久试看| 欧美色偷偷大香| 91久久线看在观草草青青| 99这里都是精品| 国产69精品久久久久毛片| 国产黄色91视频| 国产电影一区二区三区| 久久国产精品区| 人妖欧美一区二区| 日本va欧美va欧美va精品| 日韩精品一二三四| 日本少妇一区二区| 免费观看91视频大全| 人人超碰91尤物精品国产| 日韩高清不卡一区二区| 色婷婷综合在线| 99久久伊人精品| 91免费在线视频观看| 91丨porny丨中文| 色哟哟亚洲精品| 精品污污网站免费看| 3d成人h动漫网站入口| 日韩久久精品一区| 久久蜜桃av一区精品变态类天堂| 精品美女在线播放| 国产精品久久久久永久免费观看| 国产精品国产三级国产三级人妇 | 国产丝袜欧美中文另类| 国产精品女主播av| 一区二区三区精品在线| 亚洲国产精品久久不卡毛片| 日韩高清不卡一区二区三区| 国产在线视频不卡二| 国产精品原创巨作av| 成人免费的视频| 在线欧美小视频| 91精品国产福利在线观看| 日韩欧美国产一区二区三区| 日韩三级视频中文字幕| 国产日韩精品一区二区三区 | 欧美日韩国产精品自在自线| 欧美精品少妇一区二区三区| 欧美mv日韩mv国产网站| 国产精品久久福利| 亚洲一线二线三线视频| 蜜桃视频在线观看一区二区| 成人的网站免费观看| 在线精品国精品国产尤物884a| 91麻豆精品国产91久久久久久久久 | 日韩毛片一二三区| 亚洲一区免费观看| 国产麻豆精品在线| 91一区二区在线观看| 欧美日韩第一区日日骚| 久久久777精品电影网影网| 亚洲女人小视频在线观看| 裸体在线国模精品偷拍| www.在线成人| 日韩欧美资源站| 亚洲日本va在线观看| 91天堂素人约啪| 日韩欧美一区二区在线视频| 国产精品久久网站| 老司机午夜精品| 91丨九色丨国产丨porny| 91精品国产综合久久精品app| 久久午夜免费电影| 午夜久久久影院| 91网站在线播放| 欧美精品一区二区三区一线天视频| ...av二区三区久久精品| 久久91精品国产91久久小草| 91啪在线观看| 久久久久久**毛片大全| 日韩综合一区二区| 91丨porny丨最新| 国产亚洲va综合人人澡精品 | 久久不见久久见免费视频1| 91网站视频在线观看| 久久久久久久精| 蜜桃一区二区三区四区| 欧美日韩成人一区| 有坂深雪av一区二区精品| 国产精品2024| 精品国产免费人成在线观看| 亚洲1区2区3区4区| 日本精品视频一区二区| 国产精品伦理一区二区| 国产98色在线|日韩| 精品动漫一区二区三区在线观看| 日本伊人午夜精品| 在线日韩国产精品| 亚洲人成影院在线观看| caoporen国产精品视频| 欧美国产禁国产网站cc| 国产91丝袜在线18| 久久久精品蜜桃| 国产一区二区三区在线观看精品| 欧美电影免费观看高清完整版在线| 亚洲国产日产av| 在线精品视频免费观看| 一级精品视频在线观看宜春院 | 中文字幕一区二区三区乱码在线| 国产乱码精品一区二区三区av | 一区二区在线观看免费视频播放| 国产成人午夜精品影院观看视频 | 国产一区二区在线影院| 欧美成人激情免费网| 日韩av电影天堂| 欧美高清激情brazzers| 亚洲综合免费观看高清完整版 | 夜夜揉揉日日人人青青一国产精品| 成人听书哪个软件好| 中文字幕国产一区| 成人sese在线| 亚洲欧洲性图库| 91在线视频18| 亚洲精品免费在线| 久久综合色之久久综合| 国产自产v一区二区三区c| 久久综合狠狠综合| 黄页视频在线91| 国产欧美一区视频| 91片在线免费观看| 午夜精品久久久久久久蜜桃app| 制服.丝袜.亚洲.中文.综合| 日本不卡不码高清免费观看| 日韩欧美www| 国产乱人伦精品一区二区在线观看| 国产亚洲成年网址在线观看| caoporn国产精品| 婷婷开心激情综合| 亚洲精品一区二区三区99| 国产盗摄女厕一区二区三区| 国产精品国产三级国产有无不卡| 欧美专区日韩专区| 日产国产高清一区二区三区 | 樱桃国产成人精品视频| 在线播放中文字幕一区| 激情五月激情综合网| 国产精品理伦片| 91精品办公室少妇高潮对白| 日韩av在线播放中文字幕| 久久新电视剧免费观看| 91久久精品国产91性色tv| 日本伊人精品一区二区三区观看方式| 久久亚洲影视婷婷| 一本一本久久a久久精品综合麻豆| 三级久久三级久久久| 国产精品婷婷午夜在线观看| 欧美日韩免费在线视频| 国产.欧美.日韩| 亚洲高清三级视频| 久久在线免费观看| 欧美视频一区二区三区| 国产一区二区三区四| 亚洲国产视频a| 国产午夜精品福利| 91麻豆精品国产自产在线观看一区 | 93久久精品日日躁夜夜躁欧美| 午夜亚洲福利老司机| 国产欧美一区二区精品性| 欧美日韩一区在线| 国产不卡视频在线观看| 午夜电影一区二区| 中文字幕一区av| 欧美videos中文字幕| 欧美日韩视频第一区| 9色porny自拍视频一区二区| 蜜桃一区二区三区四区| 亚洲国产日韩a在线播放性色| 久久久777精品电影网影网|