认识8086处理器

8086处理器是英特尔(Intel)在1978年推出的一款16位微处理器,它是x86架构以及计算机科技发展史的重要里程碑。如今我们学习x86汇编绕不开8086处理器。

通用寄存器

8086处理器有八个十六位通用寄存器:AX BX CX DX SI DI BP SP

AX BX CX DX 四个寄存器又可分为八个八位处理器。以AX为例。AX的高八位是寄存器AH,低八位是寄存器AL。

  • AX:16位寄存器,可以分为两个8位寄存器,高八位是AH,低八位是AL。
  • BX:16位寄存器,可以分为两个8位寄存器,高八位是BH,低八位是BL。
  • CX:16位寄存器,可以分为两个8位寄存器,高八位是CH,低八位是CL。
  • DX:16位寄存器,可以分为两个8位寄存器,高八位是DH,低八位是DL。

当我们修改16位寄存器中的8位寄存器时,整个16位寄存器的值都会改变。例如,当我们将AX寄存器的AL部分从0x12更改为0x34,那么AX寄存器的值将从0x0012变为0x00l。同理,我们更改AX寄存器时AL与AH也会发生相应改变。

字节序

内存由字节单元组成,8086有16根数据线,所以在写入内存时cpu会将16位数据拆成两个8位。当我们写入一个字时,如果低字节写入内存的低地址单元。高字节写入内存的高地址单元。那么,我们称为小端字节序。如果低字节写入内存的高地址单元。高字节写入内存的低地址单元。那么,我们称为大端字节序。

读取时也是如此,如果读取一个16位数据,两个内存单元的数据也会被依次取出,在数据线上合并。我们学习的8086处理器采用的是小端字节序

内存访问

8086处理器有20根地址线,可以寻址1,048,576(2的20次方)个不同的内存单元。每个内存位置可以存储一字节,1MB = 1024KB,每个KB等于1024字节。所以,8086处理器可以访问大约1MB的内存空间。 

8086处理器使用分段内存模型,这意味着内存被分为四个段,数据段,代码段,堆栈段与附加段。每个段可以是64KB大小。段由段寄存器指定其基地址。

  • 代码段(Code Segment)由CS(Code Segment)寄存器指定。
  • 数据段(Data Segment)由DS(Data Segment)寄存器指定。
  • 堆栈段(Stack Segment)由SS(Stack Segment)寄存器指定。
  • 附加段(Extra Segment)由ES(Extra Segment)寄存器指定。 

8086处理器的地址线为20位,但段寄存器为16位,那么段寄存器如何存储地址呢?

在存储时寄存器会将地址右移四位存储如地址 0x55AA0(0x表示数字为16进制)会存储为 0x55AA。所以并非所有物理地址都可作为段地址,段地址的低四位需要为0。为了访问任意内存地址,除了段寄存器提供的基址外,还需要一个16位的偏移量。这个偏移量通常由指令或数据操作的一部分提供。对于代码段,8086处理器单独使用一个16位寄存器 IP 存储下一条指令的偏移地址。

在内存访问中,我们通过将段寄存器的值左移4位(相当于乘以16或2的4次方)来扩展到20位,然后加上16位的偏移量来计算的。

公式: 物理地址=(段基址<<4)+偏移量

假设CS寄存器的值为0x1234,IP寄存器的值为0x5678,那么当前指令的物理地址将是: 物理地址 = ( 0x1234<<4 ) + 0x5678 = 0x179B6。

地址空间分配

8086处理器有20根地址线,可以访问从 0x00000~0xFFFFF 的内存单元,从地址上看这些内存单元是连续的,而实际上它们并不是物理上的整体。

通常情况下,地址范围为 00000~9FFFF 是我们所说的内存,A0000~EFFFF 映射的是外设的接口,处理器通过向这块内存读取或写入完成对外设的访问。F0000~FFFFF 则是RAM上面烧录着BIOS。BIOS负责初始化计算机的硬件组件,如CPU、内存、硬盘、显卡等,并提供一些基本的输入输出功能。

  • 89
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

knight-n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值