【汇编语言 - 王爽】寄存器(内存访问)

本文介绍了8086汇编语言中关于内存中字的存储方式,DS和地址的关系,以及字的传送、mov、add、sub指令的使用。详细阐述了数据段的概念,并探讨了栈的运作机制,包括CPU提供的栈操作、栈顶超界问题和push、pop指令的应用。最后,讨论了栈段的定义和初始化。
摘要由CSDN通过智能技术生成

一、内存中字的存储

CPU中,用16位寄存器来存储一个。高八位存放高位字节,低八位存放低位字节

内存中,由于内存单元字节单元(一个单元存放一个字节),则一个要用两个连续的内存单元来存放。低地址存放低位字节高地址存放高位字节

例如:

在这里插入图片描述

如图3.1,用0、1两个内存单元存放数据20000(4E20H)

字单元:存放一个型数据(16位)的内存单元,由两个地址连续的内存单元组成。

在后面的学习中,将起始地址为N的字单元简称为N地址单元。例如:一个字由2、3两个内存单元组成,起始地址为2,所以可以说这是2地址字单元。

练习:

  1. 0地址单元存放的字节型数据是多少?

  2. 0地址字单元存放的字型数据是多少?

  3. 1地址字单元存放的字型数据是多少?

答:

  1. 20H

  2. 4E2000H

  3. 4686(124EH)

二、DS和[address]

CPU读写一个内存单元的时候, 必须先给出这个内存单元的地址, 在8086PC 中,
内存地址由段地址和偏移地址组成。

8086CPU 中有一个DS 寄存器, 通常用来存放要访问数据的段地址

比如我们要读取10000H 单元的内容, 可以用如下的程序段进行。

mov bx,1000H

mov ds,bx

mov al,[0]

上面的3 条指令将10000H( 1000:0)中的数据读到al 中。

mov指令的几种传送:

  • 数据直接送入寄存器
  • 将一个寄存器的内容送入另一个寄存器
  • 将一个内存单元中的内容送入一个寄存器
    • 语法:mov 寄存器名,内存单元地址
    • […]表示一个内存地址 ,例如[0]中的0表示偏移地址,而段地址存在ds中,指令执行时自动获取
    • 8086CPU不支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值