首页 > 其他分享 >认识8086处理器

认识8086处理器

时间:2024-07-04 13:57:54浏览次数:22  
标签:8086 16 认识 地址 内存 寄存器 处理器

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、内存、硬盘、显卡等,并提供一些基本的输入输出功能。

标签:8086,16,认识,地址,内存,寄存器,处理器
From: https://blog.csdn.net/2301_80926085/article/details/139055545

相关文章

  • 认识100种电路之降压电路
    在电子电路的世界里,降压电路扮演着至关重要的角色。【为什么电路需要降压电路】 首先,我们要明白,不同的电子设备和元件往往需要特定的电压来正常工作。比如,某些芯片可能需要5V的电压,而我们提供的电源可能是12V甚至更高。这时候,降压电路就派上用场了,它能够将过高的输入电......
  • VPX6U板卡:基于龙芯LS2K1000处理器的全国产板卡
       龙芯2K1000的6UVPX板卡是专为高性能计算和嵌入式应用设计的,这种类型的板卡采用了龙芯2K1000双核处理器,其主频范围在800MHz至1GHz之间。它支持高速串行总线,如PCIExpress(PCIe)和10GigabitEthernet,以及高密度I/O连接。以下是基于龙芯2K1000的6UVPX板卡的具体信息:......
  • 浅谈前置处理器之取样器超时
    浅谈前置处理器之取样器超时取样器取样器超时设置决定了JMeter等待取样器完成并接收响应的最大时间长度。如果在这个时间内未收到响应,取样器将标记该请求为超时错误。参数说明●在取样器超时的配置界面找到“Sampletimeout(inmilliseconds)进行设置。●超时值以毫秒......
  • 浅谈前置处理器之用户参数
    浅谈前置处理器之用户参数“用户参数”前置处理器是一个非常实用的功能,它可以在每个请求执行前动态地为HTTP请求等添加或替换变量值。本文档将详细介绍“用户参数”前置处理器的使用方法、特点以及与用户定义变量的区别。用户参数前置处理器简介用户参数前置处理器允许你......
  • 基于springboot用“异常处理器“捕获解决“数据库信息录入重复“的问题“SQLIntegrity
    前言 当我们编写后端时,会遇到一个问题,那就是:假如A用户向我们的数据库录入完登录信息后(姓名,账号等),B用户同样采用了一个相同的姓名提交了登录信息,那这个时候就不满足username的唯一约束,此时数据库就会报错例如报错如下:Duplicateentry'····'forkey'····'提示......
  • JAVA,认识类
    一、类?什么是类?官方文档解释:类(Class)是面向对象程序设计(OOP,Object-OrientedProgramming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。拥有共同属性抽象的集合称之为类白话:简单理......
  • 计算机组成原理——中央处理器
    功能和结构计算机组成架构:中央处理器cpu即包含运算器和控制器。细分为:ALU,寄存器,中断系统,CU。cpu组成结构运算器用于对数据的加工,实现算术运算和逻辑运算。其中包含:ACC累加器,MQ乘商寄存器,X通用寄存器,ALU算数逻辑单元控制器主要协调并控制计算机各个部件执行程序指令的......
  • 【深度学习】图形模型基础(3):从零开始认识机器学习模型
    1.引言机器学习,这一古老而又充满活力的领域,其历史可追溯至上世纪中叶。然而,直到20世纪90年代初,机器学习才开始展现出其广泛的应用潜力。在过去的十年里,机器学习更是迎来了前所未有的蓬勃发展,其应用范畴广泛,不仅在网络搜索、自动驾驶汽车、医学成像和语音识别等领域大放异彩......
  • 搭载飞腾FT2000+/64处理器全国产加固服务器
        搭载飞腾FT2000+/64,64核服务器平台的加固服务器是专为高安全性、高可靠性及能在严苛环境下稳定运行而设计的服务器产品。服务器采用国产飞腾处理器为核心,体现了自主可控的技术特点,广泛适用于政府、军事、航天等领域。   以下是我们自主研发的加固服务器的一......