寄存器(cpu工作原理)

2023-05-16

来源:王爽老师的《汇编语言》。

1、一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。

区别:

内部总线实现CPU内部各个器件之间的联系。

外部总线实现CPU和主板上其它器件的联系。

8086CPU有14个寄存器 它们的名称为:

   AX、BX、CX、DX、SI、DI、SP、BP、

   IP、CS、SS、DS、ES、PSW。

8086CPU所有的寄存器都是16位的,可以存放两个字节,一个字节8位。

AX、BX、CX、DX 通常用来存放一般性数据被称为通用寄存器。

一个16位寄存器所能存储的数据的最大值为多少? 

因为每一位存放的数据是0或1,那么最大的数值自然就是 1111 1111 1111 1111(2),也就是2^16-1。

 

2、通用寄存器(重点)

8086上一代CPU中的寄存器都是8位的,为保证兼容性,

这四个寄存器都可以分为两个独立的8位寄存器使用。
AX可以分为AH和AL;
BX可以分为BH和BL;
CX可以分为CH和CL;
DX可以分为DH和DL。

AX的低8位(0位~7位)构成了AL寄存器,高8位(8位~15位)构成了AH寄存器。

AH和AL寄存器是可以独立使用的8位寄存器,如果当成是8位寄存器使用,那么他们就是独立的,没有任何关系。

一个8位寄存器所能存储的数据的最大值是多少?二进制数值 1111 1111 ,也就是 2^8-1。

3、字在寄存器中的存储

注意:在进行数据传送或运算时,要注意指令的操作数的位数要匹配。

4、物理地址的表示(重点)

CPU访问内存单元时要给出内存单元的地址,所有的内存单元构成的存储空间是一个一维的线性空间。

我们将这个唯一的地址称为物理地址。

不同的CPU有不同的形成物理地址的方式。

(1)16位结构的CPU

8086内部为16位结构,它只能传送16位的地址,表现出的寻址能力却只有64K。

8086外部有20位地址总线,可传送20位地址,寻址能力为1M。

那么,8086CPU如何用内部16位的数据,转换成20位的地址呢?

8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。

段地址+偏移地址 -> 地址加法器 -> 20位的物理地址。

地址加法器合成物理地址的方法:段地址×16+偏移地址=物理地址

“段地址×16”有一个更为常用的说法就是数据左移4位。(二进制位)

二进制的数据左移4位,意味着乘以2^4=16。

这样做的目的主要是为了弥补内部总线16位的缺陷而设计的。

5、关于段空间

内存没有分段,段的划分来自于CPU,

由于8086CPU用“(段地址×16)+偏移地址=物理地址”的方式给出内存单元的物理地址,

使得我们可以用分段的方式来管理内存。

以后,在编程时可以根据需要,将若干地址连续的内存单元看作一个段,

用段地址×16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。

(1)段地址×16 必然是 16的倍数,所以一个段的起始地址也一定是16的倍数;

(2)偏移地址为16位,16 位地址的寻址能力为 64K,所以一个段的长度最大为64K。

CPU可以用不同的段地址和偏移地址形成同一个物理地址。

如果给定一个段地址,仅通过变化偏移地址来进行寻址,最多可以定位多少内存单元?

因为偏移地址16位,变化范围为0~FFFFH,仅用偏移地址来寻址最多可寻64K个内存单元。

比如:给定段地址1000H,用偏移地址寻址,CPU的寻址范围为:10000H~1FFFFH。

6、地址的描述

在8086PC机中,存储单元的地址用两个元素来描述。即段地址和偏移地址。

“数据在21F60H内存单元中。”对于8086PC机的两种描述:

(a)数据存在内存2000:1F60单元中;

(b)数据存在内存的2000段中的1F60H单元中。

可根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。

 

7、段寄存器就是提供段地址的。

8086CPU有4个段寄存器: CS、DS、SS、ES。

CS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。

CS为代码段寄存器,IP为指令指针寄存器。

在 8086CPU 加电启动或复位后( 即 CPU刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H。

即在8086PC机刚启动时,CPU从内存FFFF0H单元中读取指令执行。

FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。

8、修改CS,IP

mov指令不能用于设置CS、IP的值,8086CPU没有提供这样的功能。

8086CPU为CS、IP提供了另外的指令来改变它们的值:转移指令

JMP 段地址:偏移地址

JMP 2AE3:3

功能:用指令中给出的段地址修改CS,偏移地址修改IP。CS = 2AE3H, IP = 0003H。

仅修改IP的内容:

jmp 某一合法寄存器

jmp ax   (类似于 mov IP,ax)

功能:用寄存器中的值修改IP。

8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。

9、关于debug指令(Win7没有这个指令,XP才有)

R命令查看、改变CPU寄存器的内容;

D命令查看内存中的内容;

E命令改写内存中的内容;

U命令将内存中的机器指令翻译成汇编指令;

T命令执行一条机器指令;

A命令以汇编指令的格式在内存中写入一条机器指令。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

寄存器(cpu工作原理) 的相关文章

  • Matlab深度学习上手初探

    文章目录 简介实例网络设计代码运行结果 参考文献 简介 Matlab降低了深度神经网络的开发难度 xff0c 可以通过拖拽的模式设计网络 xff0c 甚至训练的过程也是GUI操作 实例 以高光谱图像分类为例 xff0c 参考文献1 构造一个
  • Julia学习笔记

    文章目录 简介安装与配置包的管理安装与删除包设置代理与更换镜像离线安装包 性能测试运行效率平稳性分析实验代码FFT加噪 实验结果Windows 10Ubuntu 16 04 LTS 其它资料 简介 Julia 是一个面向科学计算的高性能动态
  • Julia深度学习

    文章目录 Julia中的深度学习框架Flux性能对比LeNet5评估结果GPU CUDA 11 下的测试结果GPU CUDA 10 下的测试结果CPU单线程CPU多线程 18个线程 Matlab实现PyTorch实现Flux实现 MNIST
  • 常见评价指标

    文章目录 简介信息检索查准率查全率F measure虚警率漏检率 分类准确率混淆矩阵Kappa系数 简介 整理一些常见的评价指标 信息检索 信息检索是指从一些相关 relevant 和不相关 irrelevant 的信息中检索出相关信息 为
  • 免费拯救你误删的文件(Windows, Linux, Mac)

    简介 如果你的文件被误删了 别着急 做好如下准备 首先 不要往被删除文件所在的磁盘分区创建 复制新文件如果是Windows系统 那么你基本上可以在回收站里找到如果是Linux系统 如果是右击删除的 也可以到回收站里看看 但是如果是用 rm
  • TouchGFX使用心得(5)——标签的中文显示问题

    相信第一次接触ToughGFX的朋友 xff0c 可能会遇到 xff0c 标签的 中文显示是问号的问题 xff0c 这个问题在模拟器上运行的时候 xff0c 他是显示的问号 xff0c 但是在stm32运行的时候 xff0c 问号的地方不会
  • 编程语言效率对比

    目录 简介测试环境 矩阵乘法实验结果实验代码 简介 主要测试Matlab Python Julia 和C下的基本数学运算效率 测试环境 硬件测试环境 CPU Intel Xeon E5 2696 v3 2 30GHz 36内存 64 GiB
  • 基于深度学习的合成孔径雷达自聚焦

    文章目录 引言什么是合成孔径雷达什么是自聚焦 经典自聚焦方法基于机器学习的方法基于极速学习机的方法基于深度学习的SAR自聚焦 代码附录 引言 本文全面介绍合成孔径雷达自聚焦概念和方法 想获取更为详尽的描述 xff0c 请参考以下几篇论文 如
  • IEEE 论文排版之LaTeX模板

    说明 主要介绍IEEE LaTeX论文模板的使用 获取模板 IEEE的所有期刊 会议 杂志的模板都可以从 IEEE Template Selector 页面获得 xff0c 以期刊 IEEE Transactions on Geoscien
  • 基于 YOLOv2 Tiny的车牌检测

    文章目录 YOLO安装源码获取安装 车牌检测转换样本格式修改网络其它 训练可视化训练测试 YOLO安装 源码获取 从 darknet 下载 span class token function git span clone https git
  • docker 权限问题 Got permission denied while trying to connect to the Docker daemon socket at 。。。

    在用户权限下docker 命令需要 sudo 否则出现以下问题 通过将用户添加到docker用户组可以将sudo去掉 xff0c 命令如下 sudo groupadd docker 添加 docker 用户组 sudo gpasswd a
  • NAT模式,主机无法ping虚拟机,虚拟机可以ping主机

    原因 xff1a 虚拟机指定的虚拟网络和本机网络连接中的虚拟网卡未对应 xff0c 或网段不一致 解决 xff1a 在网络连接中找用于虚拟NAT网络下的虚拟网卡 xff08 我这里是VMnet2 xff0c 也有可能是VMnet8 xff0
  • zeromq 利用protobuf通信

    利用zeromq进行编程时候 xff0c 服务器和客户端的通信 xff0c 利用protobuf时候 之前的项目里面 xff0c 需要对protobuf进行编码解码 其实并不需要如此繁琐 xff0c 直接利用 protobuf里面的 Mes
  • 游戏升级之路

    七十一雾央原创 转载请注明 http blog csdn net hust xy 楼主学习编程有两年了 xff0c 决定向游戏发展大概就是半年前了 xff0c 在这里总结一下游戏方面的学习经历过 xff0c 给初学的朋友们参考下 xff0c
  • windows7远程桌面访问ubuntu16.04

    1 安装xrdp sudo apt get install xrdp xff12 安装vnc4server sudo apt get install vnc4server 3 安装xubuntu desktop sudo apt get i
  • <1> GCC的源码安装

    当我们安装好操作系统基本自带了gcc的编译器 由于版本和root 权限的问题 我们希望在自己的目录下创建一个相对独立的environment 这样我们更新起来也会比较方便 要安装基本gcc 首先要gmp mpfr和mpc xff08 ftp
  • TouchGFX使用心得(8)——通配符的中文显示(呕心沥血)

    这里写目录标题 前言方法一需要注意的问题 xff08 非常重要 xff01 xff01 xff01 xff01 xff09 方法二官方文档具体操作加载二进制文件通配符的显示放入stm32 总结 前言 通配符的中文的显示是我一直很疑惑的 xf
  • 9月10日美团网2014校招研发笔试哈尔滨站

    1 链表翻转 给出一个链表和一个数k xff0c 比如链表1 2 3 4 5 6 xff0c k 61 2 xff0c 则翻转后2 1 4 3 6 5 xff0c 若k 61 3 翻转后3 2 1 6 5 4 xff0c 若k 61 4 x
  • 2014校园招聘京东软件开发类笔试(完整版)

    时间 xff1a 2013 9 10 2013 10 8 地点 xff1a 四川大学 天津大学 职位 xff1a 软件开发工程师岗 语言 xff1a java 1 A 2 C 3 D 4 B 5 A 二 1 B 三1 D 2 B 3 C 4
  • 阅读科研文献心得分享(二)

    心得一 每天还保持读至少2 3篇的文献的习惯 读文献有不同的读法 但最重要的自己总结概括这篇文献到底说了什么 xff0c 否则就是白读 读的时候好像什么都明白 xff0c 一合上就什么都不知道 这是读文献的大忌 xff0c 既浪费时间 xf

随机推荐

  • 云数据库怎么挑选

    from http www chinacloud cn show aspx id 61 13222 amp cid 61 17 将数据库服务器在IaaS云上运行好吗 xff1f 或者应该转换成PaaS选择 xff1f 数据库即服务的选择可能
  • C# FTP操作(上传、下载等……)

    因为工作中经常涉及到FTP文件的上传和下载 xff0c 每次有这样的需求时都要重复编写相同的代码 xff0c 后来干脆整理一个FTPClass xff0c 这样不仅方便自己使用 xff0c 也可以共享给部门其它同事 xff0c 使用时直接调
  • 通过tasksel一键下载lamp(未成功)

    首先可以通过apt安装tasksel 安装 xff1a sudo apt install tasksel 通过taskel的方式安装lamp server全包 taskel的安装方式和apt get的有类似但是还是有区别个人觉得他像是apt
  • qemu创建快照后删除快照导致qemu crashed的BUG

    问题描述 启动一个虚拟机 创建三个快照 删除第一个快照时报错 合并磁盘失败 通过测试 创建虚拟机 ubuntu1604 win7 启动虚拟机 创建两个快照 删除第一个快照 瘦终端自自动关闭 vdsm报错如下 2018 07 20 17 00
  • 群晖docker容器内配置ubuntu远程桌面访问

    群晖docker容器内配置ubuntu远程桌面访问 当希望在群晖docker内的ubuntu开启远程桌面访问时 xff0c 和一般云服务器桌面安装方式还是有所区别 这里ubuntu的版本为14 04 LTS xff0c 由于nas性能较弱
  • Elasticsearch 7.6.0 最详细安装及配置(HA)安装与启动

    Elasticsearch 7 6 0 最详细安装及配置 xff08 HA xff09 安装与启动 Elasticsearch是一个非常好用的搜索引擎 xff0c 和Solr一样 xff0c 他们都是基于倒排索引的 今天我们就看一看Elas
  • python装饰器

    今天看了一些函数装饰器的知识 xff0c 第一遍没看懂 xff0c 后来才一点点弄明白 首先 xff0c 函数也是对象 xff0c 所以可以返回函数 def hello func func是函数名 def h xff1a 在函数内部的函数
  • 杀死XVNC进程

    0 重设密码 root 64 yqrh5u2 vncpasswd Password Verify root 64 yqrh5u2 1 xff0c 启动和kill vncserver root 64 yqrh5u2 vncserver 1 N
  • Winform布局与控件自适应分辨率以及防止错位

    我们在开发winform时 xff0c 在屏幕分辨率显示设置100 下开发系统界面 xff0c 但是有的同学的分辨率缩放设置是125 甚至 150 xff0c 这时候我们的系统界面默认就会错位 xff0c 导致效果体验极差 接下来我们来看效
  • 查询性能优化的十条建议

    三个原则 1 单行访问是很慢的 最好读取的块中能尽可能包含多的所需要的行 xff0c 使用索引可以创建位置引用以提升效率2 按顺序访问范围数据是很快的 lt 原因一 gt 顺序I O不需要多次磁盘寻道 xff0c 比随机I O要快很多 lt
  • Linux 使用npm安装pnpm成功后提示“-bash: pnpm: command not found“

    前提 xff1a 安装好nodejs xff0c 并且使用以下命令创建了软连接 xff08 报错也是由于这个原因 xff09 建立node软链接 ln s usr local nodejs bin node usr local bin 建立
  • android studio编译时提示error please select android sdk

    在做项目时协同开发时遇到的问题 更新工程后编译提示该错误 错误原因是 xff0c 有人上传了修改的 iml文件 xff0c 此处为app iml将 lt orderEntry type 61 34 jdk 34 jdkName 61 34
  • CPU主频频率越高,手机运行速度就越快吗?

    本文链接 xff1a https blog csdn net openkado article details 24087305 问 xff1a CPU频率越高 xff0c 手机速度就越快吗 xff1f 1 7GHz处理器的手机肯定比1 2
  • 多核编程与单核多线程编程

    并发 xff1a 时间段内有很多的线程或进程在执行 xff0c 但何时间点上都只有一个在执行 xff0c 多个线程或进程争抢时间片轮流执行 并行 xff1a 时间段和时间点上都有多个线程或进程在执行 单核cpu的话只能是并发 xff0c 多
  • 多线程与单核cpu,多核cpu概念

    1 多线程在单核和多核CPU上的执行效率问题的讨论 a1 多线程在单cpu中其实也是顺序执行的 xff0c 不过系统可以帮你切换那个执行而已 xff0c 其实并没有快 xff08 反而慢 xff09 多个cpu的话就可以在两个cpu中同时执
  • 多CPU,多核,多进程,多线程以及进程和线程的简单理解以及区别

    当面临这些问题的时候 xff0c 有两个关键词无法绕开 xff0c 那就是并行和并发 首先 xff0c 要先了解几个概念 xff1a 1 进程是程序的一次执行 2 进程是资源分配的基本单位 3 一个进程可以包括多个线程 4 在单CPU计算机
  • 并行、并发,两者的区别

    并发和并行相似但又是两个不同的概念 xff0c 并行是指两个或者多个时间在同一时刻发生 xff0c 就好比如多个程序同时运行 而并发是指两个或者多个时间在同一时间间隔内发生 在多道程序环境下 xff0c 并发性是指在一段时间内宏观上有多个程
  • Ubuntu VNC安装与遇到的问题

    Linux下VNC server可选的很多 xff0c vnc4server tightvnc xff0c 我更喜欢tigervnc unity桌面环境在vnc中不能正常使用 xff0c 我翻遍互联网还是没找到很好的解决办法 xff0c 退
  • CPU的主频,总线频率和L2缓存对电脑的性能有哪些影响

    CPU是Central Processing Unit的缩写 xff0c 即中央处理器 CPU发展至今 xff0c 其中所集成的电子元件也越来越多 xff0c 上万个晶体管构成了CPU的内部结构 那么这上百万个晶体管是如何工作的呢 xff1
  • 寄存器(cpu工作原理)

    来源 xff1a 王爽老师的 汇编语言 1 一个典型的CPU由运算器 控制器 寄存器等器件组成 xff0c 这些器件靠内部总线相连 区别 xff1a 内部总线实现CPU内部各个器件之间的联系 外部总线实现CPU和主板上其它器件的联系 808