ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

汇编语言程序设计(二)CPU工作原理

2022-05-17 20:00:29  阅读:168  来源: 互联网

标签:16 汇编语言 IP 地址 指令 寄存器 程序设计 CPU


目录

CPU概述

  • CPU由运算器、控制器、寄存器等组成,这些器件靠内部总线相连,外部总线则负责实现CPU和主板上其它器件的联系。
  • 8086有14个寄存器,其中8个通用寄存器,寄存器都是16位的。
  • AX、BX、CX、DX用来存放一般性数据,被称为通用寄存器。这四个寄存器可以分为两个独立的8位寄存器使用。比如AX可以分为AH和AL。

汇编指令例子

  • 汇编指令不区分大小写

物理地址

  • 所有的内存单元构成的存储空间在逻辑上是一个一维的线性空间,这个唯一线性空间的索引我们称之为物理地址。
  • 决定一个CPU是16位的,是因为以下三点:
    ** 运算器依次最多处理16位的数据
    ** 寄存器的最大宽度是16位
    ** 寄存器和运算器之间的通路是16位的
  • 8086有20位地址空闲,寻址能力位1M,但是8086内部为16位结构,只能传送16位的地址,表现出的寻址能力只有64K,怎么把16位的数据转换成20位的地址?用两个16位地址(段地址和偏移地址)合成一个20位的物理地址。段地址和偏移地址通过内部总线送入一个称为地址加法器的部件,地址加法器将两个16位地址合并成一个20位地址。
  • 物理地址 = 段地址✖16 + 偏移地址,段地址乘以16相当于乘以2^4,相当于左移4位,因此得到了一个20位的地址,再加上偏移地址,得到最终的物理地址。一个数据的X进制形式左移一位,相当于乘以X。对于同一个物理地址,可能有好几种段地址和偏移地址对可以来表示它,具体用的哪种是CPU决定的,不可知。

段的概念

  • 错误认识:内存被划分成一个一个的段,每个段有一个段地址。这是错误的,内存并没有分段,只是从CPU的角度可以用分段的方式来管理内存。在编程时,可以根据需要将若干地址连续的内存单元看成一个段,用段地址✖16来定位段的起始地址,用偏移地址定位段中的内存单元。以下两点注意:
  • 段寄存器就是用于管理段地址的,8086CPU中有4个段寄存器,CS代码段寄存器、DS数据段寄存器、SS堆栈段寄存器、ES附加段寄存器。
  • CS和IP是8086CPU中最关键的寄存器,它们指示CPU当前要读取指令的地址。CS是代码段寄存器,IP是偏移,被称为指令指针寄存器。8086工作过程如下:
    ** 从CS:IP指向的内存单元读取指令,该指令进入指令缓冲器
    ** IP = IP + 所读取指令的长度,从而指向下一条指令,IP是有一个自加器的,可以自动指向下一条指令。
    ** 执行指令,转到第一步重复这个过程

    ** 在8086加电启动或复位后,CS和IP被设置称CS=FFFFH,IP=0000H,CPU从内存FFFF0H单元中读取指令执行,这条指令是8086PC机开机后执行的第一条指令
    ** 不能用传送指令MOV来改变寄存器CS和IP的值,8086CPU为CS和IP提供了另外的指令来改变他们的值,即转移指令JMP,用指令中给出的段地址修改CS,偏移地址修改IP,可以同时修改

  • 对于8086PC机,编程时可以根据需要将一组内存单元定义为一个段,可以将长度为N<=64KB的一组代码存放在一组地址连续、起始地址为16的倍数的内存单元中,这段内存是用来存放代码的,从而定义了一个代码段。将CS:IP指向段首地址,就可以执行这段程序了,CPU只认被CS:IP指向的内存单元中的内容为指令。

标签:16,汇编语言,IP,地址,指令,寄存器,程序设计,CPU
来源: https://www.cnblogs.com/chkplusplus/p/16278725.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有