汇编语言第二章:寄存器

您所在的位置:网站首页 寄存器dx和ax组成32位有符号数的补码 汇编语言第二章:寄存器

汇编语言第二章:寄存器

2024-07-11 16:51| 来源: 网络整理| 查看: 265

2. 寄存器

寄存器进行信息的存储,对于汇编程序员来说,CPU 中的主要部件是 寄存器。8086 CPU 有 14 个寄存器,这些寄存器分别是:

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

2.1 通用寄存器

8086所有的寄存器都是 16 位的,可以存放 两个字节。下面所有的描述都是基于 8086,不再赘述。

通用寄存器通常用来存放一般性的数据。下面是四个通用寄存器:

AX、BX、 CX、 DX

16 位寄存器的逻辑结构:

在这里插入图片描述

一个 16 位的存储器可以存储一个 16 位的数据,存储的数据范围为( 2 0 2^0 20 ~ 2 16 2^{16} 216- 1 )

在这里插入图片描述

每个寄存器都可以分为两个独立的 8 位寄存器来使用。AX 可以分为 AH 和 AL

ax 的 低八位(0 - 7)构成了 al 寄存器,高八位(8 - 15)构成了 ah 寄存器。 在这里插入图片描述

2.2 字的存储

字节:byte ,一个字节由 8 个 bit 组成,可以存在 8 位寄存器中。

字:word 一个字由两个字节组成,可以分为高位字节和低位字节。

一个字可以存在一个 16 位寄存器中。

mov ax, 18 //将18送入寄存器ax mov ah, 78 //将78送入寄存器ah add ax,8 //将寄存器ax中的数值加上 8

注意:在写一条汇编指令或者一个寄存器的名称时不区分大小写。

在进行数据传送或者运算的时候,要注意指令的两个操作对象的位数应当是一致的。8 位 和 16 位一定不要混用。

// 以下全是错误指令 mov ax,bl mov bh,ax mov al,20000 add al, 100H 2.3 物理地址

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

16 位结构的描述了一个 CPU 具有如下结构特性:

运算器一次最多可以处理 16 位数据寄存器的最大宽度是 16 位寄存器和运算器之间的通路为 16 位。

8086 CPU 可以一次性传送 20 位地址,寻址能力为 1 MB 采用一种在内部用两个16位地址合成的方法来形成一个 20 位的物理地址。

8086 CPU 提供两个 16 位的地址,一个是 段地址,一个是 偏移地址。

过程:

段地址 + 偏移地址 => 地址加法器 => 输入输出控制电路 => 通过地址总线传送到内存

在这里插入图片描述

地址加法器采用 物理地址 = 段地址 * 16 + 偏移地址 的方法合成物理地址。

本质含义:CPU 在访问内存的时候,用一个基础的地址(段地址*16)和一个相对基础地址的偏移地址相加,给出内存单元的物理地址。

更一般的说法 :物理地址 = 基础地址 + 偏移地址

段地址 1230 段地址*16 12300 相加获得物理地址:123C8H 偏移地址 00C8 偏移地址 00C8

小技巧:一个 X 进制的数据左移一位,相当于乘以 X

2.4 段寄存器

段并不是把内存单元划分成了一个一个的段。其实内存并没有划分成段,段的划分来自 CPU ,用上述的方式来给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。

在这里插入图片描述

注意:段地址*16 必然是16的倍数,所以一个段的起始地址一定是16的倍数;偏移地址位16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB。

CPU 可以用不同的段地址和偏移地址形成同一个物理地址。

有四个段寄存器: CS、DS、SS、ES 本节我们重点看一下 CS

CS 和 IP 指示了 CPU 当前要 读取指令 的地址。CS 为代码段寄存器 IP 为指令指针寄存器。

设 CS 的地址为 M , IP 中的地址为 N ,8086 CPU将从内存 M * 16 + N单元开始,读取一条指令并执行。

Q:CPU 根据什么将内存中的信息看作指令?

A:CPU 将 CS : IP 指向的内存单元中的内容看作指令。

2.4.1 修改 CS 、IP 的指令

如果想同时修改 CS IP 的指令,需要用 jmp 段地址:偏移地址

上述指令的功能位:用指令中给出的段地址修改CS 偏移地址修改 IP

如果仅想修改 IP 的内容,可用形如 jmp 某一寄存器 的指令完成.。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3