《x86汇编语言 从实模式到保护模式》学习实验笔记【02】

Intel 8086处理器

8086是Intel公司于1978年推出的第一款16位的处理器,是整个IA32架构的开山鼻祖。后续的处理器全部向前兼容8086,所以我们学习汇编语言和处理器体系结构,必须要从8086这款芯片开始。

字节、字、双字、四字

x86体系中:

  • 一个字节是八个比特位【1Byte=8Bits】
  • 一个字(Word)是两个字节【1Word=2Bytes】
  • 一个双字(DWord)是两个字,即四个字节【1DWord=4Bytes】
  • 一个四字(QWord)是两个双字,四个字,即八个字节【1QWord=8Bytes】

检测点2.1答案

  1. 一个字含有(2)个字节和(16)比特?一个双字含有(4)个字节、(2)个字和(32)个比特?
  2. 二进制数10000000中,位(7)的那个比特是“1”,也就是第(8)位。它是最低位还是最高位?最高位。
  3. 一个存储器的容量是16个字节,地址范围为(0)~(15)。用该寄存器保存字数据时,可存放(8)个字,这些字的地址分别是(0、2、4、6、8、0xA、0xC、0xE),若是保存双字,则可存放(4)个双字,地址分别是(0、4、8、0xC)。

检测点2.2答案

在内存中,指令和数据一模一样,都是无差别的数。如图2-6所示,假如处理器访问内存时是按照低端字节序的,那么,从地址0x0008处取出一个字时,该字的值为(0xA3D8)。
《x86汇编语言 从实模式到保护模式》学习实验笔记【02】

通用寄存器

8086属于CISC架构,所以其内部的通用寄存器个数不多,只有8个16位的通用寄存器(AX、BX、CX、DX、SI、DI、BP、SP),如下图所示:
《x86汇编语言 从实模式到保护模式》学习实验笔记【02】

内存分段机制和段寄存器

CPU若要访问内存单元,最终使用的都是真实的内存地址,这种地址我们称之为物理地址。在8086处理器上,提供了20位地址线。换句话说,8086CPU的物理地址是20位的。为解决重定位问题,采用了分段机制。一个内存单元的物理地址被表示为“段地址:偏移地址”,而这种组合形式就被称之为逻辑地址。

8086CPU在硬件一级上为逻辑地址提供了支持,共有4个段寄存器:代码段寄存器(Code Segment, CS)、数据段寄存器(Data Segment,DS)、附加段寄存器(Extra Segment)和堆栈段寄存器(Stack Segment,SS)。在访问内存中的数据之前,必须先设置好DS寄存器。而CS和IP共同形成逻辑地址去获取待执行的指令。

两个16位的寄存器组合,如何形成一个20位的物理地址呢?8086CPU在形成物理地址时,首先将段寄存器的内容左移4位,形成20位的段地址,之后再加上16位的偏移地址,最终得到20位的物理地址。

由于8086是20位的地址线,所以其可访问的物理地址空间大小为1MB。由于段寄存器的内容占据20位地址的高16位,所以在段空间不重叠的情况下,最多可以将1MB的内存空间分成65536个段。此时每一个段的大小为16个字节。

由于偏移地址也占16位,所以每一个段的最大长度是216=64KB。这样的话,如果不允许段之间重叠,那么1MB的内存空间只能被划分为16个段。

同时需要指出的是,由于段寄存器左移4位形成段基址,所以每个段都是按16字节对齐的。此外,由于段的划分非常自由,所以同一个物理地址,实际上对应着多个逻辑地址。

检测点2.3答案

  1. INTEL 8086处理器有(8)个16位通用寄存器,分别是(AX、BX、CX、DX、SI、DI、SP、BP)。其中,有些还可以分开来作为两个独立的8位寄存器来用,这几个8位的寄存器分别是(AL、AH、BL、BH、CL、CH、DL、DH)。
  2. 选择题(可多选):INTEL 8086处理器取指令时,使用段寄存器(A)和指令指针寄存器(C)。方法是,将段寄存器的值(DF),加上指令指针寄存器的当前值,形成物理地址访问内存。
    A.CS B.DS C.IP D.左移4位 E.右移4位 F.乘以16 G.除以10H
  3. 物理地址132FEH对应的逻辑地址是(可多选):ABCDF
    A.132FH:000EH B.1300H:02FEH C.1000H:32FEH D.1320H:00FEH
    E.102FH:03E0H F.0FE0H:34FEH

第二章习题答案

  1. 在段与段之间互不重叠的前提下,1MB内存可以完整地划分为多少个16KB的段?
    答案: 2(20-14)=26=64个
  2. 数据段寄存器DS的值为25BCH时,计算INTEL 8086可以访问的物理地址范围。
    25BC0H~35BBFH