汇编语言基础-寄存器(内存访问)

汇编语言基础-寄存器(内存访问)

在上一章中了解了CS,IP,[AX,BX,CX,DX]等寄存器的工作流程,直到现在还未与计算机CPU以外的器件产生通信,在这一章中我们通过了解DS,SS,SP等寄存器,将CPU与内存连接起来建立通讯

内存中字的存储

在CPU中用16位寄存器来存储一个字,高八位存放高位字节,低八位则用来存放低位字节,下图则是对于一块内存其内部详细结构,除了图中所示的排序外任意两个相邻的八位字节存储空间均可以作为一个字的存储空间。
在这里插入图片描述

DS和[address]

CPU在读写一个内存单元的过程中首先要想读取指令或者代码段一样,通过段地址+偏移地址的方式获取内存数据的物理地址,对于数据的存储来说DS则充当数据段地址的作用,并且数据段地址存储器DS只能通过【AX,BX,CX,DX】等寄存器进行赋值。对于内存数据读取汇编语言代码一般如下

MOV BX,内存数据段地址
MOV DS,BX
MOV 偏移地址,

MOV、ADD、SUB指令

在这里插入图片描述
在这里插入图片描述

数据段

对于8086CPU我们可以将一组长度位N(N<=64KB)的地址连续,起始地址位16倍数的内存单元作为数据段,访问数据段中的数据通常采用 DS[数据段地址]:[数据偏移地址] 来访问。

SS,SP寄存器

对于8086CPU其通过SS,SP两个寄存器实现了对于栈的访问,栈是一种先进后出的数据结构,只在栈顶端存在入栈以及出栈的操作,因此对于SS,SP寄存器,SS负责存放栈顶的段地址,而SP则存放当前栈顶的偏移地址,对于任意时刻SS:SP指向栈顶元素地址,同样的对于栈段寄存器SS来说,其赋值手段也仅仅通过其他寄存器给他赋值。

PUSH,POP指令

对于PUSH入栈操作CPU的执行流程如下,概括来说也就是偏移地址减二之后在写入数据

PUSH AX 
{
	SP=SP-2
 	MOV SS:SP,AX
}

对于POP出栈操作CPU的执行流程如下,概括来说也就是将数据赋值给指定地址之后在将偏移地址加二

POP
{
	MOV AX,SS:SP
	SP=SP+2
}

在这里插入图片描述

总结

对于以上的寄存器我们可以通过一张图来描述CPU与各部分寄存器的交互方式。
在这里插入图片描述

课后题3.1

在这里插入图片描述

课后题3.2

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值