寄存器(CPU工作原理)03 - 零基础入门学习汇编语言08

第二章:寄存器(CPU工作原理)03

 

让编程改变世界

Change the world by program


 

物理地址

CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间。 我们将这个唯一的地址称为物理地址。  

16位结构的CPU

概括的讲,16位结构描述了一个CPU具有以下几个方面特征: 1、运算器一次最多可以处理16位的数据。 2、寄存器的最大宽度为16位。 3、寄存器和运算器之间的通路是16位的。  

8086CPU给出物理地址的方法

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

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

自问自答:8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址~ [caption id="attachment_257" align="aligncenter" width="300"] 8086CPU如何用内部16位的数据转换成20位的地址[/caption]  

8086CPU读写内存时,发生了这么一些事:

CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;

段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;

地址加法器将两个16位地址合并成一个20位的地址;

 

地址加法器工作原理

  地址加法器合成物理地址的方法:物理地址=段地址×16+偏移地址 例如:8086CPU访问地址为123C8H的内存单元 [caption id="attachment_258" align="aligncenter" width="300"] 8086CPU访问地址为123C8H的内存单元[/caption]   由段地址×16引发的血案…… “段地址×16”有一个更为常用的说法就是数据左移4位。(二进制位) [caption id="attachment_259" align="aligncenter" width="300"] 进制转换[/caption]   我们通过观察移位次数和各种形式数据的关系:

一个数据的二进制形式左移1位,相当于该数据乘以2;

一个数据的二进制形式左移N位,相当于该数据乘以2的N次方;

地址加法器如何完成段地址×16的运算?没错,以二进制形式存放的段地址左移4位。

  一个馒头引发的分析…… 经过进一步的思考,我们可以看出:

一个数据的十六进制形式左移1位,相当于乘以16;

一个数据的十进制形式左移1位,相当于乘以10;

一个数据的X进制形式左移1位,相当于乘以X。

 

“段地址×16+偏移地址=物理地址”的本质含义

 

两个比喻说明:

说明“基础地址+偏移地址 = 物理地址” 的思想:第一个比喻 比如说,学校、体育馆同在一条笔直的单行路上(学校位于路的起点0米处)。 读者在学校,要去图书馆,问我那里的地址,我可以用几种方式描述这个地址? [caption id="attachment_260" align="aligncenter" width="300"] 段地址×16+偏移地址=物理地址[/caption] (1)从学校走2826m到图书馆。这2826可以认为是图书馆的物理地址。 (2)从学校走2000m到体育馆,从体育馆再走826m到图书馆。 第一个距离2000m是相对于起点的基础地址; 第二个距离826m是将对于基础地址的偏移地址。   说明“段地址×16+偏移地址=物理地址”的思想:第二个比喻 比如我们只能通过纸条来通信,读者问我图书馆的地址,我只能将它写在纸上告诉读者。 显然我必须有一张可以容纳 4 位数据的纸条才能写下2826这个数据: [caption id="attachment_261" align="aligncenter" width="235"] 段地址×16+偏移地址=物理地址[/caption]   不巧的是,没有能容纳4位数据的纸条,仅有两张可以容纳3位数据的纸条。 这样我只能以这种方式告诉读者2826这个数据: [caption id="attachment_262" align="aligncenter" width="261"] 段地址×16+偏移地址=物理地址[/caption]   8086CPU就是这样一个只能提供两张3位数据纸条的CPU。 [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LPOBVJBHIWMY']视频下载[/Downlink]

转载于:https://www.cnblogs.com/LoveFishC/archive/2010/11/02/3845977.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378895.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Anaconda下安装OpenCV和Tensorflow(最简洁高效的方法)

安装Tensorflow 1,打开Anaconda Navigator 2,手动创建tensorflow环境,这个和你的python版本号一致哈(方法一第一步之后,输入python即可查看当前的版本) 3,手动搜索并下载添加 4,…

使用FD_CLOEXEC实现close-on-exec,关闭子进程无用文件描述符

我们经常会碰到需要fork子进程的情况,而且子进程很可能会继续exec新的程序。这就不得不提到子进程中无用文件描述符的问题! fork函数的使用本不是这里讨论的话题,但必须提一下的是:子进程以写时复制(COW,C…

Anaconda中下载速度贼慢?

清华镜像 大致步骤如下: 1,windsR输入cmd,打开命令终端页面 输入conda config --set show_channel_urls yes 2,在相应的C盘目录下会生成.condarc文件 3,用记事本或者notepad打开进行替换 channels:- defaults show_c…

mysql创建表时出现1071_mysql 出现1071错误怎么办

mysql 出现1071错误的解决办法:该问题是由键值字段长度过长导致。mysql支持数据库表单一键值的最大长度不能超过767字节,超出这个长度即报错(见标题名称)。一般情况下,不会有键值字段的长度会超出该长度。但是需要注意的是,随着全…

srs rtmp从监听到接收到新连接的过程分析

:分析srs从启动开始的main入口开始。分析rtmp监听端口,然后到接收到新rtmp连接的过程分析。 目录一、流程图二、代码分析1、srs_main_server.cpp:main()2、srs_main_server.cpp:do_main()3、srs_main_server.cpp:run()4、srs_main_server.cpp:run_master…

加载一张照片,可选择是否另存为

加载一张照片,按下S键保存,ESC退出 加载一个灰度图(E:\Python-workspace\yanyu.png),显示图片按下’s’键保存(beyond.png)(保存后的路径和该程序所在路径一致)后退出,或者按下 ESC 键退出不保存 import cv2img cv2.imread(E:\…

RTP协议基本分析(RTSP、WebRTC使用)

目录1、介绍2、RTP3、格式4、RTP打包H2644.1、H264打包方式之Single NAL Unit4.2、H264打包方式之FU-A4.2.1、FU indication4.2.2、FU header4.2.3、第一个IDR帧的NALU第一个切片4.2.4、第一个IDR帧的NALU第二个切片4.2.5、第一个IDR帧的NALU最后一个切片5、RTP打包AAC5.1、AU-…

对照片进行边缘化处理,并将边缘化处理后的结果保存

对照片进行边缘化处理,并将边缘化处理后的结果保存 import cv2 from matplotlib import pyplot as plt img cv2.imread(E:\Python-workspace\OpenCV\OpenCV/water1.png,1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠&…

fastjson转换时有大括号或者冒号或者有中括号_[Python Basic] 字符串处理以及类型转换 1...

String Manipulation & Typecasting (1)1. 文本复制以及连接1.1 Multiply sign使用 multiply sigh/乘号* 来复制文本片段。乘号复制文本举例: print("Hi" * 3) # output: HiHiHi print("*" * 10)# output:**********1.2 连接1.2.1 使用 plu…

读《深入分析Java Web技术内幕》

这里这本书的预读章节,看完预读部分,解答了一些疑惑,也相信这是一本夯实Java Web架构体系的好书。 HTTP协议解析 开发一般使用firefox的firebug调试,这的确是一个利器,HTTP的请求头响应头一目了然。 浏览器缓存机制 当…

RTSP协议基本分析

目录一、介绍二、RTSP与HTTP三、RTSP推流基本过程1、OPTION 查询服务器端可用方法1.1、Client 请求1.2、Server 回复2、ANNOUNCE 发送媒体描述信息2.1、Client 请求2.2、Server 回复3、SETUP建立RTSP会话3.1、Client 请求(视频流)3.2、Server 回复&#…

找取照片上的25个特征点,并保存结果

找取照片上的25个特征点,并保存结果 import numpy as np import cv2 from matplotlib import pyplot as plt img cv2.imread(E:\Python-workspace\OpenCV\OpenCV/water1.png,1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠…

P2P技术详解(一):NAT详解——详细原理、P2P简介

目录1. IPv4协议和NAT的由来2. NAT的工作模型和特点2.1、NAT的概念模型2.2、一对一的NAT2.3、一对多的NAT2.4、按照NAT端口映射方式分类2.4.1全锥形NAT2.4.2限制锥形NAT2.4.3端口限制锥形NAT2.4.4对称型NAT3. NAT的限制与解决方案3.1、IP端到端服务模型3.2、NAT的弊端3.3、NAT穿…

显示照片的二维直方图

显示照片的二维直方图 import cv2 from matplotlib import pyplot as plt img cv2.imread(E:\Python-workspace\OpenCV\OpenCV/water1.png,1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示…

周五怎么表示 mysql_完美起航-MySQL找每个月最后一个星期五--函数定义与使用

数据库作业有一道题是这样子的:有一张名叫emp的表记录员工信息,其中有如下字段 HIREDATE 表示员工被雇用的日期:然后问题是这样的:q7.Show details of employee hiredates and the date of their first payday.(Paydays occur on…

silverlight学习总结【完】

以下内容是个人理解,不保证正确性。且假设使用C#,并且有一定的相关知识和XML基础。 silverlight是什么,能做什么 silverlight用XAML来做前端界面,用.NET或者JS作为程序脚本支持,在浏览器内外运行的应用。可以认为和FLA…

P2P技术详解(二):P2P中的NAT穿越(打洞)方案详解

目录1、内容概述2、反向链接技术:一种特殊的P2P场景(通信双方中只有一方位于NAT设备之后)3、基于UDP协议的P2P打洞技术详解3.1、原理概述3.2、典型P2P情景1: 两客户端位于同一NAT设备后面(即相同内网中)3.3…

显示照片的RGB直方图

显示照片的RGB直方图 import numpy as np import cv2 as cv from matplotlib import pyplot as plt img cv.imread(E:\Python-workspace\OpenCV\OpenCV/BEYOND.png,1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参…

mysql慢查询开启语句分析_mysql慢查询语句分析总结

我们经常会接触到MySQL,也经常会遇到一些MySQL的性能问题。我们可以借助慢查询日志和explain命令初步分析出SQL语句存在的性能问题通过SHOW FULL PROCESSLIST查看问题SHOW FULL PROCESSLIST相当于select * from information_schema.processlist可以列出正在运行的连…

P2P技术详解(三):P2P中的NAT穿越(打洞)方案详解(进阶分析篇)

目录1、NAT和NAPT2、NAT带来的问题3、P2P通信穿越NAT的技术、方法4、NAT穿越技术1:应用层网关4.1、原理4.2、限制5、NAT穿越技术2:中间件技术5.1、原理5.2、限制6、NAT穿越技术3:打洞技术(Hole Punching)6.1、原理6.2、方法6.2.1NAT行为类型与…