汇编语言(王爽)学习----寄存器(内存访问)

3.1内存中字的存储

16位寄存器存放一个字,高位放高字节
内存中内存单元是字节单元,用两个地址连续的内存单元存放,高位放高字节
字单元:存放一个字的内存单元

3.2DS和[address]

CPU读写一个内存单元,必须知道其物理地址,也就是段地址和偏移地址,DS存放段地址,[]里表示偏移地址
段地址默认在DS中
8086CPU中,不能直接将数据送入DS中

3.3字的传送

16位结构,一次可以传送一个字,只要给出16位寄存器即可

mov、add、sub

在这里插入图片描述add,sub不能对ds进行操作

3.4数据段

我们可以将一组长度为N(N<=64kb)、地址连续、起始地址为16倍数的内存单元当作一个段。这只是我们在编程时的安排,如果要CPU知道,就必须把段地址传送到相应的段寄存器。

3.5

栈的作用非常的大,可以用来保存临时变量、可以用来传递参数
特点:先进后出,后进先出
8086CPU提供入栈(PUSH)和出栈POP两种操作,都是以字为单位的

任意时刻,SS:SP指向栈顶
PUSH:sp=sp-2,指向空位置,放入数据
POP:弹出数据,sp=sp+2,内存中的数据并不会变,当新的数据入栈时,将其覆盖
一段地址当作栈时,栈顶是低地址
要考虑空栈时栈顶的位置,可以从只有一个时看,加上1便是

3.6栈越界

8086cpu只知道栈顶的位置,并不知道栈的大小。所以PUSH和POP都可能会使栈顶不在定义的栈内存中,这样是很危险的,因为其他内存中可能存放了重要的数据,一旦将其改写,会发生严重的错误

我们在定义栈时,一定要定义可能用到栈的最大长度

3.7栈段

同数据段一样,不过要用SS指向段地址即可

若将10000H~1FFFFH这段地址当作栈段,那么栈顶为1FFFF+1,为0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值