寄存器(CPU工作原理)

CPU概述

一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件考内部总线相连。

8086CPU有14个寄存器:

        AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW

1、通用寄存器

8086CPU所有的寄存器都是16位的,可以存放两个字节。

AX、BX、CX、DX通常用来存放一般性数据被称为通用寄存器。

一个16位寄存器能存储数据的最大值为2^6-1。

 

8086上一代CPU中寄存器都是8位,为保证兼容性,可将16位寄存器分成两个8位寄存器独立使用。

例:16位寄存器AX可以分为8位寄存器AH和AL。

       AX的低八位构成AL寄存器,AX的高八位构成AH寄存器。

一个八位寄存器能够存储的最大值为2^8-1。

2、字在寄存器中的存储

      1B=8bit,1字=2字节(B)(16位寄存器)

字节(B)是寻址的最小单位。

字是计算机一次处理数据的最大单位。

    数制转换

   计算机能处理的数据是二进制数据,但是人阅读二进制数据是否困难,而十六进制对应二进制数据,且计算机的位数都是4的倍数,所以折中选择十六进制来处理数据。

3、几条汇编指令

注意:汇编指令不区分大小写。

汇编指令:mov、add

汇编指令控制CPU完成操作用高级语言描述(C语言)
mov ax,18将18送人axax=18
add ax,8将ax中数值加上8ax=ax+8
mov ax,bx将bx中的数据送入寄存器ax中ax=bx
add ax,bx将ax与bx数据相加,存入ax中ax=ax+bx

寄存器若发生数据溢出,寄存器只存储非溢出值,但CPU并没有丢弃溢出值,只是放在某个位置。

若将一个16位寄存器当成两个8位寄存器时,若低八位寄存器发生溢出,其溢出值不会到高八位寄存器中。(原因:两者相互独立)

例:只是用mov、add汇编指令,最多使用四条指令,编程计算2的四次方。

mov al,2

add al,al

add al,al

add al,al

4、物理地址

CPU访问内存单元时要给出内存单元的地址。所有内存单元构成的存储空间是一个一维的线性空间。

将这唯一的地址称为物理地址

5、16位结构的CPU

特征:

1.运算器一次最多可以处理16位数据。

2.寄存器的最大宽度为16位。

3.寄存器和运算器之间的通路是16位的。

8086有20位地址总线,可传送20位地址,寻址能力为1M,2^20B=2^10KB=1MB

8086内部地址总线为16位,只能传送16位地址寻址能力只有64K。

因为8086内外地址总线不匹配,所以采用两个16位地址合成一个20位地址。

16位段地址,偏移地址通过地址加法器变成20位地址。

方法:物理地址=段地址x16+偏移地址。

x16为向左移一位16进制或向左移四位2进制。

一个数据的二进制向左移N位,二进制数据x2^N

6、段的概念

  内存并没有分段,段的划分来自于CPU,由于CPU给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。

如:将10000H~100FFH组成一个段

在编程时可以根据需要将若干地址连续的内存单元看成一个段。

偏移地址为16位,寻址能力为64K,所以一个段的长度最大为64K。

注意:数据在21F60H内存单元中,对于8086PC有两种描述:

1.数据存在内存2000:1F60单元中。

2.数据存在内存2000段的1F60单元中。

7、段寄存器

段寄存器是提供段地址的。

8086CPU中有4个段寄存器

CS(代码段地址寄存器)

DS(数据段地址寄存器)

SS(堆栈段地址寄存器)

ES(附加段地址寄存器)

CS和IP是8086CPU中最关键寄存器

它们指示了CPU当前要读取指定的地址

CS为代码段寄存器

IP为指令指针寄存器(偏移地址寄存器)

 

工作流程

1.从CS:IP指的单元读取指令,读取的指令进入指令缓存器。

2.IP=IP+所读取指令的长度(自己完成的),从而指向下一条指令

3.执行指令(重复步骤)

 

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

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

 

8、修改CS、IP的指令

mov指令可以改变8086CPU中大部分的寄存器的值,被称为传送指令

但是不能用来设置CS、IP的值(8086CPU没有提供这样的功能)

转移指令jmp (用来改变CS、IP的值)

1、同时修改CS、IP的内容

       jmp 2AE3:3

2、仅修改IP的内容

        mov  ax,200H

        jmp   IP,ax

或:jmp bx   (只修改IP的值,不修改CS的值)

9.代码段

CPU只认被CS:IP指向的内存单元中的内容为指令。

 

工具介绍:debug

debug是DOS、windows提供的实模式程序的调试工具。

R命令  查看、改变CPU寄存器的内容

D命令  查看内存中的内容

E命令  改写内存中的内容

U命令  将内存中的机器指令翻译成汇编指令

T命令  执行一条机器语言

A命令  以汇编指令的格式在内存中写入一条机器指令

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值