感觉有时学些忘些,记些笔记,免得总是翻书。
8086寻址:
段(Segment)寻址模式---段地址部分使用16位的段选择符指定,其中14位可以选择214即16384个段。段内偏移地址部分使用32位
的值来指定,因此段内地址可以是0~4GB。即一个段的最大长度可达4GB。程序中由16位的段和32位的偏移构成的48位地址或长指针称为一
个逻辑地址(虚拟地址)。80x86为段部分提供了6个存放段选择符的段寄存器:CS、DS、ES、SS、FS和GS。其中CS总是用于寻址
代码段,而堆栈段则专门使用SS段寄存器。在任何指定时刻由CS寻址的段称为当前代码段。此时EIP寄存器中包含了当前代码段内下一条要执行
指令的段内偏移地址。因此要执行指令的地址可表示成CS:[EIP]。由段寄存器SS寻址的段称为当前堆栈段。栈顶由ESP寄存器内容指定。因此
堆栈顶处地址是SS:[ESP]。
IA—32平台寄存器:
通用寄存器—8个32位寄存器(EAX, EBX, ECX, EDX, EDI, ESI, ESP, EBP),EAX、EBX、ECX、EDX可以通过16位和8位引
用,如AX为低16位,其中又分AL低8位,AH高8位。
段寄存器—6个16位寄存器
指令指针寄存器(EIP)
浮点数据寄存器—8个80位寄存器,用于浮点数学数据
控制寄存器—5个32位寄存器(CR0, CR1, CR2, CR3, CR4)
调试寄存器—8个32位寄存器,用于在调试处理器时包含的信息
处理器使用IDTR寄存器来定位IDT表的位置,IDT表可以驻留在线性地址空间的任何地方。个寄存器中含有IDT表32位的基地址和16位
的长度(限长)值,共48位。LIDT和SIDT指令分别用于加载和保存IDTR寄存器的内容。