第二章 寄存器小结

  1. 存储器从功能和连接上分为:随机存储器:用于存放CPU的绝大部分程序和数据;装有BIOS的ROM:用于存储设备的基本输入输出系统;接口卡上的RAM:接口卡需要对大批量输入、输出数据进行暂存时使用,如显存。CPU在操作它们的时候,把它们都当做内存来对待,把它们总的看做一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。
  2. 2.在8086机中,任意时刻,CPU将CS:IP指向的内容当做指令执行,在加电或复位后CS和IP被设置为CS=FFFFH,IP=0000H,即FFFF0H单元的指令是8086pc机开机后执行的第一条指令。
  3. 3.8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址,8086不支持将数据直接送入段寄存器,只能有一个寄存器来进行中转。
  4. 4.8086CPU提供入栈和出栈指令,入栈和出栈操作都是以字为单位进行的,栈地址为SS:SP
  5. 5.可执行文件由描述信息和程序组成,程序来自于源程序中的汇编指令和定义的数据;描述信息则主要是编译、连接程序对源程序中伪指令进行处理做得到的信息。如CPU从何处开始执行程序,只要在源程序中用“end 标号”指明就可以了。
  6. 6.寄存器:reg包含:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,disreg包含:ds,ss,cs,es关于bx,si,di和bp:只有这四个寄存器可以用于[]中进行内存单元的寻址只要使用寄存器bp,且没有显性给出段地址,段地址默认在ss中
  7. 7.绝大多数机器指令都是进行数据处理的指令,处理大致分为:读取、写入、运算。所要处理的数据可以在三个地方:cpu 内部(寄存器)、内存、端口。汇编语言用三个概念来表达数据的位置:立即数、寄存器、段地址+偏移地址。
  8. 8.汇编指令举例

汇编指令


控制CPU完成的操作


用高级语言的语法描述


mov ax,18


将18送入寄存器AX


AX=18


mov ah,78


将78送入寄存器AH


AH=78


add ax,8


将寄存器AX中的数值加上8


AX=AX+8


mov ax,bx


将寄存器BX中的数据送入寄存器AX


AX=BX


add ax,bx


将AX和BX的数值相加,结果存在AX中


AX=AX+BX

9.16位结构的cpu

运算器一次最多可以处理16位的数据

寄存器的最大宽度为16位

寄存器和运算器之间的通路为16位

10.8086CPU给出物理地址的方法

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

CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。

12.修改CS、IP的指令

在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。CPU从何处执行指令是由CS、IP中的内容决定的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。

我们如何改变CS、IP的值呢?显然,8086CPU必须提供相应的指令。我们如何修改AX中的值?可以用mov指令,如mov ax,123将ax中的值设为123,显然,我们也可以用同样的方法设置其他寄存器的值,如mov bx,123,mov cx,123,mov dx,123等。其实,8086CPU大部分寄存器的值,都可以用mov指令来改变,mov指令被称为传送指令。

但是,mov指令不能用于设置CS、IP的值,原因很简单,因为8086CPU没有提供这样的功能。8086CPU为CS、IP提供了另外的指令来 改变它们的值。能够改变CS、IP的内容的指令被统称为转移指令(我们以后会深入研究)。我们现在介绍一个最简单的可以修改CS、IP的指令:jmp指 令。

若想同时修改CS、IP的内容,可用形如"jmp段地址:偏移地址"的指令完成,如

jmp 2AE3:3,执行后:CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令。

jmp 3:0B16,执行后:CS=0003H,IP=0B16H,CPU将从00B46H处读取指令。

"jmp 段地址:偏移地址"指令的功能为:用指令中给出的段地址修改CS,偏移地址修改IP。

若想仅修改IP的内容,可用形如"jmp 某一合法寄存器"的指令完成,如


jmp ax,指令执行前:ax=1000H,CS=2000H,IP=0003H
指令执行后:ax=1000H,CS=2000H,IP=1000H
jmp bx,指令执行前:bx=0B16H,CS=2000H,IP=0003H
指令执行后:bx=0B16H,CS=2000H,IP=0B16H

14.小结:

段地址在8086CPU的段寄存器中存放。当8086CPU要访问内存时,由段寄存器提供内存单元的段地址。8086CPU有4个段寄存器,其中CS用来存放指令的段地址。

CS存放指令的段地址,IP存放指令的偏移地址。

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

8086CPU的工作过程:

从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;

IP指向下一条指令;

执行指令。(转到步骤1,重复这个过程)

8086COU提供转移指令修改CS、IP的内容。

原文地址:https://www.cnblogs.com/onioneer/p/9734450.html

时间: 2024-10-09 04:48:41

第二章 寄存器小结的相关文章

第二章 寄存器基础概念

第二章 寄存器 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.汇编

第二章学习小结

数据结构第二章的学习结束了,了解了顺序表,单链表的建立,插入,删除,查找的算法,以及对它们时间复杂度,空间复杂度的分析.学会区分头指针,头结点和首元结点. 前插法,后插法创建单链表,相比之下,我觉得后插法比较好理解.双向链表就是那个表示被处理结点的前驱的后继(p->prior->next),结点的后继的前驱(p->next->prior)要区分开. 作业,说实话,一开始的时候,我真的很懵,书上的算法描述,我可以看的很明白,同时也感到很奇怪,甚至还一度认为那是可以敲上电脑进行编译运行

第二章 寄存器相关内容总结

对于一个汇编程序员来说,CPU中的主要部件是寄存器.寄存器是CPU中程序员可以用指令读写的部件.程序员通过改变各种寄存器中的内容来实现对CPU的控制.不同的CPU,寄存器的个数.结构是不相同的.8086CPU有14个寄存器,每个寄存器有一个名称. 8086CPU的所有寄存器都是16位的,可以存放两个字节.AX.BX.CX.DX.这4个寄存器通常用来存放一般性的数据,被称为通用寄存器.出于对兼容性的考虑,8086CPU可以一次性处理以下两种尺寸的数据.字节:记为byte,一个字节由8个bit组成,

汇编语言第三版 第二章 寄存器

问题1.8086CPU的地址总线为20bit,而数据总线为16bit--也就是说每次传输的数据为16bit,那么如何使用16bit的数据总线来实现20bit的地址总线的地址传输? 答:8086CPU使用两个16bit的地址合成一个20bit的物理地址. 16bit A: XXXX 16bit B: XXXX 20bit物理地址的合成 A *16 也就是将A(16进制表示的数值),向左移动一位,然后加上B.A * 16  +  B.物理地址 = 段地址 * 16 + 偏移地址 16bit A: X

汇编语言 第二章 寄存器检测点2.2 第二题

这道题是汇编语言第二版的习题,一开始我也是百思不得其解,下面看看吧: 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻址到此单元, 则SA 应满足的条件是:最小为 1001H 最大为 2000H :最大值: (很多人最大值很容易算出来,但是最小值卡住了,很纳闷为什么是1001H)我们可以根据原题列出一个式子: X * 10H + 0H = 20000H 我们之前是乘以16,但是那个16是十进制的,因为整个式子里都是16进制,加入个10进制去算会出错的所以呢,我们把16转

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

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.

第二章寄存器

寄存器有:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW等等 通用寄存器有AX.BX.CX.DX 8086又分为两个8位寄存器:AX = AH和AL,BX=BH和BL...等如下 监测点: F4A3 31A3 3123 6246 826C 6246 826C 04D8 0482 6C82 D882 D888 D810 6246 段地址:   段地址*16+偏移地址 =就是物理地址 段地址必须是16的倍数,偏移地址 监测点2.2 0010FH-1000FH 1

汇编语言:第二章 寄存器

一个典型的CPU由运算器.控制器.寄存器组成,内部总线连接各部分器件 寄存器是程序员可以用指令读写的部件,通过改变寄存器里的内容从而实现控制CPU, 不同CPU 寄存器的个数结构是不一样的,8086有14个寄存器 2.1通用寄存器 8086所有的寄存器都是16位的,可以存放2个字节,AX.BX.CX.DX用于存放一般性数据,成为通用寄存器 为了兼容旧的8位寄存,每个16位寄存器可以分为2个单独的8位寄存器来使用,名字分别用AH.AL来表示高8位和低8位 2.2字在寄存器中的存储 字节byte:可

第二章 寄存器

1.一个典型的CPU由运算器,控制器,寄存器(CPU工作原理)等器件构成,这些器件靠内部总线相连. 2.不同的CPU,寄存器的个数,结构是不相同的.8086CPU有14个寄存器: AX,BX,CX,DX(通用寄存器),SI,DI,SP,BP(基址和变址寄存器),CS,SS,DS,ES(段寄存器),IP,FR(指令指针和标志寄存器) AX:Accumlator Register BX:Base Register CX:Count Register DX:Data Register CS:Code