> 
>                                                     ┌┐┌┐∞
> 【 80386 保護模式簡介五 】                     ┘└┘└┘
> ==========================================================================
> 前言:
>     底下是進入保護模式、進入 V86 的精簡範例 ,執行前請確定 CPU 是處在真實模
> 式 ,程式碼因為用到 386 指令 ,請用 TASM 3.1 來編譯。
> --------------------------------------------------------------------------
> ┌──────┐
> │進入保護模式│
> └──────┘
> 
>     進入保護模式的程式範例 ,其目地是進入保護模式 ,並在保護模式下用絕對記憶
> 體讀寫的方式 ,直接將 'Protection Mode !' 字串寫入 Video Ram (B800:0000) ,
> 本程式以最精簡的方式撰寫 ,沒有任何錯誤處理 ,因此請確定電腦現在處在真實模式
> 下才可執行本程式。(禁掛 EMM 系保護模式軟體)
> 
>     程式流程如下:(底下所指記憶體位址皆為 32bit 絕對位址)
> 
>         1. 設定 GDTtab 表所在的記憶體位址填入 GDTadds
> 
>         2. 設定 Selector 0008 的記憶體起始位址就是現在 CS 的記憶體位址
>            設定 Selector 0010 的記憶體起始位址就是現在 CS 的記憶體位址
>                 Selector 0018 的記憶體起始位址就是 000B8000 = (B800:0000)
> 
>         3. 執行 LGDT FWORD PTR CS:GDTadds 告訴 CPU 一但進入保護模式 ,各
>                 區段的記憶體起始位址、長度
> 
>         4. 設定 CR0 的 Bit0 = '1' ,並透過 JMP 指令進入保護模式
>              ※ 進入保護模式後 ,DS.ES.SS.CS.GS.FS 等等暫存器定址方式不再
>                 是 Segment ,而變成 Selector
> 
>         5. 秀字 將 0010:MSG_1 搬到 0018:0000
>                 意即將 'Protection Mode !' 字串搬到 Video Ram 去
> 
>         6. 設定 CR0 的 Bit0 = '0' ,並透過 JMP 指令回到真實模式
>              ※ 回到真實模式後 ,DS.ES.SS.CS.GS.FS 等等暫存器定址方式不再
>                 是 Selector ,而變成 Segment
> 
>         5. 秀字 將 CS:MSG_2 搬到 B800:00A0
>                 意即將 'Return Real Mode !' 字串搬到 Video Ram 去
> 
>         6. 結束程式
> 
> -----------------------------  P.ASM  ------------------------------------
> code    segment
>         assume  cs:code,ds:code
> .386p
> start   proc    near
>         jmp     next
> gdtadds dw      001fh,0000h,0000h
> gdttab  db      000h,000h,00h,00h,00h,00h,00h,00h ;00 Null
>         db      0ffh,0ffh,00h,00h,00h,9bh,00h,00h ;08 PRG Seg
>         db      0ffh,0ffh,00h,00h,00h,93h,00h,00h ;10 PRG Seg
>         db      0ffh,0ffh,00h,80h,0bh,93h,00h,00h ;18 B8000
> msg_1   db      'Protection Mode !'
> msg_2   db      'Return Real Mode !'
> 
> next :
>         xor     eax,eax                 ;
>         xor     ebx,ebx                 ;
>         mov     ax,cs                   ;設定 GDTadds
>         shl     eax,04h                 ;
>         mov     bx,offset gdttab        ;
>         add     eax,ebx                 ;
>         mov     di,offset gdtadds+02h   ;
>         mov     cs:[di],eax             ;
>         NOP
>         xor     eax,eax                 ;
>         xor     ebx,ebx                 ;
>         mov     ax,cs                   ;
>         shl     eax,04h                 ;
>         mov     di,offset gdttab+08h    ;設定 GDTtab 內的
>         mov     si,offset gdttab+10h    ;Selector 0008 及 0010
>         mov     cs:[di+02h],ax          ;兩個段落的記憶體起始位址
>         mov     cs:[si+02h],ax          ;
>         shr     eax,10h                 ;
>         mov     cs:[di+04h],al          ;
>         mov     cs:[si+04h],al          ;
>         mov     cs:[di+07h],ah          ;
>         mov     cs:[si+07h],ah          ;
>         NOP
>         cli
>         lgdt    fword ptr cs:gdtadds    ;載入 GDT 表格
>         mov     eax,cr0             ;
>         or      al,01h              ;
>         mov     cr0,eax             ;
>         jmp     protection_mode     ;進入保護模式
> protection_mode :                   ;
>         mov     ax,0010h                ;
>         mov     ds,ax                   ;
>         mov     si,offset msg_1         ;
>         mov     ax,0018h                ;將 0010:MSG_1 搬到 0018:0000
>         mov     es,ax                   ;
>         mov     di,0000h                ;
>         mov     ah,70h                  ;
>         mov     cx,0011h                ;
>         cld                             ;
> L1 :                                    ;
>         lodsb                           ;
>         stosw                           ;
>         loop    L1                      ;
>         NOP
>         mov     eax,cr0             ;
>         and     al,0feh             ;
>         mov     cr0,eax             ;回到真實模式
>         jmp     return_real_mode    ;
> return_real_mode :                  ;
>         sti
>         mov     ax,cs                   ;
>         mov     ds,ax                   ;
>         mov     si,offset msg_2         ;
>         mov     ax,0b800h               ;
>         mov     es,ax                   ;將 CS:MSG_2 搬到 B800:00A0
>         mov     di,00a0h                ;
>         mov     ah,70h                  ;
>         mov     cx,0012h                ;
>         cld                             ;
> L2 :                                    ;
>         lodsb                           ;
>         stosw                           ;
>         loop    L2                      ;
>         mov     ax,4cffh
>         int     21h
> start   endp
> code    ends
>         end     start
> --------------------------------------------------------------------------
>     因為保護模式下不能呼叫真實模式下的中斷 ,所以筆者以直接填寫顯示卡記憶體
> 的方式秀字。這是一個簡單、尚未使用中斷向量表的範例。
> 
> 註: 所謂一山不容二虎 ,如果已載入其它保護模式的程式 ,那本程式將會與它打架 ,
>     造成電腦當機。
> 
> ┌────────┐
> │進入虛擬 86 模式│            為求精簡 ,本程式毫無錯誤處理能力
> └────────┘
> ------------------------  V86.ASM  ---------------------------------------
> code    segment
>         assume  cs:code,ds:code
> .386p
> start   proc    near
>         jmp     next
> gdtadds dw      002fh,0000h,0000h
> gdttab  db      000h,000h,000h,000h,000h,000h,000h,000h ;00 Null
>         db      0ffh,0ffh,000h,000h,000h,09bh,000h,000h ;08 PRG Seg
>         db      0ffh,0ffh,000h,000h,000h,093h,08fh,000h ;10 Dos=Page
>         db      0ffh,0ffh,000h,000h,000h,089h,000h,000h ;18 TSSltr
>         db      0ffh,0ffh,000h,000h,000h,089h,000h,000h ;20 TSSjmp
>         db      0ffh,003h,000h,000h,000h,093h,000h,000h ;28 Stack (1K)
> 
> tssltr  dd      00000000h
>         dd      000003ffh       ;ESP
>         dw      0028h,0000h     ;SS.0
>         dd      0,0,0,0,0
>         dw      offset enter_v86,0000h      ;EIP
>         dd      00000200h       ;EFlag
>         dd      0,0,0,0
>         dd      000003ffh       ;ESP
>         dd      0,0,0
>         dw      0010h,0000h     ;ES.0
>         dw      0008h,0000h     ;CS.0
>         dw      0028h,0000h     ;SS.0
>         dw      0010h,0000h     ;DS,0
>         dw      0010h,0000h     ;FS.0
>         dw      0010h,0000h     ;GS.0
>         dw      0000h,0000h     ;LDT.0
>         dw      0000h,0068h     ;0.IOMAP
>         dw      0ffffh
> 
> tssjmp  dd      00000000h
>         dd      000003ffh       ;ESP
>         dw      0028h,0000h     ;SS.0
>         dd      0,0,0,0,0
>         dw      offset enter_v86,0000h      ;EIP
>         dd      00000000h       ;EFlag
>         dd      0,0,0,0
>         dd      000003ffh       ;ESP
>         dd      0,0,0
>         dw      0010h,0000h     ;ES.0
>         dw      0008h,0000h     ;CS.0
>         dw      0028h,0000h     ;SS.0
>         dw      0010h,0000h     ;DS,0
>         dw      0010h,0000h     ;FS.0
>         dw      0010h,0000h     ;GS.0
>         dw      0000h,0000h     ;LDT.0
>         dw      0000h,0068h     ;0.IOMAP
> iomap   db      1000h dup (0)
>         dw      0ffffh
> 
> buffer1 db      0400h dup (0)           ;Stack
> 
> idtadds dw      07ffh,0000h,0000h
> idttab  dw      offset new_00,0008h,0ee00h,0000h,offset new_01,0008h,0ee00h,0000h
>         dw      offset new_02,0008h,0ee00h,0000h,offset new_03,0008h,0ee00h,0000h
>         dw      offset new_04,0008h,0ee00h,0000h,offset new_05,0008h,0ee00h,0000h
>         dw      offset new_06,0008h,0ee00h,0000h,offset new_07,0008h,0ee00h,0000h
>         dw      offset new_08,0008h,0ee00h,0000h,offset new_09,0008h,0ee00h,0000h
>         dw      offset new_0a,0008h,0ee00h,0000h,offset new_0b,0008h,0ee00h,0000h
>         dw      offset new_0c,0008h,0ee00h,0000h,offset new_0d,0008h,0ee00h,0000h
>         dw      offset new_0e,0008h,0ee00h,0000h,offset new_0f,0008h,0ee00h,0000h
>         dw      offset new_10,0008h,0ee00h,0000h,offset new_11,0008h,0ee00h,0000h
>         dw      offset new_12,0008h,0ee00h,0000h,offset new_13,0008h,0ee00h,0000h
>         dw      offset new_14,0008h,0ee00h,0000h,offset new_15,0008h,0ee00h,0000h
>         dw      offset new_16,0008h,0ee00h,0000h,offset new_17,0008h,0ee00h,0000h
>         dw      offset new_18,0008h,0ee00h,0000h,offset new_19,0008h,0ee00h,0000h
>         dw      offset new_1a,0008h,0ee00h,0000h,offset new_1b,0008h,0ee00h,0000h
>         dw      offset new_1c,0008h,0ee00h,0000h,offset new_1d,0008h,0ee00h,0000h
>         dw      offset new_1e,0008h,0ee00h,0000h,offset new_1f,0008h,0ee00h,0000h
>         dw      offset new_20,0008h,0ee00h,0000h,offset new_21,0008h,0ee00h,0000h
>         dw      offset new_22,0008h,0ee00h,0000h,offset new_23,0008h,0ee00h,0000h
>         dw      offset new_24,0008h,0ee00h,0000h,offset new_25,0008h,0ee00h,0000h
>         dw      offset new_26,0008h,0ee00h,0000h,offset new_27,0008h,0ee00h,0000h
>         dw      offset new_28,0008h,0ee00h,0000h,offset new_29,0008h,0ee00h,0000h
>         dw      offset new_2a,0008h,0ee00h,0000h,offset new_2b,0008h,0ee00h,0000h
>         dw      offset new_2c,0008h,0ee00h,0000h,offset new_2d,0008h,0ee00h,0000h
>         dw      offset new_2e,0008h,0ee00h,0000h,offset new_2f,0008h,0ee00h,0000h
>         dw      offset new_30,0008h,0ee00h,0000h,offset new_31,0008h,0ee00h,0000h
>         dw      offset new_32,0008h,0ee00h,0000h,offset new_33,0008h,0ee00h,0000h
>         dw      offset new_34,0008h,0ee00h,0000h,offset new_35,0008h,0ee00h,0000h
>         dw      offset new_36,0008h,0ee00h,0000h,offset new_37,0008h,0ee00h,0000h
>         dw      offset new_38,0008h,0ee00h,0000h,offset new_39,0008h,0ee00h,0000h
>         dw      offset new_3a,0008h,0ee00h,0000h,offset new_3b,0008h,0ee00h,0000h
>         dw      offset new_3c,0008h,0ee00h,0000h,offset new_3d,0008h,0ee00h,0000h
>         dw      offset new_3e,0008h,0ee00h,0000h,offset new_3f,0008h,0ee00h,0000h
>         dw      offset new_40,0008h,0ee00h,0000h,offset new_41,0008h,0ee00h,0000h
>         dw      offset new_42,0008h,0ee00h,0000h,offset new_43,0008h,0ee00h,0000h
>         dw      offset new_44,0008h,0ee00h,0000h,offset new_45,0008h,0ee00h,0000h
>         dw      offset new_46,0008h,0ee00h,0000h,offset new_47,0008h,0ee00h,0000h
>         dw      offset new_48,0008h,0ee00h,0000h,offset new_49,0008h,0ee00h,0000h
>         dw      offset new_4a,0008h,0ee00h,0000h,offset new_4b,0008h,0ee00h,0000h
>         dw      offset new_4c,0008h,0ee00h,0000h,offset new_4d,0008h,0ee00h,0000h
>         dw      offset new_4e,0008h,0ee00h,0000h,offset new_4f,0008h,0ee00h,0000h
>         dw      offset new_50,0008h,0ee00h,0000h,offset new_51,0008h,0ee00h,0000h
>         dw      offset new_52,0008h,0ee00h,0000h,offset new_53,0008h,0ee00h,0000h
>         dw      offset new_54,0008h,0ee00h,0000h,offset new_55,0008h,0ee00h,0000h
>         dw      offset new_56,0008h,0ee00h,0000h,offset new_57,0008h,0ee00h,0000h
>         dw      offset new_58,0008h,0ee00h,0000h,offset new_59,0008h,0ee00h,0000h
>         dw      offset new_5a,0008h,0ee00h,0000h,offset new_5b,0008h,0ee00h,0000h
>         dw      offset new_5c,0008h,0ee00h,0000h,offset new_5d,0008h,0ee00h,0000h
>         dw      offset new_5e,0008h,0ee00h,0000h,offset new_5f,0008h,0ee00h,0000h
>         dw      offset new_60,0008h,0ee00h,0000h,offset new_61,0008h,0ee00h,0000h
>         dw      offset new_62,0008h,0ee00h,0000h,offset new_63,0008h,0ee00h,0000h
>         dw      offset new_64,0008h,0ee00h,0000h,offset new_65,0008h,0ee00h,0000h
>         dw      offset new_66,0008h,0ee00h,0000h,offset new_67,0008h,0ee00h,0000h
>         dw      offset new_68,0008h,0ee00h,0000h,offset new_69,0008h,0ee00h,0000h
>         dw      offset new_6a,0008h,0ee00h,0000h,offset new_6b,0008h,0ee00h,0000h
>         dw      offset new_6c,0008h,0ee00h,0000h,offset new_6d,0008h,0ee00h,0000h
>         dw      offset new_6e,0008h,0ee00h,0000h,offset new_6f,0008h,0ee00h,0000h
>         dw      offset new_70,0008h,0ee00h,0000h,offset new_71,0008h,0ee00h,0000h
>         dw      offset new_72,0008h,0ee00h,0000h,offset new_73,0008h,0ee00h,0000h
>         dw      offset new_74,0008h,0ee00h,0000h,offset new_75,0008h,0ee00h,0000h
>         dw      offset new_76,0008h,0ee00h,0000h,offset new_77,0008h,0ee00h,0000h
>         dw      offset new_78,0008h,0ee00h,0000h,offset new_79,0008h,0ee00h,0000h
>         dw      offset new_7a,0008h,0ee00h,0000h,offset new_7b,0008h,0ee00h,0000h
>         dw      offset new_7c,0008h,0ee00h,0000h,offset new_7d,0008h,0ee00h,0000h
>         dw      offset new_7e,0008h,0ee00h,0000h,offset new_7f,0008h,0ee00h,0000h
>         dw      offset new_80,0008h,0ee00h,0000h,offset new_81,0008h,0ee00h,0000h
>         dw      offset new_82,0008h,0ee00h,0000h,offset new_83,0008h,0ee00h,0000h
>         dw      offset new_84,0008h,0ee00h,0000h,offset new_85,0008h,0ee00h,0000h
>         dw      offset new_86,0008h,0ee00h,0000h,offset new_87,0008h,0ee00h,0000h
>         dw      offset new_88,0008h,0ee00h,0000h,offset new_89,0008h,0ee00h,0000h
>         dw      offset new_8a,0008h,0ee00h,0000h,offset new_8b,0008h,0ee00h,0000h
>         dw      offset new_8c,0008h,0ee00h,0000h,offset new_8d,0008h,0ee00h,0000h
>         dw      offset new_8e,0008h,0ee00h,0000h,offset new_8f,0008h,0ee00h,0000h
>         dw      offset new_90,0008h,0ee00h,0000h,offset new_91,0008h,0ee00h,0000h
>         dw      offset new_92,0008h,0ee00h,0000h,offset new_93,0008h,0ee00h,0000h
>         dw      offset new_94,0008h,0ee00h,0000h,offset new_95,0008h,0ee00h,0000h
>         dw      offset new_96,0008h,0ee00h,0000h,offset new_97,0008h,0ee00h,0000h
>         dw      offset new_98,0008h,0ee00h,0000h,offset new_99,0008h,0ee00h,0000h
>         dw      offset new_9a,0008h,0ee00h,0000h,offset new_9b,0008h,0ee00h,0000h
>         dw      offset new_9c,0008h,0ee00h,0000h,offset new_9d,0008h,0ee00h,0000h
>         dw      offset new_9e,0008h,0ee00h,0000h,offset new_9f,0008h,0ee00h,0000h
>         dw      offset new_a0,0008h,0ee00h,0000h,offset new_a1,0008h,0ee00h,0000h
>         dw      offset new_a2,0008h,0ee00h,0000h,offset new_a3,0008h,0ee00h,0000h
>         dw      offset new_a4,0008h,0ee00h,0000h,offset new_a5,0008h,0ee00h,0000h
>         dw      offset new_a6,0008h,0ee00h,0000h,offset new_a7,0008h,0ee00h,0000h
>         dw      offset new_a8,0008h,0ee00h,0000h,offset new_a9,0008h,0ee00h,0000h
>         dw      offset new_aa,0008h,0ee00h,0000h,offset new_ab,0008h,0ee00h,0000h
>         dw      offset new_ac,0008h,0ee00h,0000h,offset new_ad,0008h,0ee00h,0000h
>         dw      offset new_ae,0008h,0ee00h,0000h,offset new_af,0008h,0ee00h,0000h
>         dw      offset new_b0,0008h,0ee00h,0000h,offset new_b1,0008h,0ee00h,0000h
>         dw      offset new_b2,0008h,0ee00h,0000h,offset new_b3,0008h,0ee00h,0000h
>         dw      offset new_b4,0008h,0ee00h,0000h,offset new_b5,0008h,0ee00h,0000h
>         dw      offset new_b6,0008h,0ee00h,0000h,offset new_b7,0008h,0ee00h,0000h
>         dw      offset new_b8,0008h,0ee00h,0000h,offset new_b9,0008h,0ee00h,0000h
>         dw      offset new_ba,0008h,0ee00h,0000h,offset new_bb,0008h,0ee00h,0000h
>         dw      offset new_bc,0008h,0ee00h,0000h,offset new_bd,0008h,0ee00h,0000h
>         dw      offset new_be,0008h,0ee00h,0000h,offset new_bf,0008h,0ee00h,0000h
>         dw      offset new_c0,0008h,0ee00h,0000h,offset new_c1,0008h,0ee00h,0000h
>         dw      offset new_c2,0008h,0ee00h,0000h,offset new_c3,0008h,0ee00h,0000h
>         dw      offset new_c4,0008h,0ee00h,0000h,offset new_c5,0008h,0ee00h,0000h
>         dw      offset new_c6,0008h,0ee00h,0000h,offset new_c7,0008h,0ee00h,0000h
>         dw      offset new_c8,0008h,0ee00h,0000h,offset new_c9,0008h,0ee00h,0000h
>         dw      offset new_ca,0008h,0ee00h,0000h,offset new_cb,0008h,0ee00h,0000h
>         dw      offset new_cc,0008h,0ee00h,0000h,offset new_cd,0008h,0ee00h,0000h
>         dw      offset new_ce,0008h,0ee00h,0000h,offset new_cf,0008h,0ee00h,0000h
>         dw      offset new_d0,0008h,0ee00h,0000h,offset new_d1,0008h,0ee00h,0000h
>         dw      offset new_d2,0008h,0ee00h,0000h,offset new_d3,0008h,0ee00h,0000h
>         dw      offset new_d4,0008h,0ee00h,0000h,offset new_d5,0008h,0ee00h,0000h
>         dw      offset new_d6,0008h,0ee00h,0000h,offset new_d7,0008h,0ee00h,0000h
>         dw      offset new_d8,0008h,0ee00h,0000h,offset new_d9,0008h,0ee00h,0000h
>         dw      offset new_da,0008h,0ee00h,0000h,offset new_db,0008h,0ee00h,0000h
>         dw      offset new_dc,0008h,0ee00h,0000h,offset new_dd,0008h,0ee00h,0000h
>         dw      offset new_de,0008h,0ee00h,0000h,offset new_df,0008h,0ee00h,0000h
>         dw      offset new_e0,0008h,0ee00h,0000h,offset new_e1,0008h,0ee00h,0000h
>         dw      offset new_e2,0008h,0ee00h,0000h,offset new_e3,0008h,0ee00h,0000h
>         dw      offset new_e4,0008h,0ee00h,0000h,offset new_e5,0008h,0ee00h,0000h
>         dw      offset new_e6,0008h,0ee00h,0000h,offset new_e7,0008h,0ee00h,0000h
>         dw      offset new_e8,0008h,0ee00h,0000h,offset new_e9,0008h,0ee00h,0000h
>         dw      offset new_ea,0008h,0ee00h,0000h,offset new_eb,0008h,0ee00h,0000h
>         dw      offset new_ec,0008h,0ee00h,0000h,offset new_ed,0008h,0ee00h,0000h
>         dw      offset new_ee,0008h,0ee00h,0000h,offset new_ef,0008h,0ee00h,0000h
>         dw      offset new_f0,0008h,0ee00h,0000h,offset new_f1,0008h,0ee00h,0000h
>         dw      offset new_f2,0008h,0ee00h,0000h,offset new_f3,0008h,0ee00h,0000h
>         dw      offset new_f4,0008h,0ee00h,0000h,offset new_f5,0008h,0ee00h,0000h
>         dw      offset new_f6,0008h,0ee00h,0000h,offset new_f7,0008h,0ee00h,0000h
>         dw      offset new_f8,0008h,0ee00h,0000h,offset new_f9,0008h,0ee00h,0000h
>         dw      offset new_fa,0008h,0ee00h,0000h,offset new_fb,0008h,0ee00h,0000h
>         dw      offset new_fc,0008h,0ee00h,0000h,offset new_fd,0008h,0ee00h,0000h
>         dw      offset new_fe,0008h,0ee00h,0000h,offset new_ff,0008h,0ee00h,0000h
> 
> new_00 :
>         push    0000h
>         jmp     int_emu
> new_01 :
>         push    0001h
>         jmp     int_emu
> new_02 :
>         push    0002h
>         jmp     int_emu
> new_03 :
>         push    0003h
>         jmp     int_emu
> new_04 :
>         push    0004h
>         jmp     int_emu
> new_05 :
>         push    0005h
>         jmp     int_emu
> new_06 :
>         push    0006h
>         jmp     int_emu
> new_07 :
>         push    0007h
>         jmp     int_emu
> new_08 :
>         push    0008h
>         jmp     int_emu
> new_09 :
>         push    0009h
>         jmp     int_emu
> new_0a :
>         push    000ah
>         jmp     int_emu
> new_0b :
>         push    000bh
>         jmp     int_emu
> new_0c :
>         push    000ch
>         jmp     int_emu
> new_0d :
>         push    000dh
>         jmp     int_emu
> new_0e :
>         push    000eh
>         jmp     int_emu
> new_0f :
>         push    000fh
>         jmp     int_emu
> new_10 :
>         push    0010h
>         jmp     int_emu
> new_11 :
>         push    0011h
>         jmp     int_emu
> new_12 :
>         push    0012h
>         jmp     int_emu
> new_13 :
>         push    0013h
>         jmp     int_emu
> new_14 :
>         push    0014h
>         jmp     int_emu
> new_15 :
>         cmp     ah,87h
>         jnz     L3
>         push    bp
>         mov     bp,sp
>         add     bp,02h
>         push    eax
>         push    ebx
>         push    ecx
>         push    edx
>         push    edi
>         push    esi
>         mov     ebx,ss:[bp+14h]
>         shl     ebx,04h
>         and     esi,0000ffffh
>         add     ebx,esi
>         mov     ax,0010h
>         mov     ds,ax
>         mov     es,ax
>         mov     esi,ds:[ebx+12h]
>         mov     edi,ds:[ebx+1ah]
>         and     esi,00ffffffh
>         and     edi,00ffffffh
>         or      cx,cx
>         jz      L2
> L1 :
>         mov     ax,ds:[esi]
>         mov     es:[edi],ax
>         add     esi,02h
>         add     edi,02h
>         loop    L1
> L2 :
>         pop     esi
>         pop     edi
>         pop     edx
>         pop     ecx
>         pop     ebx
>         pop     eax
>         pop     bp
>         iretd
> L3 :
>         push    0015h
>         jmp     int_emu
> new_16 :
>         push    0016h
>         jmp     int_emu
> new_17 :
>         push    0017h
>         jmp     int_emu
> new_18 :
>         push    0018h
>         jmp     int_emu
> new_19 :
>         push    0019h
>         jmp     int_emu
> new_1a :
>         push    001ah
>         jmp     int_emu
> new_1b :
>         push    001bh
>         jmp     int_emu
> new_1c :
>         push    001ch
>         jmp     int_emu
> new_1d :
>         push    001dh
>         jmp     int_emu
> new_1e :
>         push    001eh
>         jmp     int_emu
> new_1f :
>         push    001fh
>         jmp     int_emu
> new_20 :
>         push    0020h
>         jmp     int_emu
> new_21 :
>         push    0021h
>         jmp     int_emu
> new_22 :
>         push    0022h
>         jmp     int_emu
> new_23 :
>         push    0023h
>         jmp     int_emu
> new_24 :
>         push    0024h
>         jmp     int_emu
> new_25 :
>         push    0025h
>         jmp     int_emu
> new_26 :
>         push    0026h
>         jmp     int_emu
> new_27 :
>         push    0027h
>         jmp     int_emu
> new_28 :
>         push    0028h
>         jmp     int_emu
> new_29 :
>         push    0029h
>         jmp     int_emu
> new_2a :
>         push    002ah
>         jmp     int_emu
> new_2b :
>         push    002bh
>         jmp     int_emu
> new_2c :
>         push    002ch
>         jmp     int_emu
> new_2d :
>         push    002dh
>         jmp     int_emu
> new_2e :
>         push    002eh
>         jmp     int_emu
> new_2f :
>         push    002fh
>         jmp     int_emu
> new_30 :
>         push    0030h
>         jmp     int_emu
> new_31 :
>         push    0031h
>         jmp     int_emu
> new_32 :
>         push    0032h
>         jmp     int_emu
> new_33 :
>         push    0033h
>         jmp     int_emu
> new_34 :
>         push    0034h
>         jmp     int_emu
> new_35 :
>         push    0035h
>         jmp     int_emu
> new_36 :
>         push    0036h
>         jmp     int_emu
> new_37 :
>         push    0037h
>         jmp     int_emu
> new_38 :
>         push    0038h
>         jmp     int_emu
> new_39 :
>         push    0039h
>         jmp     int_emu
> new_3a :
>         push    003ah
>         jmp     int_emu
> new_3b :
>         push    003bh
>         jmp     int_emu
> new_3c :
>         push    003ch
>         jmp     int_emu
> new_3d :
>         push    003dh
>         jmp     int_emu
> new_3e :
>         push    003eh
>         jmp     int_emu
> new_3f :
>         push    003fh
>         jmp     int_emu
> new_40 :
>         push    0040h
>         jmp     int_emu
> new_41 :
>         push    0041h
>         jmp     int_emu
> new_42 :
>         push    0042h
>         jmp     int_emu
> new_43 :
>         push    0043h
>         jmp     int_emu
> new_44 :
>         push    0044h
>         jmp     int_emu
> new_45 :
>         push    0045h
>         jmp     int_emu
> new_46 :
>         push    0046h
>         jmp     int_emu
> new_47 :
>         push    0047h
>         jmp     int_emu
> new_48 :
>         push    0048h
>         jmp     int_emu
> new_49 :
>         push    0049h
>         jmp     int_emu
> new_4a :
>         push    004ah
>         jmp     int_emu
> new_4b :
>         push    004bh
>         jmp     int_emu
> new_4c :
>         push    004ch
>         jmp     int_emu
> new_4d :
>         push    004dh
>         jmp     int_emu
> new_4e :
>         push    004eh
>         jmp     int_emu
> new_4f :
>         push    004fh
>         jmp     int_emu
> new_50 :
>         push    0050h
>         jmp     int_emu
> new_51 :
>         push    0051h
>         jmp     int_emu
> new_52 :
>         push    0052h
>         jmp     int_emu
> new_53 :
>         push    0053h
>         jmp     int_emu
> new_54 :
>         push    0054h
>         jmp     int_emu
> new_55 :
>         push    0055h
>         jmp     int_emu
> new_56 :
>         push    0056h
>         jmp     int_emu
> new_57 :
>         push    0057h
>         jmp     int_emu
> new_58 :
>         push    0058h
>         jmp     int_emu
> new_59 :
>         push    0059h
>         jmp     int_emu
> new_5a :
>         push    005ah
>         jmp     int_emu
> new_5b :
>         push    005bh
>         jmp     int_emu
> new_5c :
>         push    005ch
>         jmp     int_emu
> new_5d :
>         push    005dh
>         jmp     int_emu
> new_5e :
>         push    005eh
>         jmp     int_emu
> new_5f :
>         push    005fh
>         jmp     int_emu
> new_60 :
>         push    0060h
>         jmp     int_emu
> new_61 :
>         push    0061h
>         jmp     int_emu
> new_62 :
>         push    0062h
>         jmp     int_emu
> new_63 :
>         push    0063h
>         jmp     int_emu
> new_64 :
>         push    0064h
>         jmp     int_emu
> new_65 :
>         push    0065h
>         jmp     int_emu
> new_66 :
>         push    0066h
>         jmp     int_emu
> new_67 :
>         push    0067h
>         jmp     int_emu
> new_68 :
>         push    0068h
>         jmp     int_emu
> new_69 :
>         push    0069h
>         jmp     int_emu
> new_6a :
>         push    006ah
>         jmp     int_emu
> new_6b :
>         push    006bh
>         jmp     int_emu
> new_6c :
>         push    006ch
>         jmp     int_emu
> new_6d :
>         push    006dh
>         jmp     int_emu
> new_6e :
>         push    006eh
>         jmp     int_emu
> new_6f :
>         push    006fh
>         jmp     int_emu
> new_70 :
>         push    0070h
>         jmp     int_emu
> new_71 :
>         push    0071h
>         jmp     int_emu
> new_72 :
>         push    0072h
>         jmp     int_emu
> new_73 :
>         push    0073h
>         jmp     int_emu
> new_74 :
>         push    0074h
>         jmp     int_emu
> new_75 :
>         push    0075h
>         jmp     int_emu
> new_76 :
>         push    0076h
>         jmp     int_emu
> new_77 :
>         push    0077h
>         jmp     int_emu
> new_78 :
>         push    0078h
>         jmp     int_emu
> new_79 :
>         push    0079h
>         jmp     int_emu
> new_7a :
>         push    007ah
>         jmp     int_emu
> new_7b :
>         push    007bh
>         jmp     int_emu
> new_7c :
>         push    007ch
>         jmp     int_emu
> new_7d :
>         push    007dh
>         jmp     int_emu
> new_7e :
>         push    007eh
>         jmp     int_emu
> new_7f :
>         push    007fh
>         jmp     int_emu
> new_80 :
>         push    0080h
>         jmp     int_emu
> new_81 :
>         push    0081h
>         jmp     int_emu
> new_82 :
>         push    0082h
>         jmp     int_emu
> new_83 :
>         push    0083h
>         jmp     int_emu
> new_84 :
>         push    0084h
>         jmp     int_emu
> new_85 :
>         push    0085h
>         jmp     int_emu
> new_86 :
>         push    0086h
>         jmp     int_emu
> new_87 :
>         push    0087h
>         jmp     int_emu
> new_88 :
>         push    0088h
>         jmp     int_emu
> new_89 :
>         push    0089h
>         jmp     int_emu
> new_8a :
>         push    008ah
>         jmp     int_emu
> new_8b :
>         push    008bh
>         jmp     int_emu
> new_8c :
>         push    008ch
>         jmp     int_emu
> new_8d :
>         push    008dh
>         jmp     int_emu
> new_8e :
>         push    008eh
>         jmp     int_emu
> new_8f :
>         push    008fh
>         jmp     int_emu
> new_90 :
>         push    0090h
>         jmp     int_emu
> new_91 :
>         push    0091h
>         jmp     int_emu
> new_92 :
>         push    0092h
>         jmp     int_emu
> new_93 :
>         push    0093h
>         jmp     int_emu
> new_94 :
>         push    0094h
>         jmp     int_emu
>
--