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、物理地址的表示(重点)

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

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

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

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

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

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

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

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

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

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

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

4、关于段空间

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

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

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

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

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

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

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

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

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

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

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

5、地址的描述

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

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

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

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

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

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

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机开机后执行的第一条指令。

7、修改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指向的内容当作指令执行。

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

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

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

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

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

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

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

个人总结: 本章的重点是寄存器的认识(划分为高八位,低八位)和物理地址的表示,以及段空间的概念认识。

汇编语言学习——第二章 寄存器(CPU工作原理)的更多相关文章

  1. [汇编语言]-第二章寄存器(CPU工作原理)

    1- 对于汇编程序员来说,CPU中主要的部件是寄存器,这些寄存器是:AX BX CX DX SI DI SP BP IP CS SS DS ES PSW. 2- 8086CPU所有寄存器都是16位的, ...

  2. 小甲鱼汇编语言006第二章 寄存器(CPU工作原理)01

    http://baidu.ku6.com/watch/09215216064281951074.html?page=videoMultiNeed

  3. 计算机原理学习(1)-- 冯诺依曼体系和CPU工作原理

    前言 对于我们80后来说,最早接触计算机应该是在95年左右,那个时候最流行的一个词语是多媒体. 依旧记得当时在同学家看同学输入几个DOS命令就成功的打开了一个游戏,当时实在是佩服的五体投地.因为对我来 ...

  4. (转)计算机原理学习(1)-- 冯诺依曼体系和CPU工作原理

    原文:https://blog.csdn.net/cc_net/article/details/10419645 对于我们80后来说,最早接触计算机应该是在95年左右,那个时候最流行的一个词语是多媒体 ...

  5. Linux内核设计(第二周)——操作系统工作原理

    Linux内核设计(第二周)--操作系统工作原理 by苏正生 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...

  6. 「MoreThanJava」一文了解二进制和CPU工作原理

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  7. Android艺术开发探索第四章——View的工作原理(下)

    Android艺术开发探索第四章--View的工作原理(下) 我们上篇BB了这么多,这篇就多多少少要来点实战了,上篇主席叫我多点自己的理解,那我就多点真诚,少点套路了,老司机,开车吧! 我们这一篇就扯 ...

  8. oracle学习 第二章 限制性查询和数据的排序 ——03

    这里.我们接着上一小节2.6留下的问题:假设要查询的字符串中含有"_"或"%".又该如何处理呢? 開始今天的学习. 2.7  怎样使用转义(escape)操作符 ...

  9. 《Android开发艺术探索》读书笔记 (4) 第4章 View的工作原理

    本节和<Android群英传>中的第3章Android控件架构与自定义控件详解有关系,建议先阅读该章的总结 第4章 View的工作原理 4.1 初始ViewRoot和DecorView ( ...

随机推荐

  1. Java随机数生成原理--转稿

    1.Math库里的static(静态)方法random() 该方法的作用是产生0到1之间(包括0,但不包括1)的一个double值. double rand = Math.random(); 2.通过 ...

  2. VC MFC 屏蔽ESC和ENTER键关闭对话框

    方法一: 窗体头文件中加入: protected: virtual BOOL PreTranslateMessage(MSG* pMsg); // PreTranslateMessage是消息在送给T ...

  3. qt学习:信号,槽

    [C.GUI.Qt.4编程(第二版)](加)布兰切特,(英)萨默菲尔德.扫描版[学习库www.xuexi111.com].pdf 信号和槽是Qt编程的基础,它可以让各种对象联系在一起. 1. 使用co ...

  4. USACO Section 5.1 Musical Themes(枚举)

    直接枚举O(n^3)会TLE,只要稍微加点优化,在不可能得到更优解时及时退出.其实就是道水题,虽说我提交了6次才过= =..我还太弱了 -------------------------------- ...

  5. 百度editor调用【图片上传阿里云】

    百度editor调用简单,但是图片和文件上传阿里云就有点难度了.下面我详细说一下. 百度富文本编辑器下载地址:http://ueditor.baidu.com/website/download.htm ...

  6. hdu 4888 Redraw Beautiful Drawings 网络流

    题目链接 一个n*m的方格, 里面有<=k的数, 给出每一行所有数的和, 每一列所有数的和, 问你能否还原这个图, 如果能, 是否唯一, 如果唯一, 输出还原后的图. 首先对行列建边, 源点向行 ...

  7. python cmd命令调用

    关于python调用cmd命令: 主要介绍两种方式: 1.python的OS模块. OS模块调用CMD命令有两种方式:os.popen(),os.system(). 都是用当前进程来调用. os.sy ...

  8. mysql的索引问题

    注意:索引一般适合用于经常查询的数据,可以提高查询效率:但是不适合用于经常用到增.删.改的数据:会影响效率低. 1.unique key->(唯一索引)在一张表里可以有多个,起到约束的作用:避免 ...

  9. MRC下单例模式的内存问题与ARC实现

    单例模式保证一个类只能拥有一个静态的实例,类负责创建与维护这个实例,并提供一个统一的静态(类方法)访问方式,并封锁了这个类外部的代码对这个类对象的创建. .h文件: #import <Found ...

  10. 记userscripts.org

    发现一些Firefox用户脚本不起作用,userscripts.org访问不能有一个很长的一段时间,我还以为出了什么问题没出去检查.前几天有时间检查脚本,在路上,然后返回到userscripts.or ...