Programming task switching in protection mode (source code)

xiaoxiao2021-03-06  62

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 gdtseg ends ;;;;; ;;;;;;;;;;;;;;;;; sega segment, TIL RPL2CODEA Descriptor <0fffh,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, RPL2TOB DESCRIPTOR <0, TSSB_SEL, 0, Attaskgat DPL3, 0> TOB_SEL = (TOB-LDT) TIL RPL3SEGA ENDS ;;;;;;;;;;;;;;;;;; ;;;;;;;;; segb segment use16ldt1 label bytedatabase, atdw dpl3,> datab_sel = (datab-ldt1) TIL rpl3codeb descriptor <0FFFFh ,,, atce dpl3,> codeb_sel = (codeb-ldt1) TIL rpl3vbufb descriptor <0FFFFh, 8000h, 0bh, atdw dpl3, > vbuff_sel = (vbufb-ldt1) TIL RPL3TOREALM GATE ToreAlm_sel = (ToreAlM-LDT1) TIL RPL3SEGB ENDS ;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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 , Tempseg Ends ;;;;;;;;;;;;;;;;;;;;; stack0 segment; 0 stackstack0len = 512 db stack0len dup (0) stack0 ends; stack2 segment; 2 stackstack2len = 512 db stack2len dup (0) stack2 ends; stack3 segment; 3 stackstack3len = 512 db stack3len dup (0) stack3 ends ;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BX Add Ax, Offset GDT ADC DX, 0 MOV WORD PTR VGDTR.BASE, AX MOV WORD PTR VGDTR.BASE 2, DX; MOV AX, CSEG MUL BX MOV WORD PTR Code.Basel, Ax Mov Byte Ptr Code.baSem, DL MOV BYTE PTR Code.Baseh, DH; Mov Ax, Sega Mul Bx Mov Word Ptr Ldta.Basel, Ax Mov Byte Ptr Ldta.basem, DL MoV Byte Ptr Ldta.Baseh, DH; MOV AX, Segb Mul Bx Mov Word Ptr LDTB.BASEL, AX MOV BYTE PTR LDTB.BASEM, DL MOV BYTE PTR LDTB.BASEH, DH; MOV AX, TSS0SEG MUL BX MOV WORD PT TSS0.BASEL, AX MOV BYTE PTR TSS0.BASEM, DL MOV BYTE P Tr TSS0.Baseh, DH; Mov AX, TSSaseg Mul Bx Mov Word PTR TSSA.BASL, AX MOV BYTE PTR TSSA.BASEM, DL MOV BYTE PT TSSA.BASEH, DH; MOV AX, TSSBSEG MUL BX MOV WORD PTR TSSB.BASEL , Ax Mov Byte Ptr Tssb.Basem, DL MoV Byte Ptr Tssb.Baseh, DH; Mov AX, Stack0 Mul Bx Mov Word Ptr Stack0t.Basel, Ax Mov Byte Ptr Stack0t.Basem, DL MOV BYTE PTR Stack0T.Baseh, DH; Mov AX, Stack2 Mul Bx Mov Word Ptr Stack2t.Basel, Ax Mov Byte Ptr Stack2t.basem, DL MoV Byte Ptr Stack2t.Baseh, DH; Mov AX, Stack3 Mul Bx Mov Word Ptr Stack3t.Basel, Ax Mov Byte Ptr Stack3T. Basem, DL Mov Byte Ptr Stack3t.Baseh, DH; Mov AX, Tempseg Mul BS MoV Word Ptr Temp.Basel, Ax Mov Byte Ptr Temp.basem, DL MOV BYTE PTR TEMP.BASEH, DH; PUSH DS Assume DS: Sega MOV AX, SEGA MOV DS, AX;

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 , Torel: MOV AX, NORMAL_SEL MOV DS, AX MOV Eax, CR0 and Eax, 0FFFFFEH MOV CR0, EAX JUMP , REAL: DA20 STI MOV AX, SSEG MOV SS, AX MOV SP, 512 MOV AH, 4CH INT 21HCSEG Ends End START

转载请注明原文地址:https://www.9cbs.com/read-113902.html

New Post(0)