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

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

?? reposit.asm

?? 操作系統(tǒng)實(shí)驗(yàn)教程核心技術(shù)與編程實(shí)例書中地例子代碼
?? ASM
字號:
G_EXEC      PROC FAR
            ;in---- (ds)=system data segment
            ;       (gs)=g_BUF segment-->head+program
            ;       (ax)=THIS TASK LDT ADDRESS:OFFSET in GDT
            ;       DS:G_WORK 100 DB PARA AREA
            ;this   FS:USER_PsLDTT_ASDATA_SEL
;push eax
;mov EAX,DS:[G_BUF_PTR]
;call disp_ax
;mov ax,0bbbbh
;call disp_ax
;pop eax

;jmp G_EXEC_END
            PUSH AX            ;SS:1=USER_PsLDT ADDR
            MOV BX,GS:00H
            CMP BX,5A4DH
            JZ  G_EXEC0
            POP AX
            MOV AX,1           ;Not DOS .exe  first 2 bytes is 4D5AH
            JMP G_EXEC_END
            ;*********************get program_size
G_EXEC0:    
;pop ax
;jmp G_EXEC_END
            ;                   ss:1=GDT ADDR
            MOV AX,USER_PsLDTT_ASDATA_SEL ;should use selector in gdt
;pop ax
;jmp G_EXEC_END

            MOV FS,AX
;pop ax
;jmp G_EXEC_END
            ;                    set ldt_desc for CS OF USER PROCESS  -->START
            MOV AX,GS:08H       ;SIZE_HEAD PARA
            SHL AX,4            ;SIZE_HEAD BYTE
            PUSH AX             ;SS:1=GDT ADDR 2=SIZE_HEAD BYTE INTO STACK
            ;;;;;;;;;           ;GET FILE_SIZE
            MOV BX,GS:02H     ;mod512
            MOV AX,GS:04H     ;file_sectors
            CMP BX,0
            JZ  g_exec1
            DEC AX
g_exec1:    XOR DX,DX
            MOV CX,512
            MUL CX         
            ADD AX,BX      
            ADC DX,0              ;DX:AX  file_size
            MOV DS:G_WORK,AL       
            MOV DS:G_WORK[1],AH      
            MOV DS:G_WORK[2],DL
            MOV DS:G_WORK[3],DH   ;DS:G_WORK FILE SIZE
            MOV BX,GS:0EH
            MOV DS:G_WORK[4],BL
            MOV DS:G_WORK[5],BH
            ;;;;;;;;;;
            POP BX                ;GET SIZE_HEAD 
            SUB AX,BX
            SBB DX,0              ;DL:AX=PROGRAM_SIZE=LIMIT
            POP DI                ;DI=GDT ADDR   SS:0
            PUSH DI
            PUSH BX            ;SS:1=GDT ADDR 2=SIZE_HEAD BYTE INTO STACK
            MOV FS:[DI].LIMIT,AX
            MOV FS:[DI].GRAN,DL      ;limit HIGH 4 IN DL_LOW4  LIMIT<=1M
            MOV FS:[DI].ACCESS,9AH
                                  ;9EH:P=1 ,DPL=00,S=1 DATA SEGMENT,TYPE=EH
                                  ;BASE_ADDR=3M+SIZE_HEAD+CS_OFF
            MOV AX,GS:16H
            ADD AX,BX
            MOV FS:[DI].BASE_L,AX      
            ;;;;;;;;;;;;;
            PUSH AX
            MOVZX EAX,AX
            ADD EAX,DS:[G_BUF_PTR]
            ADD EAX,400000H
            SHR EAX,16
            MOV FS:[DI].BASE_M,AL         ;G_BUF_BASE
            POP AX
            ;MOV FS:[DI].BASE_M,G_BUF_BASE
            ;;;;;;;;;;;;;;
            MOV FS:[DI].BASE_H,0 
            ;                     set gdt_desc for CS OF USER PROCESS  --->END

            ;                     LOOP OTHER SEGMENT-----START 
            MOV SI,GS:6H     ;reposit_count
g_exec_1:   OR SI,SI
            JZ g_exec_end1
            MOV AX,SI
            DEC AX
            CMP AX,0
            JLE g_exec_2
            MOV CL,4
            MUL CL
g_exec_2:
            MOV BX,GS:18H         
            ADD BX,AX             
            MOV CX,GS:[BX]       ;offset 0007
            PUSH CX
            MOV AX,GS:[BX+2]     ;SEG    0000  IN PARAG
            XOR DX,DX
            MOV CX,4
            MUL CX               ;DX:AX= SEG IN BYTE
            POP CX         ;SS:1=GDT ADDR 2=SIZE_HEAD BYTE INTO STACK
            ADD AX,CX            
            ADC DX,0             ;DX:AX=OFFSET IN PROGRAM 
            POP CX               ;GET HEAD_SIZE
            PUSH CX     ;SS:1=GDT ADDR 2=SIZE_HEAD BYTE INTO STACK
            MOVZX EBX,CX          ;HEAD_SIZE
            MOVZX EDX,DX
            SHL EDX,16
            MOVZX EAX,AX          ;OFFSET IN PROGRAM
            ADD EDX,EAX
            ADD EBX,EDX          ;EBX=OFFSET IN GS
            MOV AX,GS:[EBX]      ;AX=SEG---GET SEGMENT IN PARA 0292
                                 ;SEG TURN TO SEL.
            push dx
            MOV dL,DS:G_WORK[4]
            MOV dH,DS:G_WORK[5]
            CMP dX,AX
            JZ g_exec_3
            MOV DS:G_WORK[6],0      ;OTHER SEG
            jmp g_exec_3_3
g_exec_3:
            MOV DS:G_WORK[6],1      ;STACK SEG
g_exec_3_3: pop dx
            MOV DX,SI
            SHL DX,3
            ADD DX,user_ps_sel      ;SEL. OF CS=NO.7
                                    ;DX IS SEL. TI=0 RPL=0(2)
            MOV GS:[EBX],DX         ;;;;;;;;reposit
            CMP DS:G_WORK[6],1
            JNE g_exec_33
            MOV DS:G_WORK[7],DL
            MOV DS:G_WORK[8],DH
            ;set desc for segment
g_exec_33:  XOR DX,DX
            MOV CX,16
            MUL CX               ;DX:AX SEG IN BYTE IN PROGRAM
            POP CX         ;SS:1=GDT ADDR 2=SIZE_HEAD BYTE INTO STACK
            ADD AX,CX            
            ADC DX,0             ;DX:AX=OFFSET IN GS
            PUSH CX        ;SS:1=GDT ADDR 2=SIZE_HEAD BYTE INTO STACK
            MOVZX EDX,DX
            SHL EDX,16
            MOVZX EAX,AX          ;OFFSET LOW16
            ADD EDX,EAX           ;EDX= SEG OFFSET IN GS  IN BYTE 
                                  ;EDX= BASE IN GS
            PUSH EDX              ;EDX=OFFSET FROM GS START 
            ;
            MOV EAX,DS:[G_BUF_PTR]
            ADD EAX,400000H
            ;
            ;MOV EAX,G_BUF_BASE   ;GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
            ;SHL EAX,16            ;EAX=400000H

            ADD EDX,EAX           ;EDX= BASE FROM 0
            MOV BX,SI
            SHL BX,3              ;OFFSET IN USER_P 
            MOV FS:[DI+BX].BASE_L,DX    ;DI NO CHANGE:GDT ADDR  
            SHR EDX,16
            MOV FS:[DI+BX].BASE_M,DL
            MOV FS:[DI+BX].BASE_H,0 

            MOV CL,DS:G_WORK
            MOV CH,DS:G_WORK[1]
            MOV AL,DS:G_WORK[2]
            MOV AH,DS:G_WORK[3]     ;AX:CX FILE_SIZE
            MOVZX EAX,AX
            SHL EAX,16
            MOVZX ECX,CX
            ADD EAX,ECX          ;EAX FILE_SIZE
            POP EDX              ;EDX=OFFSET FROM GS START
            SUB EAX,EDX          ;EAX=SEG_LIMIT LEN(STACK)=200
            MOV FS:[DI+bx].LIMIT,AX
            SHR EAX,16
            MOV FS:[DI+bx].GRAN,AL      ;limit HIGH 4 IS IN AL_LOW4  LIMIT<=1M
            CMP DS:G_WORK[6],1
            JE g_exec_4
            MOV FS:[DI+bx].ACCESS,92H 
            JMP g_exec_5
g_exec_4:
            MOV FS:[DI+bx].ACCESS,92H
                         ;96H:P=1 ,DPL=00,S=1 DATA SEGMENT,TYPE=3 (SS)
                         ;BASE_ADDR=3M+SIZE_HEAD+SS_OFF
g_exec_5:
            DEC SI
            JMP g_exec_1
g_exec_end1:  
            POP DX      ;SS:1=GDT ADDR 2=SIZE_HEAD BYTE INTO STACK
            POP AX
            ;                  LOOP OTHER SEGMENT-----END
            ;INIT SS,SP,CS,IP--->WORK[0..7]
            ;DX=SIZE_HEAD
            MOV AL,DS:G_WORK[7]
            MOV AH,DS:G_WORK[8]
            MOV DS:G_WORK,AL     ;SEL. OF SS
            MOV DS:G_WORK[1],AH
            MOVZX EDX,DX 
            MOV AX,GS:10H
            dec ax
            MOV DS:G_WORK[2],AL     ;SP
            MOV DS:G_WORK[3],AH
            MOV DS:G_WORK[4],G_BUF_BASE    ;CS
            MOV DS:G_WORK[5],0H
            MOV AL,GS:14H        
            MOV AH,GS:15H        
            MOV DS:G_WORK[6],AL     ;IP
            MOV DS:G_WORK[7],AH
            ;*********************A  -->end   deal with loading .exe
G_EXEC_END: RET
G_EXEC      ENDP

; ////////////disp USER_Psldt AND head of dos_program after repositiom
disp_ldt_head PROC FAR
            ; ////////////disp USER_Psldt
            MOV AH,9
            MOV CX,0400H ;15 row 21 column
            MOV DX,OFFSET TEST1_MSG
            INT 21H
            push fs
            mov ax,USER_PsLDTT_ASDATA_SEL
            mov fs,ax
            MOV di,fs:offset user_pS  ;USER_PsLDT FIRST ADDR
            mov ax,fs:[di].limit;/////CS 
            mov cx,0600H
            call disp_ax
            mov ax,fs:[di].BASE_L
            mov cx,0608H
            call disp_ax
            mov aL,fs:[di].BASE_M
            mov aH,fs:[di].ACCESS
            mov cx,0610H
            call disp_ax
            mov aL,fs:[di].GRAN
            mov aH,fs:[di].BASE_H
            mov cx,0618H
            call disp_ax
            mov ax,fs:[di+8].limit;/////SS
            mov cx,0700H
            call disp_ax
            mov ax,fs:[di+8].BASE_L
            mov cx,0708H
            call disp_ax
            mov aL,fs:[di+8].BASE_M
            mov aH,fs:[di+8].ACCESS
            mov cx,0710H
            call disp_ax
            mov aL,fs:[di+8].GRAN
            mov aH,fs:[di+8].BASE_H
            mov cx,0718H
            call disp_ax
            mov ax,fs:[di+16].limit;/////DS
            mov cx,0800H
            call disp_ax
            mov ax,fs:[di+16].BASE_L
            mov cx,0808H
            call disp_ax
            mov aL,fs:[di+16].BASE_M
            mov aH,fs:[di+16].ACCESS
            mov cx,0810H
            call disp_ax
            mov aL,fs:[di+16].GRAN
            mov aH,fs:[di+16].BASE_H
            mov cx,0818H
            call disp_ax
            POP fS
; ////////////disp USER_Psldt

;disp head of user_ps: after reposition in g_buf
            MOV AH,9
            MOV CX,0A00H ;15 row 21 column
            MOV DX,OFFSET HEAD_DOS
            INT 21H
            mov ax,g_buf_sel
            mov gs,ax
            mov ax,gs:0200h
            mov cx,0C00H
            call disp_ax
            mov ax,gs:0202h
            mov cx,0C08H
            call disp_ax
            mov ax,gs:0204h
            mov cx,0C10H
            call disp_ax
            mov ax,gs:0206h
            mov cx,0C18H
            call disp_ax
            mov ax,gs:0208h
            mov cx,0C20H
            call disp_ax
            mov ax,gs:020Ah
            mov cx,0C28H
            call disp_ax
            mov ax,gs:020Ch
            mov cx,0C30H
            call disp_ax
            mov ax,gs:020Eh
            mov cx,0C38H
            call disp_ax
            ret
disp_ldt_head ENDP
;disp head of user_ps: after reposition in g_buf
;///////////

; ////////////disp USER_Psldt AND head of dos_program after repositiom
disp_ldt_head2 PROC FAR
            ; ////////////disp USER_Psldt
            PUSH AX
            PUSH BX
            PUSH CX
            PUSH DX
            PUSH FS
            PUSH GS
            MOV AH,9
            MOV CX,0400H ;15 row 21 column
            MOV DX,OFFSET TEST1_MSG
            INT 21H
            mov ax,USER_PsLDTT_ASDATA_SEL
            mov fs,ax
            MOV di,fs:offset user_pS  ;USER_PsLDT FIRST ADDR
            mov ax,fs:[di].limit;/////CS 
            mov cx,0600H
            call disp_ax
            mov ax,fs:[di].BASE_L
            mov cx,0608H
            call disp_ax
            mov aL,fs:[di].BASE_M
            mov aH,fs:[di].ACCESS
            mov cx,0610H
            call disp_ax
            mov aL,fs:[di].GRAN
            mov aH,fs:[di].BASE_H
            mov cx,0618H
            call disp_ax
            mov ax,fs:[di+8].limit;/////SS
            mov cx,0700H
            call disp_ax
            mov ax,fs:[di+8].BASE_L
            mov cx,0708H
            call disp_ax
            mov aL,fs:[di+8].BASE_M
            mov aH,fs:[di+8].ACCESS
            mov cx,0710H
            call disp_ax
            mov aL,fs:[di+8].GRAN
            mov aH,fs:[di+8].BASE_H
            mov cx,0718H
            call disp_ax
            mov ax,fs:[di+16].limit;/////DS
            mov cx,0800H
            call disp_ax
            mov ax,fs:[di+16].BASE_L
            mov cx,0808H
            call disp_ax
            mov aL,fs:[di+16].BASE_M
            mov aH,fs:[di+16].ACCESS
            mov cx,0810H
            call disp_ax
            mov aL,fs:[di+16].GRAN
            mov aH,fs:[di+16].BASE_H
            mov cx,0818H
            call disp_ax
; ////////////disp USER_Psldt

;disp head of user_ps: after reposition in g_buf
            MOV AH,9
            MOV CX,0A00H ;15 row 21 column
            MOV DX,OFFSET HEAD_DOS
            INT 21H
            mov ax,g_buf_sel
            mov gs,ax
            mov ax,gs:0200h
            mov cx,0C00H
            call disp_ax
            mov ax,gs:0202h
            mov cx,0C08H
            call disp_ax
            mov ax,gs:0204h
            mov cx,0C10H
            call disp_ax
            mov ax,gs:0206h
            mov cx,0C18H
            call disp_ax
            mov ax,gs:0208h
            mov cx,0C20H
            call disp_ax
            mov ax,gs:020Ah
            mov cx,0C28H
            call disp_ax
            mov ax,gs:020Ch
            mov cx,0C30H
            call disp_ax
            mov ax,gs:020Eh
            mov cx,0C38H
            call disp_ax
            POP GS
            POP FS
            POP DX
            POP CX
            POP BX
            POP AX
            ret
disp_ldt_head2 ENDP
;disp head of user_ps: after reposition in g_buf

disp_mem    PROC FAR
            ; ////////////disp memory
            ; in fs=sel di=offset dx=count of 8bytes 
            PUSH AX
            PUSH BX
            push cx
            mov cx,0600H
disp_mem1:            
            mov ax,fs:[di]
            call disp_ax
            inc di
            inc di
            add cx,4

            mov ax,fs:[di]
            call disp_ax
            inc di
            inc di
            add cx,4

            mov ax,fs:[di]
            call disp_ax
            inc di
            inc di
            add cx,4

            mov ax,fs:[di]
            call disp_ax
            inc di
            inc di
            add cx,4

            mov ax,fs:[di]
            call disp_ax
            inc di
            inc di
            add cx,4

            mov ax,fs:[di]
            call disp_ax
            inc di
            inc di
            add cx,4

            mov ax,fs:[di]
            call disp_ax
            inc di
            inc di
            add cx,4

            mov ax,fs:[di]
            call disp_ax
            inc di
            inc di
            add cx,4

            MOV AX,1111H
            call disp_ax
            add cx,4


            dec dx
            cmp dx,0
            jnz disp_mem1

            pop cx
            pop bx
            pop ax
            ret
disp_mem    endP

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情中文不卡| 久久99国产精品久久| 中文字幕在线一区二区三区| 久久色.com| 久久国产精品99精品国产| 亚洲成人av在线电影| 亚洲五月六月丁香激情| 亚洲成人自拍偷拍| 首页国产欧美久久| 日韩电影在线看| 麻豆精品新av中文字幕| 狠狠色丁香久久婷婷综合_中 | 亚洲女爱视频在线| 亚洲欧美日韩精品久久久久| 亚洲人123区| 亚洲成a人片在线观看中文| 亚洲国产一区二区三区| 婷婷综合另类小说色区| 美女国产一区二区三区| 国产一区免费电影| 成人国产免费视频| 91精彩视频在线观看| 一卡二卡三卡日韩欧美| 亚洲成人激情综合网| 免费成人你懂的| 国产jizzjizz一区二区| 97se亚洲国产综合在线| 欧美性感一类影片在线播放| 91精品国产全国免费观看| 欧美第一区第二区| 国产精品色一区二区三区| 亚洲视频免费看| 婷婷中文字幕综合| 激情国产一区二区| 91丨porny丨在线| 91国偷自产一区二区开放时间 | 色婷婷激情一区二区三区| 欧美日韩国产综合视频在线观看| 欧美一区二区三区在线观看视频| 蜜臀va亚洲va欧美va天堂| 国产精品正在播放| 色综合亚洲欧洲| 欧美一区二区视频在线观看2020| 精品久久久久一区| 亚洲免费看黄网站| 另类成人小视频在线| 99精品在线观看视频| 欧美高清你懂得| 中文在线一区二区 | 成人18视频日本| 91精品国产色综合久久不卡电影| 久久久亚洲高清| 亚洲一区二区精品久久av| 久久99国内精品| 在线视频你懂得一区二区三区| 日韩欧美的一区二区| 亚洲欧洲国产日本综合| 六月婷婷色综合| 色香蕉成人二区免费| 美日韩一区二区三区| 97精品国产露脸对白| 欧美成人精品福利| 亚洲香肠在线观看| 成人av网址在线| 日韩亚洲国产中文字幕欧美| 国产精品的网站| 狠狠色狠狠色合久久伊人| 欧美三级中文字幕在线观看| 中文在线一区二区| 精品伊人久久久久7777人| 欧美日韩一区三区| 中文字幕一区二区在线观看 | 欧美日韩国产高清一区二区| 国产精品麻豆久久久| 蜜臀av在线播放一区二区三区| 日本精品视频一区二区三区| 国产三级一区二区| 久久99精品一区二区三区三区| 欧美性欧美巨大黑白大战| 中文字幕一区免费在线观看| 国产大片一区二区| 亚洲国产cao| 91精品福利视频| 综合分类小说区另类春色亚洲小说欧美 | 一区二区三区美女| 成人福利视频网站| 久久久不卡网国产精品一区| 蜜桃久久久久久| 7777精品伊人久久久大香线蕉完整版 | 五月天中文字幕一区二区| 91免费视频网| 成人欧美一区二区三区1314 | 久久先锋影音av| 欧美高清视频在线高清观看mv色露露十八 | 欧美三级一区二区| 亚洲国产一区二区在线播放| 91小视频在线| 亚洲欧美日韩国产另类专区| 成人av网在线| 亚洲天堂免费看| 99精品欧美一区二区三区小说| 国产拍揄自揄精品视频麻豆| 国产一区二区三区电影在线观看 | 视频精品一区二区| 精品视频一区二区不卡| 亚洲一区二区黄色| 在线视频一区二区三| 亚洲国产精品久久久久婷婷884| 在线亚洲免费视频| 亚洲一区二区黄色| 欧美精品v国产精品v日韩精品 | 99麻豆久久久国产精品免费| 国产精品高清亚洲| 色综合久久久久久久久久久| 亚洲女性喷水在线观看一区| 91成人国产精品| 午夜精品福利视频网站| 欧美久久久久免费| 久久成人麻豆午夜电影| 欧美精品一区二区三区蜜桃视频| 激情综合色播激情啊| 中文字幕国产一区二区| 91丨porny丨首页| 亚洲国产一区二区视频| 欧美一级一区二区| 国产专区综合网| 中文字幕欧美区| 色av成人天堂桃色av| 午夜久久电影网| 欧美成人乱码一区二区三区| 国产宾馆实践打屁股91| 亚洲免费av在线| 亚洲欧美一区二区视频| 在线观看免费视频综合| 日本人妖一区二区| 欧美激情一区在线观看| 色偷偷久久一区二区三区| 日韩精品国产欧美| 国产女人aaa级久久久级| 色婷婷综合激情| 久久国产欧美日韩精品| 国产精品乱人伦| 7777精品伊人久久久大香线蕉经典版下载 | 欧美日韩国产精品自在自线| 久久精品噜噜噜成人av农村| 久久久亚洲精品一区二区三区| av在线一区二区| 亚洲国产aⅴ成人精品无吗| 久久综合999| 97se亚洲国产综合自在线不卡| 亚洲国产综合在线| 精品一区中文字幕| 中文字幕乱码一区二区免费| 日本韩国欧美国产| 免费成人结看片| 一区二区三区在线免费视频| 欧美一级午夜免费电影| 成人午夜在线免费| 亚洲成a人片在线不卡一二三区 | 麻豆精品精品国产自在97香蕉| 日本一区二区三区免费乱视频 | 国产盗摄视频一区二区三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美在线影院一区二区| 蜜乳av一区二区三区| 亚洲色图色小说| 欧美成人一区二区| 色婷婷av久久久久久久| 日本伊人精品一区二区三区观看方式| 国产精品国产三级国产三级人妇 | 中文字幕中文在线不卡住| 欧美日韩一区二区在线观看 | 国产精品久久久久久久岛一牛影视 | 91精品欧美久久久久久动漫| 国产一区二区伦理片| 亚洲成人av电影在线| 国产欧美久久久精品影院| 欧美精品九九99久久| 99re这里都是精品| 国产精品亚洲第一区在线暖暖韩国 | 国产成人啪免费观看软件| 欧洲精品在线观看| 国产真实精品久久二三区| 亚洲欧美中日韩| 久久久久久久久伊人| 欧美精选午夜久久久乱码6080| 不卡免费追剧大全电视剧网站| 日本美女视频一区二区| 亚洲国产精品久久人人爱| 国产精品久久久爽爽爽麻豆色哟哟| 欧美一卡二卡三卡四卡| 春色校园综合激情亚洲| 狠狠色丁香久久婷婷综合_中| 香蕉久久一区二区不卡无毒影院 | 久久久99精品久久| 777精品伊人久久久久大香线蕉| 国产一二三精品| 国产一区中文字幕| 男人的j进女人的j一区| 亚洲va欧美va国产va天堂影院|