ldta_sel = ldta-gdtldtb descriptor <0FFFFh ,,, atldt,> ldtb_sel = ldtb-gdttssa descriptor <0FFFFh ,,, at386tss,> tssa_sel = tssa-gdttssb descriptor <0FFFFh ,,, at386tss,> tssb_sel = tssb-gdttss0 descriptor <0FFFFh ,,, at386tss,> tss0_sel = tss0-gdttemp descriptor <0FFFFh ,,, atce,> temp_sel = temp-gdtstack0t descriptor <0ffffh, stack0,, atdw,> stack0t_sel = stack0t-gdtstack2t descriptor <0ffffh, stack2,, atdw dpl2 ,> stack2t_sel = (stack2t-gdt) rpl2stack3t descriptor <0fffh, stack3,, ATDW DPL3,> stack3t_sel = (stack3t-gdt) rpl3gdtlen = $ - GDTVGDTR PDESC
Level 1 stack pointer DW 0,0; initialization DW stack2len, 0; 2-level stack pointer DW stack2t_sel, 0; not initialization DD 0; CR3 DW 0, 0; EIP DD 0; EFLAGS DD?; EAX DD?; ECX DD? EDX DD?; EBX DD Stack0len; ESP DD?; EBP DD?; ESI DD?; EDI DW 0, 0; ES DW CODE_SEL, 0; CS DW Stack0t_sel, 0; SS DW 0, 0; DS DW 0, 0 FS DW 0, 0; GS DW 0, 0; LDT DW 0 DW $ 2; point to I / O license bitmap DB 0FFH; I / O license bitmap end flag TSS0SEG ENDS ;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Stack pointer DW 0, 0; initialization DW Stack2Len, 0; 2-level stack pointer DW stack2t_sel, 0; uninited DD 0; CR3 DW startB, 0; EIP DD 0; EFLAGS DD?; EDX DD?; ECX DD?; DD 22; EBX DD Stack3len; ESP DD?; EBP DD?; ESI DD?; EDI DW VBUFB_SEL, 0; ES DW CODEB_SEL, 0; CS DW Stack3t_sel, 0; SS DW DATAB_SEL, 0; DS DW 0, 0; FS DW 0, 0; GS DW LDTB_SEL, 0; LDT DW 0 DW $ 2; point to I / O license bitmap DB 0FFH; I / O license bitmap end flag TSSBSEG ENDS ;; ;;;;;;;;;;;;;;;;;;; tsSaseg segment use16 DD 0; Back dw stack0len, 0; 0-level stack pointer DW stack0t_sel, 0; initialization DW 0, 0; 1-level stack pointer DW 0, 0; initialization DW stack2len, 0; level 2 stack pointer DW stack2t_sel, 0; uninited DD 0; CR3 DW starta, 0; EIP DD 0; EFLAGS DD? EAX DD?; ECX DD 0; EBX DD Stack2Len; ESP DD?; EBP DD?; ESI DD?; ESI DD?; EDI DW VBUFA_SEL, 0; ES DW CODEA_SEL, 0; CS DW Stack2t_sel, 0; SS DW DataA_sel , 0; DS DW 0, 0;
FS DW 0, 0; GS DW LDTA_SEL, 0; LDT DW 0 DW $ 2; pointing to I / O License Bitchart DB 0FFH; I / O License Chart End Sign TsSSaseg Ends ;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CX, 11AGAIN: MOV Al, [Si] MOV AH, 87H MOV ES: [BX], AX Add BX, 2 Inc Si Loop Again Jump Tob_sel, 0; Task Gate Codeaseg Ends ;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Hello Mov CX, Hellolenagain1: Mov Al, [Si] MOV AH, 0F4H MOV ES: [BX], AX Add BX, 2 INC SI LOOP AGAIN1 CALL16 TOREALM_SEL, 0; Task Gate CodebSeg Ends ;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;; Tempseg segment us16 assuMe CS: Tempsegvitual: MOV AX, TSS0_SEL LTR AX JUMP TSSA_SEL, 0
TOJUMP: JUMP
AX, Dataaseg Mul Bx Mov Word Ptr DataA.Basel, Ax Mov Byte Ptr DataA.basem, DL MoV Byte Ptr DataA.Baseh, DH; Mov AX, Codeaseg Mul Bx Mov Word PTR Codea.Basel, Ax Mov Byte Ptr Codea. Basem, DL Mov Byte Ptr Codea.Baseh, DH; Assume DS: Segb Mov AX, Segb Mov DS, AX; MOV AX, DatabaseG Mul Bx Mov Word Ptr Databases, Ax Mov Byte Ptr DatabaseM, DL MoV Byte PTR DATAB.BASEH, DH; MOV AX, CODEBSEG MUL BX MOV WORD PTR Codeb.Basel, Ax Mov Byte Ptr Codeb.basem, DL MOV BYTE PTR Codeb.Baseh, DH; Pop DS Assume DS: GDTSEG LGDT Qword Ptr Vgdtr EA20 CLI MOV Eax, Cr0 OR AX, 1 MOV CR0, EAX JUMP