汇编语言(王爽)学习----第二章CPU工作原理

寄存器

CPU由运算器、控制器、寄存器等构成,靠内部总线相连。外部总线是实现CPU和主板上的其他器件连接。

汇编程序员主要关心的是寄存器,通过改变里面的内容来实现对CPU的控制。

8086CPU有14个寄存器,都是16位的。

2.1通用寄存器

AX、BX、CX、DX存放一般性数据,上一代是8位,为了保证兼容,这4个又可以分为两个独立的8位寄存器来使用。

在这里插入图片描述

2.2字在寄存器中的存储

8086CPU一次可以处理字节和字两种尺寸的数据。

一个内存单元可放8位数据,寄存器放n个8位,所以用16进制来表示,很直观,后面加H。

字相加,若高于16位,则多出来的舍弃。
寄存器的低位字节相加,多出8位的进位值不能保存在8位寄存器中。此时认为高位和低位时两个不相关的寄存器。

2.4物理地址

所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元都有一个唯一的地址(物理地址)
CPU在向地址总线发出物理地址前,要形成物理地址。

2.5 16位结构的CPU

运算器一次最多处理16位的数据
寄存器的最大宽度为16位
二者通路为16位

所以内存单元地址在送上地址总线之前,需在CPU中处理、传输、暂存。对于16位CPU,一次能处理的就是16位地址。

2.6 8086CPU给出物理地址方法

8086CPU有20位地址总线,然而8086CPU又是16位的,寻址能力为64KB。这就需要在CPU内部把两个16位地址合成一个20位的物理地址。
在这里插入图片描述
物理地址=段地址x16+偏移地址
在这里插入图片描述

2.7“段地址x16+偏移地址”的本质含义

CPU访问内存时,用一个基础地址(段地址x16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
在这里插入图片描述
在这里插入图片描述

2.8段的概念

在这里插入图片描述
根据编程需要,可以将地址连续的内存看作一个段,用段x16定位段的起始地址,用偏移地址定位段中的内存单元。
因为偏移地址为16位,寻址位64KB,所以一个段的最大长度为64KB。0~FFFFH
CPU可以用不同的段地址和偏移地址形成同一个物理地址。

2.9段寄存器

8086CPU中有4个:CS、DS、SS、ES

2.10CS和IP

这是最关键的两个寄存器,指向了当前CPU读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器。
在这里插入图片描述
在这里插入图片描述
工作过程如下:
(1)从CS:IP指向的内存单元中读取指令,进入指令缓冲器;
(2)IP=IP+所读取指令的长度,从而指向下一条指令;
(3)执行指令。转到步骤(1),重复这个过程。

2.11修改CS、IP指令

jmp 命令
jimp 段地址:偏移地址
jmp 2AE3:3,执行后:CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令

若仅想修改IP的内容,可以用jmp 某一合法寄存器 来完成

2.12代码段

我们可以将长度为N(N小于等于64KB)的一组代码,存放在一组地址连续、起始地址为16的倍数的内存单元中,我们可以认为这段内存时存放代码的,从而定义了一个代码段。

上面这个仅仅是我们在编程时的一种安排,CPU并不会由于这用安排,就把把当作代码来执行。所以我们必须将CS:IP指向代码段中的第一条指令的首地址。

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值