• 32位汇编学习札记(一)


    32位汇编第一章总结(6.20-6.21)

    1 简史

    简史主要是介绍了windows和intel的发展历史和windows与intel之间相辅相成的发展过程。

    2 80x86的工作模式

    2.1 80x86下的工作模式有哪些,有何异同?

    包括实模式、保护模式、虚拟86模式
    1.实模式与8086处理器的异同:
    相同:   
    a.相同的寻址方式   b.相同的中断方式 实模式相对8086处理器的改进:   a.多了FS,GS两个段寄存器   b.可使用32位寄存器   c.新增一些指令,加速操作 2.实模式与保护模式的异同
    保护模式相对实模式的改进:   
    a.更大的(4G)寻址空间   b.支持内存分页机制   c.支持优先级 3.虚拟86模式是实模式与保护模式的混合,存在的意义是为了兼容8086的程序。   a.使用与8086相同的寻址方式(20位)   b.支持多任务和分页机制

     2.2 80x86下的工作模式之间是如何切换的?

    1.实模式和虚拟86模式之间无法进行切换。
    2.当计算机启动后,首先进入实模式,然后从实模式中切换到保护模式,在保护模式中可以启动一个虚拟86模式的进程。

    3 windows的内存管理

    3.1 windows下各个工作模式的寻址方式?

    1.实模式和虚拟86模式的寻址模式与8086处理器的寻址方式相同,使用20位寻址最多可以寻址1M。使用xxxx:yyyy的方式表示物理地址,xxxx存于段寄存器中,为基地址,yyyy为索引值或者偏移量。
    物理地址的转换方式为 xxxx*10h+yyyy。
    2.保护模式下有32位的寻址空间,可以寻址4G,使用xxxx:yyyyyyyy的方式表示线性地址,xxxx存放于16位的段寄存器中,用于查找基地址,yyyyyyyy为索引值或者偏移量
    保护模式下的线性地址转换要复杂一些大致分为两步:
      a.从段段寄存器xxxx中获取段描述符
      从段寄存器中获取xxxx,段寄存器的0,1位存放的是当前段的优先级,第3位存放的是从哪里获取基地址,0表示从GDTR中获取,1表示从LDTR中获取。
      当从GDTR中获取时,从GDTR中直接可以获取到GDT的基址,在根据段寄存器余下的13位作为索引值可以得到该段的段描述符。
      当从LDTR中获取时,先从GDTR中获取到GDTR的基址,再从LDTR中获取到LDT的索引值,从而得到LDT的基址,再根据段寄存器余下的13位作为索引值可以得到该段的段描述。
      b.根据段描述符中的段基址和索引值yyyyyyyy获取到线性地址

    3.2 windoes下的分页机制是如何使用的?

    80386处理器是32位处理器,寻址空间是4G,同时是多任务的,每个任务都有独立的4G的连续的线性寻址空间。
    windows将内存以4k大小为一页将物理内存划分成n个页块,同样windows会对每个任务的各个段也以4k大小划分成n个块,任务的页块与物理地址的页块之间有一个映射关系,这个映射是通过查找页目录和页表实现的。相当于每个任务都会有一个页表,页表中记录了线性地址与物理地址之间的关系,通过寻址找到线性地址后查找页表即可找到物理地址。
    将每个任务通过页表的方式隔离,即为windows的分页机制。

    4 windows的保护机制

    4.1 win32系统为什么找不到中断指令?

    win32系统是多任务系统,如果任一任务都可以操作中断程序,很容易引起系统的崩溃,所以win32系统提供了优先级和保护机制来避免任务越权执行有危险的操作。而在8086中的中断指令由win32系统实现,并通过动态链接库的形式由每个任务调用。

    4.2 中断、异常、自陷有什么区别?

    1.中断指的是程序被动停下来响应高优先级的代码再返回执行的过程。
    2.异常指的是程序遇到了不可忽略的错误时,处理器用与遇到中断同样的处理方法处理异常。
    3.自陷指的是程序主动停下来响应高优先级的代码再返回执行的过程。

    4.3 8086下或80386实模式下是如何处理中断和异常的?

    8086通过int n的方式调用中断,中断向量表存在0:0000h到0:0400h之间,每个中断包含4个字节,指向中断程序的地址。
    当引发int n中断的时候,从4*n处取到中断程序的地址,程序跳转到中断程序处执行,执行完后通过ret返回到原程序中断位置继续执行

    4.4 80386处理中断的流程?

    80386保护模式下引发中断n后,从IDTR中获取中断描述符表基址,通过索引值n*8取出中断n的中断描述符,从中断描述符中获取中断程序的地址xxxx:yyyyyyyy,经过线性转换后得到物理地址然后执行中断程序。还行完成后返回到原程序继续执行。

    4.5 windows是怎样做的保护异常?

    要搞懂这块需要做下课外工作,未完待续

    第一章术语总结:

    GDT,LDT
    GDTR:48位,全局段描述符寄存器,可获取全局段描述符表的地址
    LDTR:16位,局部段描述符寄存器,可获取局部段描述符表在GDTR中的偏移量
    
    TRx
    CRx
    
    RPL
    IDT:中断描述符表
    IDTR:48位,中断描述符寄存器,前32位为IDT在内存中的基址,后16位标识IDT的长度
    
    DPL:
    RPL:
    
    cli
    sti
    eflags
    IOPL
    
    Alaph计算机
    
    TSR程序:(Terminate-and-stay-resident)终止驻留程序,执行后进入内存,但什么都不做,在后台运行,通过热键的方式激活后,程序调出,运行后返回到其他程序。
    大多是dos下的比如:bios、显卡驱动、鼠标驱动、输入法、高端内存分配等。
  • 相关阅读:
    购买绝版书的好地方——淘宝
    ASP.NET MVC轻教程 Step By Step 1 ——入门
    ASP.NET MVC轻教程 Step By Step 2 ——View初探
    快速启动WebDev.WebServer的方法
    Surface RT使用手记
    ASP.NET MVC轻教程 Step By Step 3 ——使用ViewBag
    Asp.net MVC分页实例
    图示近四年来国外主流编程语言发展趋势
    ASP.NET MVC轻教程 Step By Step 4——Model、View和Controller
    Asp.net MVC使用KindEditor4
  • 原文地址:https://www.cnblogs.com/icestone/p/3147589.html
Copyright © 2020-2023  润新知