80X86汇编语言程序设计教程

最新书摘:
  • hao
    2013-06-13
    分页机制把线性地址空间和物理地址空间分别划分为大小相同的块。这样的块称为页。然后建立线性页和物理页的映射。分页机制实现线性地址到物理地址转换。采用分页管理机制实现线性地址到物理地址的转换映射主要目的是便于实现虚拟存储器。不想段的大小可变,页的大小是固定的(一旦设定完成就不变,可以重新设定。)。根据程序的逻辑划分为段,根据实现虚拟存储的方便划分为页。一般页就4KB,所以每一页的边界地址必须是4K的倍数。。因此4G大小的地址空间被划分为1M个页,页的开始地址具有XXXXX000H的形式。由于页的大小为4KB,边界为4K的倍数。所以32位线性地址转换到32位物理地址的过程中,低12为可以保持不变,也就是说线性地址的低12位就是物理地址的低12位。也就是线性地址高20位到物理地址高20位之间的转换。
  • hao
    2013-06-13
    为了实现有效的保护,一个任务通常在不同特权级下使用不同的堆栈段。一个任务可能有4个堆栈段,对应四个特权级。
  • hao
    2013-06-13
    描述中断/异常处理程序的入口。
  • hao
    2013-06-13
    任务门指示任务。任务门内的选择子必须指向GDT中的任务状态段TSS段描述符,门中的偏移无意义。
  • hao
    2013-06-13
    调用门描述某个子程序的入口,调用门内的段选择子必须指向代码段描述符,调用门内的偏移是对应代码段的偏移。利用段间调用指令call,通过调用门可实现任务内从外层特权到内层特权级。
  • hao
    2013-06-13
    门描述符不是为了描述某种内存段,而是描述控制转移的入口点。好比通向另一个代码段的门。通过这种门,可实现任务内特权级的变换和任务间的切换。这种门描述符也称为控制门。
  • hao
    2013-06-13
    每个任务都有一个任务状态段。用于保存任务的有关信息,在任务内变换特权级和任务切换时,要用到这些信息。为了控制任务内发生特权切换和控制任务切换,一般通过控制门进行这些转移。
  • hao
    2013-06-13
    80386有4个32位寄存器,分别CR0 ~ CR3。CR1被保留,不能被使用,供今后开发处理器使用CR0中位0用PE标记,位31用PG标记,这两个控制分段和分页管理机制的操作,被称为保护控制位。(PE = 0,实方式。PE = 1处理器运行于保护模式。PG = 0,禁用分页,线性地址直接当物理地址使用。PG = 1,启动分页。)CR2,CR3由分页管理机制使用。CR2用于页异常时报告出错信息。CR3用于保存页目录的起始物理地址。由于目录是对齐的,所以仅高20位有效,低12位保留未用。
  • hao
    2013-06-13
    段选择子长16位,高13位是描述符索引所为描述符索引就是指描述符在描述符表中的序号。段选择子的第2位是引用描述符表指示位,标记为TI,TI = 0指示从GDT读取描述符。TI = 1从LDT读取描述符。
  • hao
    2013-06-13
    一个任务会涉及多个段,每一个段需要一个描述符来描述,为了便于组织和管理,把描述符组织成线性表。称为描述符表。LDT,GDT,IDT(局部,全局,中断描述符表).整个系统中,GDT和IDT只有一张,LDT可以有若干张,每个任务可以有一张。每个任务都有LDT,含有该任务的代码段,数据段和堆栈段,也包含一些门描述符。随着任务的切换,当前LDT也切换。GDT含有每个任务可以访问的段的描述符,通常包含操作系统所使用的代码段,数据段和堆栈段的描述符,也包含多种特殊数据段的描述符。在任务切换时,并不切换GDT。
  • hao
    2013-06-13
    段是实现虚拟地址到线性地址转换机制的基础。每个段由三个参数定义:段基址,段界限,段属性。段基址规定线性地址空间中段的开始地址。
  • hao
    2013-06-13
    Ring 0 ——Ring 3.任何一个任务在任何时候,总在4个特权级之一下运行。在特定时刻的特权级称为当前特权级CPL。每一个任务试图访问一个段时,就把CPL与要访问的段的特权级进行比较,以决定是否能访问。
  • hao
    2013-06-13
    通过把每个任务放置在不同的虚拟地址空间的方法来实现任务的隔离,达到应用程序之间的保护。因此两个不同的任务,尽管虚拟存储单元相同,但实际的物理单元地址可以不同。
  • hao
    2013-06-13
    由于段的起始地址必须是16的倍数。所以:物理地址 = 段值 * 16 + 偏移(段值 << 4 + 偏移)
  • hao
    2013-06-13
    8086/8088 CPU有20根地址线,可寻址的物理地址空间为1M(2^20)字节。系统存储器以字节为单位构成存储单元,存储单元的物理地址长20位。范围是00000H到FFFFFH。根据需要把1M字节物理地址空间划分为若干个逻辑段。因为段寄存器是16位,所以逻辑段的大小为64K。