第二章 寄存器基础概念

第二章 寄存器

1.一个典型的CPU由运算器,控制器,寄存器等器件组成。

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

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

2.8086是Intel系列中16位微处理器,地址总线20位。

8086有14个16位寄存器:AX,BX,CX,DX,是通用寄存器SI,DI,BP,SP,是基址和变址寄存器CS,SS,DS,ES,是段寄存器IP,FLAGS是指令指针和标志寄存器。

3.通用寄存器:一个CPU有多个寄存器,用来存放十六位一般性数据

下面以AX为例

4.汇编指令

1.move xx,num   将num送入寄存器xx;

2.add xx,num   将寄存器xx的数值加上num;

3.move xx,yy   将寄存器yy的数值送入寄存器xx;

4.add xx,yy   将寄存器xx,yy的值相加并存在xx中;

5.所有的内存单元构成的存储空间是一个一维的线性空间。每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。8086CPU给出物理地址的方法,CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址; 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件; 地址加法器将两个16位地址合成为一个20位的物理地址; 地址加法器通过内部总线将20位物理地址送入输入输出控制电路; 输入输出控制电路将20位物理地址送上地址总线; 20位物理地址被地址总线传送到存储器。 另外地址加法器采用物理地址=段地址*16+偏移地址。

注意(1) CPU从何处执行指令是由CS和IP中的内容决定的。

(2) 程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。

(3) IP和CS值的修改不能通过mov指令实现,需借助转移指令 (如jmp, call等)。

6.计算机的工作过程

第1步: CPU基于CS:IP,计算出物理地址,然后到相应的内存单元读取指令,送到指令缓冲区。

第2步: CPU自动修改IP的值,IP = IP + 所读取指令的长度,从而为下一条指令读取做准备;

第3步: 执行指令。 转第1步,重复此过程。

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

即: 在8086PC机刚启动时,CPU从内存FFFF0H单元中读取开机后执行的第一条指令。

7.CS和IP的概念:CS: 代码段段寄存器,用于存放代码段的「段地址」

IP:  指令指针寄存器,用于存放CPU将要读取的指令在代码段中的偏移地址。

CS:IP对应的物理地址存放的是CPU将要读取的指令。

(CS) × 16 + (IP)  → 指令的物理地址

8.修改CS和IP的指令jmp:(1) 同时修改CS、IP的内容  jmp段地址: 偏移地址 用指令中给出的段地址修改CS,偏移地址修改IP。(2) 只修改IP的内容:jmp  某一合法寄存器

用指令中寄存器的值修改IP。

原文地址:https://www.cnblogs.com/agent33/p/9795458.html

时间: 2024-11-30 13:38:50

第二章 寄存器基础概念的相关文章

鸟哥的 Linux 私房菜(服务器) 第二章 网络基础概念

鸟哥的 Linux 私房菜(服务器) @(学习笔记)[Linux|Markdown|笔记] [TOC] 第二章 网络基础概念 2.1 网络是个什么玩意儿 OSI 七层协定 分层 负责内容 Layer 1物理层Physical Layer 由于网络媒体只能传送 0 与 1 这种位串,因此物理层必须定义所使用的媒体设备之电压与讯号等, 同时还必须了解数据讯框转成位串的编码方式,最后连接实体媒体并传送/接收位串. Layer 2数据链结层Data-Link Layer 这一层是比较特殊的一个阶层,因为

第二章 算法基础 思考题2-1

package chap02; import static org.junit.Assert.*; import java.util.Arrays; import java.util.Random; import org.junit.Test; /*** * 在归并排序中对小数组采用插入排序 * * @author xiaojintao * */ public class ques2_1 { /** * 归并排序算法 * * @param a * @return */ static void m

第二章 算法基础 思考题2-4(逆序对)

1 package chap02; 2 3 import static org.junit.Assert.*; 4 5 import java.util.Arrays; 6 7 import org.junit.Test; 8 9 public class ques2_4 { 10 /** 11 * 逆序对,将一个序列中的所有逆序对打印输出 12 * 13 * @author xiaojintao 14 * 15 */ 16 static void printReverseOrder(int[]

C和指针 (pointers on C)——第二章:基本概念

第二章 基本概念 不良的代码风格,不良的文档直接导致软件开发及维护代价高昂. 其实一个人总有他自己的代码风格,主要是坚持一种合理的风格,让大家容易读懂. 总结: C是一种对大小写非常敏感的语言,所以Abc,abc这是两个不同的标识符.长度没有限制,但是31个字符以后会自动忽略. 程序的起点是main函数,绝大多数环境使用堆栈来存储局部变量和其他数据. 注释必需以/* 开始,*/结束,不允许嵌套.注释将被预处理器去除. 标识由字符数字和下划线组成,不能以数字开头,大写和小写不同. 关键字不能作为标

2016.9.21 鸟哥私房菜服务器篇-第二章网络基础-总结

第二章-网络的基本概念 2.1网络 操作系统很多,比如windows/linux/os X等,这么多的操作系统(不同国家的人)如何进行网络沟通(语言交流)呢? 制定共同的标准.然后在你的系统里提供可以加入该标准的程序代码. 网络是跨平台的. 2.1.1 什么是网络 网络就是几部计算机主机或者网络打印机之类的接口设备,通过网线或者无线网络技术,将这些主机与设备连接起来,使得数据可以通过网络介质(网线或者网卡等硬件)来传输的一种方式. 以太网已经是一项公认的标准接口了,大家可以依据这个标准来开发自己

第二章 impala基础使用

第二章 impala基本使用 1.impala的使用 1.1.impala-shell语法 1.1.1.impala-shell的外部命令参数语法 不需要进入到impala-shell交互命令行当中即可执行的命令参数 impala-shell后面执行的时候可以带很多参数: -h 查看帮助文档 impala-shell -h -r 刷新整个元数据,数据量大的时候,比较消耗服务器性能 impala-shell -r -B 去格式化,查询大量数据可以提高性能 --print_header 去格式化显示

王爽《汇编语言》第三版 第二章 寄存器

CPU概述 一个典型的CPU由运算器.控制器.寄存器等器件组成,这些器件靠内部总线相连. 内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其它器件的联系. 8086CPU有14个寄存器 它们的名称为:AX.BX.CX.DX.SI.DI.SP.BP.IP.CS.SS.DS.ES.PSW. 2.1 通用寄存器 8086CPU所有的寄存器都是16位的,可以存放两个字节. 8086上一代CPU中的寄存器都是8位的: 为保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用. 1.

第二章 Python基础知识

第1章 第一个Pyhton程序 Pyhton的两种执行方式:交互式与脚本文件 1.1 交互式 l  交互式模式 直接在Windows或者Linux环境下打开Python解释器执行. 优点:快捷,调试方便. 缺点:不能够保存代码. C:\Users\cc>python3 Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", &quo

第二章 寄存器小结

存储器从功能和连接上分为:随机存储器:用于存放CPU的绝大部分程序和数据:装有BIOS的ROM:用于存储设备的基本输入输出系统:接口卡上的RAM:接口卡需要对大批量输入.输出数据进行暂存时使用,如显存.CPU在操作它们的时候,把它们都当做内存来对待,把它们总的看做一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间. 2.在8086机中,任意时刻,CPU将CS:IP指向的内容当做指令执行,在加电或复位后CS和IP被设置为CS=FFFFH,IP=0000H,即FFFF0H单