通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> 汇编语言 >> 基础教程 >> 文章正文
虚拟8086模式
责任编辑:admin   更新日期:2005-8-6
PARA USE16 DD 0 ;链接字 DD V86Stack0Len ;0级堆栈指针 DW V86Stack0_Sel,0 ;0级堆栈选择子 DD 0 ;1级堆栈指针(实例不使用) DW 0,0 ;1级堆栈选择子(实例不使用) DD 0 ;2级堆栈指针(实例不使用) DW 0,0 ;2级堆栈选择子(实例不使用) DD 0 ;CR3 DW V86Begin,0 ;EIP DD IOPL3 OR VMFL ;EFLAGS(IO特权级为3,VM=1) DD 0 ;EAX DD 0 ;ECX DD 0 ;EDX DD 0 ;EBX DD V86Stack3Len ;ESP DD 0 ;EBP DD 0 ;ESI DD 0 ;EDI DW V86CodeSeg,0 ;ES DW V86CodeSeg,0 ;CS DW V86Stack3Seg,0 ;SS DW V86CodeSeg,0 ;DS DW V86CodeSeg,0 ;FS DW V86CodeSeg,0 ;GS DW V86LDT_Sel,0 ;LDTR DW 0 ;调试陷阱标志 DW $+2 ;指向I/O许可位图 DB 4000h/8 DUP(0) ;I/O许可位图 DB 0ffh ;I/O许可位图结束标志 ;---------------------------------------------------------------------------- V86TSSLen = $ V86TSSSeg ENDS ;============================================================================ ;V86任务的LDT段 V86LDTSeg SEGMENT PARA USE16 VLDT LABEL BYTE ;---------------------------------------------------------------------------- ;V86任务线性地址空间中最低端1M字节段的描述符及描述符 VAllMem Desc <0ffffh,,,ATDWA,0fh,> VAllMem_Sel = VAllMem-VLDT+TIL ;V86任务0级堆栈段描述符及选择子 V86Stack0 Desc <V86Stack0Len-1,V86Stack0Seg,,ATDWA,,> V86Stack0_Sel = V86Stack0-VLDT+TIL ;V86任务数据段描述符及选择子 V86Data Desc <V86DataLen-1,V86DataSeg,,ATDR,,> V86Data_Sel = V86Data-VLDT+TIL ;V86任务中断/异常处理程序代码段描述符及选择子 TPCode Desc <TPCodeLen-1,TPCodeSeg,,ATCE,,> TPCode_Sel = TPCode-VLDT+TIL ;V86任务通用保护异常处理程序代码段描述符及选择子 GPCode Desc <GPCodeLen-1,GPCodeSeg,,ATCE,,> GPCode_Sel = GPCode-VLDT+TIL ;---------------------------------------------------------------------------- V86LDNum = ($-VLDT)/(SIZE Desc) V86LDTLen = $ V86LDTSeg ENDS ;============================================================================ ;V86任务的0级堆栈 V86Stack0Seg SEGMENT PARA USE16 V86Stack0Len = 512 DB V86Stack0Len DUP(0) V86Stack0Seg ENDS ;============================================================================ ;V86任务的3级堆栈 V86Stack3Seg SEGMENT PARA USE16 V86Stack3Len = 1024 DB V86Stack3Len DUP(0) V86Stack3Seg ENDS ;============================================================================ ;V86任务数据 V86DataSeg SEGMENT PARA USE16 GPErrMess DB '......General Protection Error......' GPErrMessLen = $-GPErrMess V86DataLen = $ V86DataSeg ENDS ;============================================================================ ;定义部分代表堆栈单元的符号 Perr EQU <WORD PTR [BP+0]> Pip EQU <WORD PTR [bp+4]> Pcs EQU <WORD PTR [bp+8]> Pflag EQU <WORD PTR [bp+12]> Psp EQU <WORD PTR [bp+16]> Pss EQU <WORD PTR [bp+20]> Pes EQU <WORD PTR [bp+24]> Pds EQU <WORD PTR [bp+28]> Pfs EQU <WORD PTR [bp+32]> Pgs EQU <WORD PTR [bp+36]> ;============================================================================ ;V86任务下的中断/异常处理程序代码段 TPCodeSeg SEGMENT PARA USE16 ASSUME CS:TPCodeSeg ;---------------------------------------------------------------------------- TPBegin PROC FAR Count = 0 REPT 256 ;对应256个入口 IF Count EQ 21h Ent21H LABEL BYTE ;在第21H项处定义标号Ent21H ENDIF push bp mov bp,Count ;置中断向量号到BP jmp Process ;都转统一的处理程序 Count = Count+1 ENDM Process: push bp ;保存BP mov bp,sp

上一页  [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做放大镜
    鼠绘美女及服装修画全过程