汇编语言(第3版)-寄存器

在这里插入图片描述

寄存器

cpu: 运算器、控制器、寄存器。

通用寄存器

AX,BX,CX,DX

8086的CPU寄存器

寄存器作用说明
AX通用寄存器,存放一般性数据。为了兼容老版的8为寄存器,又分为了AH和AL。int中断时,会看ax中的值。
BX通用寄存器,存放一般性数据。 惯用法:存放内存偏移地址。
CX通用寄存器,存放一般性数据。结合loop实现循环。debug时,默认值为程序的长度。
DX通用寄存器,存放一般性数据。
SI类似bx, 可以存放内存偏移地址。不过不能拆成2个8位寄存器。
DI类似bx, 可以存放内存偏移地址。不过不能拆成2个8位寄存器。
SP栈的偏移地址
BP
IP指令指针寄存器
CS代码段寄存器。 code stack。指向指令
SS段寄存器。stack stack。指向栈顶的段地址。SS:SP 指向栈顶元素。
DS段寄存器。 data stack 。指向数据。 mov AX, [0], 转移内存中的值时,DS指定内存的段地址。
ES段寄存器
PSW

字在寄存器中的存储

8086CPU所有的寄存器都是16位的,可以存放2个字节。也是俗称的一个字。

一个内存单元可以放8位数据,即8Bit, 1Byte。

H = Hex

B = Binary

几条汇编指令

汇编指令示例

汇编指令控制CPU完成的指令用高级语言和描述
mov ax, 18ax = 18
mov ah, 78ah = 78
add ax, 8ax = ax +8
mov ax,bxax = bx
add ax,bxax = ax+bx

AX = AH+AL, 当AL+数 进制后,不会存到AH, 而是直接抛弃。 是否进位有个单独的寄存器存放。

物理地址

16位结构的CPU

CPU特征

  1. 运算器一次最多可以处理一个字的数据。
  2. 寄存器的最大宽度为一个字宽。
  3. 寄存器和运算器之间的通路是一个字宽。

8086给出物理地址的方法

  • 8086有20位地址总线,可传送20位地址,寻址能力为1M = 2 20 2^{20} 220
  • 8086内部为16位结构,它只能传送16位的地址,表现出的寻址能力还有64K = 2 16 2^{16} 216

8086CPU采用一种在内部用两个16位地址合成的方法来下形成一个20位的物理地址。即段地址+段偏移

段地址x16+偏移地址=物理地址 的本质含义

物理地址 = 段地址 * 16 + 偏移地址。

20位-16位 多出来的4位 能表示 16个值。( 2 4 2^4 24)

段的概念

内存是连续的内存单元,但是由于CPU的局现性,不得不用 段+偏移量 来表示一个内存地址。

所以看起来就是一个一个段。

段寄存器

CS、DS、SS、ES。

CS和IP

在8086机中,任意时刻,CPU将CS:IP 指向的内容当做指令执行。

8086CPU的工作过程

  1. 从CS:IP 指向的内存单元读取指令,读取的指令进入指令缓冲器。
  2. IP=IP+所取指令的长度,从而指向下一条指令。
  3. 执行指令,回到1.

修改CS和IP

如何修改CS、IP寄存器

  1. jmp 段地址:偏移地址 执行后。CS=段地址, IP=偏移地址
  2. jmp 合法的寄存器: 执行后,IP的内容 更新为 合法的寄存器的内容。

代码段

我们可以将长度为N的一组代码,存在一组地址连续、起始地址为16的倍数的内存单元中,我们可以认为,这段内存是用来存放代码的,从而定义了一个代码段。

设置好CS和IP 就好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值