码迷,mamicode.com
首页 > 其他好文 > 详细

汇编第二章_寄存器

时间:2019-02-03 23:32:31      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:读写   相加   需要   cpu   十六   存储   物理   实现   程序   


一个典型的CPU由 运算器,控制器,寄存器等器件构成.
(1) 运算器进行信息处理.
(2) 寄存器进行信息存储.
(3) 控制器控制各种器件进行工作.
(4) 内部总线连接各种器件,在它们之间进行数据的传送.

寄存器是CPU中程序员可以用指令读写的部件,
通过改变各种寄存器中的内容可以实现对CPU的控制.

8086CPU有14个寄存器,且都是16位的:
AX BX CX DX SI DI SP BP IP CS SS DS ES PSW
为了与上一代CPU兼容,8086CPU的AX BX CX DX这4个寄存器都可以分成两个独立使用8位寄存器.
AX : AH AL
BX : BH BL
CX : CH CL
DX : DH DL
注意 AL 和 AH 都是作为独立的8为寄存器来使用的.

8086CPU可以一次性处理以下两种尺寸的数据:
字节 字(word) 1 word = 2 byte(高位字节 低位字节)

通用寄存器: AX BX CX DX 这4个寄存器通常用来存放一般性的数据.

十六进制后面一般加H 二进制后边加B

8086CPU有20位地址总线,但是是16位结构,所以使用两个16位地址合成的方法来形成一个20位的物理地址.
地址加法器采用: 物理地址 = 段地址 * 16 + 偏移地址
同时定义: 段地址 = 起始地址(基础地址) / 16
本质含义是:
   CPU在访问内存时,
  用一个基础地址(段地址 * 16) 和
  一个相对于基础地址的偏移地址相加,
  给出内存单元的物理地址.

内存并没有分段, 端的划分来自于CPU.
在编程需要的时候,可以将若干地址连续的内存单元看作一个段,
用 段地址 * 16 定位段的 起始地址, 用 偏移地址 定位段中 内存单元.
由于段地址 * 16 是 16的倍数,所以一个段的起始地址一定也是16的倍数.
偏移地址为16位, 16位地址的寻址能力为64KB, 所以一个段的长度最大为64KB.

CPU如何区别内存中的数据和指令的: CS:IP寄存器指向的内存单元的内容是指令.

 

汇编第二章_寄存器

标签:读写   相加   需要   cpu   十六   存储   物理   实现   程序   

原文地址:https://www.cnblogs.com/cgjh/p/10351190.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!