通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> 汇编语言 >> 基础教程 >> 文章正文
虚拟8086模式
责任编辑:admin   更新日期:2005-8-6
DS:RCodeSeg ;---------------------------------------------------------------------------- VGDTR PDesc <GDTLen-1,> ;GDT伪描述符 VIDTR PDesc <IDTLen-1,> ;IDT伪描述符 NORVIDTR PDesc <> ;用于保存原IDTR值 SPVar DW ? ;用于保存实方式下的SP SSVar DW ? ;用于保存实方式下的SS ;---------------------------------------------------------------------------- Start PROC mov ax,RCodeSeg mov ds,ax cld call InitGDT ;初始化全局描述符表GDT call InitIDT ;初始化中断描述符表IDT mov ax,V86LDTSeg mov fs,ax mov cx,V86LDNum mov si,OFFSET VLDT call InitLDT mov ax,IntFFLDTSeg mov fs,ax mov cx,IntFFLDNum mov si,OFFSET FLDT call InitLDT mov SSVar,ss mov SPVar,sp lgdt QWORD PTR VGDTR ;装载GDTR并切换到保护方式 sidt QWORD PTR NORVIDTR ;保存IDTR cli ;关中断 lidt QWORD PTR VIDTR ;装载IDTR mov eax,cr0 or al,1 mov cr0,eax JUMP16 <TempCode_Sel>,<OFFSET Virtual> Real: mov ax,cs mov ds,ax lss sp,DWORD PTR SPVar ;又回到实方式 lidt QWORD PTR NORVIDTR sti mov ax,4c00h int 21h Start ENDP ;---------------------------------------------------------------------------- TSRLine LABEL BYTE ;---------------------------------------------------------------------------- InitGDT PROC push ds mov ax,GDTSeg mov ds,ax mov cx,GDNum mov si,OFFSET EFFGDT InitG: mov ax,[si].BaseL movzx eax,ax shl eax,4 shld edx,eax,16 mov WORD PTR [si].BaseL,ax mov BYTE PTR [si].BaseM,dl mov BYTE PTR [si].BaseH,dh add si,SIZE Desc loop InitG pop ds mov bx,16 mov ax,GDTSeg mul bx mov WORD PTR VGDTR.Base,ax mov WORD PTR VGDTR.Base+2,dx ret InitGDT ENDP ;---------------------------------------------------------------------------- ;入口参数:FS:SI=第一个要初始化的描述符,CX=要初始化的描述符数 ;---------------------------------------------------------------------------- InitLDT PROC mov ax,WORD PTR FS:[si].BaseL movzx eax,ax shl eax,4 shld edx,eax,16 mov WORD PTR fs:[si].BaseL,ax mov BYTE PTR fs:[si].BaseM,dl mov BYTE PTR fs:[si].BaseH,dh add si,SIZE Desc loop InitLDT ret InitLDT ENDP ;---------------------------------------------------------------------------- InitIDT PROC push ds mov ax,IDTSeg mov ds,ax mov cx,256-1 mov si,OFFSET IDT mov ax,OFFSET TPBegin IIDT1: cmp cx,256-1-13 jz IIDT2 mov [si],ax IIDT2: add si,8 add ax,7 loop IIDT1 pop ds mov bx,16 mov ax,IDTSeg mul bx mov WORD PTR VIDTR.Base,ax mov WORD PTR VIDTR.Base+2,dx ret InitIDT ENDP ;---------------------------------------------------------------------------- RCodeSeg ENDS END Start
用于演示INTFF任务的源程序如下:

;功能:用于演示V86模式下的INTFF任务

;编译:TASM INTFF.ASM

;连接:TLINK INTFF.OBJ

;====================================================================

Text            SEGMENT

                ASSUME  cs:Text,ds:Text

;---------------------------------------

Start           PROC

                int     0ffh

                mov     ax

上一页  [1] [2] [3] [4] [5] [6] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程