一个典型的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:可以存储在8位寄存器中

  字word:是两个字节,可以存储在16位寄存器中,改字的高8位字节和低8位字节存储在高8位寄存器和低8位寄存器中

  一个字型数据20000  存储在AX中,高8位是78,低8位是32, 既可以看成是一个字型数据20000,也可以看成是两个单独的寄存器分别存78和32

  十六进制数据每两位代表一个8位,用十六进制表示数据来看高低位寄存器非常方便如AX中是4E20H,那么AH是4EH,AL是20H。

2.3几条汇编指令

  mov ax,18   : 将18送入寄存器AX    高级语言:ax=18

  add ax,8  : 将寄存器AX中数据加8    高级语言:ax=ax+8

  注意:如果运算结果超出了寄存器可以表示的数值范围,那么会截取掉

  汇编指令的操作对象位数必须是一样的

检测2.1:

  1>写出每条汇编指令完成后相关寄存器中的值 :

  mov ax,62627    AX=F4A3H

  mov ah,31H     AX=31A3H

  mov al,23H      AX=3123H

  add ax,ax      AX=6246H

  mov bx,826CH    BX=826CH

  mov cx,ax      CX=6246H

  mov ax,bx      AX=826CH

  add ax,bx      AX=04D8H

  mov al,bh      AX=0482H

  mov ah,bl      AX=6C82H

  add ah,ah      AX=D882H

  add al,6       AX=D888H

  add al,al       AX=D810H

  mov ax,cx      AX=6246H

  2>只用mov,add指令并且不超过4条指令计算2的4次方

  mov ax,0002H

  add ax,ax

  add ax,ax

  add ax,ax

2.4物理地址

  CPU访问内存需要提供内存单元地址,所有的内存单元在内存空间中构成的是一个一维线性结构,

  每个内存单元都有一个唯一的地址,这个地址就是物理地址。

  CPU在访问内存时得先在内部形成这个地址,那么是如何形成的呢?

2.5 16位结构CPU

  16位结构的CPU表示:

  1.CPU运算器一次运算位数最大为16位

  2.CPU寄存器宽度为16

  3.运算器和寄存器通路为16位

2.6 8086CPU给出物理地址的方法

  8086地址总线宽度为20,但是一次运算位数最大为16,所以通过两个16位地址合成一个20位地址

  物理地址=段地址(SA)*16 + 偏移地址(EA)

  段地址乘以16就是左移4位

  

2.7 物理地址=段地址*16+偏移地址的本质含义

  段地址*16 代表一个基础地址(参照地址), 偏移地址是在这个基础地址之上的偏移量

2.8 段的概念

  内存并没有分段,段的概念来自于CPU,使得我们利用分段方式来管理内存

  由于偏移地址是16位的,所以每个段的最大长度就是16位地址的寻址能力: 64KB

  

[注] 1)不同的段地址和偏移地址可以表示同一个物理地址,只要计算结果相同即可

  2)描述数据存在某个内存单元一般这么说:  数据存在内存的2000段中的1F16单元中

  3)可以根据需要将起始地址为16整数倍并且连续不超过64KB的内存单元划分为一个段

检测2.2

  1)给定段地址0001H,寻址范围从 00010H 到 1000FH

  2)某数据存在20000H中,利用段地址*16+偏移方式想寻到此地址,那么SA最小为: 1001H 最大为:2000H

2.9 段寄存器

  从图2.6可知,其他部件提供了段地址和偏移地址给地址加法器,这里的其他部件就包含段寄存器,用于提供段地址

  8086段寄存器包含CS,DS,SS,ES

2.10 CS和IP

  CS和IP是8086里最重要的寄存器,它们提供CPU当前需要执行的指令地址

  CS段寄存器,IP偏移寄存器

  8086CPU工作过程如下:

  1)从CS:IP指向的内存单元读取指令,放入指令缓冲器中

  2) IP=IP+指令长度

  3)执行指令,转向1)重复

  8086CPU在开机时CS:IP会被指向FFFFH:0000H执行开机第一条命令

2.11修改CS IP指令

  mov不能对CS IP操作

  1>使用jmp 段地址:偏移地址 来修改CS,IP

  2>使用jmp 某寄存器(如ax)   将ax值放到IP中

2.12代码段 

  某起始地址是16整数倍且连续的一段内存单元可以看成是一个代码段,

  将CS:IP设置为该段起始值就可以让CPU执行该段代码

检测2.3:

  下面3条指令执行之后IP修改了几次,什么时候,最终IP是什么?

  mov ax,bx

  sub ax,ax

  jmp ax

  解: 4次,每条指令读取进指令缓存器中时IP修改一次,jmp命令执行之后又执行一次,最终是0000H

  

转载于:https://www.cnblogs.com/superzhao/p/4600617.html

汇编语言:第二章 寄存器相关推荐

  1. 寄存器和存储器的区别_汇编语言 第二章 寄存器

    第二章 寄存器 在 CPU 中: 运算器进行信息处理: 寄存器进行信息存储(主要部分,工作原理): 控制器控制各种器件进行工作: 内部总线连接各种器件,在它们之间进行数据的传送. 不同的 CPU,寄存 ...

  2. [汇编语言学习笔记][第二章寄存器]

    第二章 寄存器 8086有14个寄存器,分别为AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW. 2.1 通用寄存器 8086CPU的所有寄存器都是16位,可以存放 ...

  3. 汇编语言第二章知识梳理及思考

    第二章 寄存器(CPU工作原理) CPU概述 CPU由运算器.控制器.寄存器等器件组成,这些器件靠内部总线相连. 内部总线实现CPU内部各个器件之间的联系. 外部总线实现CPU和主板上其他器件的联系. ...

  4. 第二章 寄存器基础概念

    第二章 寄存器 1.一个典型的CPU由运算器,控制器,寄存器等器件组成. 内部总线实现CPU内部各个器件之间的联系. 外部总线实现CPU和主板上其它器件的联系. 2.8086是Intel系列中16位微 ...

  5. 小吴学汇编之第二章--寄存器(1)

    第二章   寄存器 上次我们学完了第一章,懂了一些基本的知识,今天,小吴带你们学习第二章内容寄存器. 一个典型的CPU由运算器.控制器.寄存器(CPU工作原理)等器件构成,这些器件靠总线连接,我们上一 ...

  6. 汇编 第二章 寄存器

    在我看来,第二章中主要围绕着6个寄存器展开阐述.它们分别是AX.BX.CX.DX.CS.IP. 在此之前,通过本章的学习,使我对CPU这一概念又有了更深一步的认识. 1.CPU中字长与位宽的区别 通常 ...

  7. 第二章 寄存器 章节小结

    在CPU中主要部件是寄存器,不同的CPU中,寄存器个数与结构是不相同的. 2.1 通用寄存器 8086CPU的所有寄存器都是16位,可以存放两个字节.AX.BX.CX.DX这4个寄存器通常用来存放一般 ...

  8. 小吴学汇编之第二章--寄存器(2)

    2.3          几条汇编指令 前面我们说过,汇编指令通过控制CPU进行工作,那么下表是几条汇编指令. 注意,为了使具有高级语言基础的读者更好理解指令的含义,有时会用文字描述和高级语言描述这两 ...

  9. 王爽 汇编语言 第二章 实验一

    进入debug之后,输入a,然后输入代码即可. 注意: 在debug模式下,默认所有数字都是16进制,不能加H,否则报错.但是在asm文件里面,默认数字是10进制的,需要加H 输入结束,连续两次回车即 ...

最新文章

  1. POJ1321 棋盘问题
  2. 操作系统之CPU调度
  3. 方案 mysql 优点_mysql高可用方案分析
  4. 小学计算机ppt课教案,小学信息技术公开课教案《让幻灯片变得更加漂亮》教学设计与反思...
  5. PHP学习总结(正则表达式、日期与时间)
  6. 行!人工智能玩大了!程序员:太牛!你怎么看?
  7. plsql学习笔记---plsql相关概念,以及基础结构
  8. 洞仙歌·冰肌玉骨 [宋] 苏轼
  9. 对称二叉树c++_数据结构学习(C++)——平衡二叉树
  10. 《Visual C++ 开发从入门到精通》——2.9 技术解惑
  11. 任务,行动,目标、绩效管理,计划
  12. vue 直接访问静态图片_在使用vue中实现本地静态图片路径(详细教程)
  13. 【Pixiv】搜图教程和搜图网站
  14. flash花屏 html,Flash中轻松制作电视花屏闪屏的效果
  15. C语言笔记:进制转换与32位二进制IP地址转换十进制问题
  16. 零基础如何入门嵌入式领域
  17. P6578 魔法少女网站
  18. eclipse工程报faceted project problem
  19. 华为云物联网平台的微信小程序开发
  20. 用户体验研究方法选择的一些原则

热门文章

  1. Oracle对表的基本操作
  2. CVPR2020 | 当目标跟踪遇上对抗攻击
  3. Python面向对象介绍
  4. 麻省理工、微软为AI量身打造了一套leetcode编程题
  5. ICLR 2021 | 腾讯 AI Lab 入选论文
  6. PyTorch | torch.linspace()创建均分数列张量 | torch.linspace()如何使用?| torch.linspace()使用方法 | torch.linspace例子
  7. 阿里达摩院发布2019十大科技趋势!AI专用芯片将挑战GPU的绝对统治地位
  8. 基于Keras的YOLOv4目标检测平台
  9. 深度学习(六十二)SqueezeNet网络设计思想笔记
  10. ROS在类中发布和接受消息(标准消息)