【汇编语言/底层开发】3、通过寄存器进行内存访问

简介: 上篇叙述了8086CPU的通用寄存器和代码寄存器的一些东西。仅仅这些是远远不够的,显而易见的一个原因是,如果CPU只是对自己内部的寄存器进行操作,不能同外部数据进行交互,那么将无法完成任何工作。

上篇叙述了8086CPU的通用寄存器和代码寄存器的一些东西。仅仅这些是远远不够的,显而易见的一个原因是,如果CPU只是对自己内部的寄存器进行操作,不能同外部数据进行交互,那么将无法完成任何工作。

数据段寄存器DS:

8086CPU中的DS寄存器专门用来存放准备访问的数据的段地址。[n]则表示一个偏移地址,这个偏移地址同DS中表示的段地址一起确定最终要访问的内存地址。

以下汇编语句表示从10000H地址中的数据读入寄存器AL中:

MOV BX, 1000
MOV DS, BX
MOV AL, [0]

需要注意的是,不能将段地址直接送入DS中,而需要先将段地址的值保存如通用寄存器,再通过通用寄存器传送到DS。

以下汇编语句表示向10000H中写入数据:

MOV BX, 1000
MOV DS, BX
MOV [0], AL

字的传送:

对于8086等16位CPU,只要在mov等指令中操作16为的寄存器就可以自动识别进行16位数据传送,其中高8位数据存入高地址,低8位数据存入低地址。


汇编指令:

mov、add和sub指令均为两个参数的操作指令。指令操作完成后,结果保存在前面一个操作数中。


栈的概念:

栈在数据结构中是最基本的概念之一,在这里简单描述一下即可:一种只有一个操作点的存储空间,最先存入该存储空间的最后退出,而最后进入的最先退出,即FILO(First In Last Out)规则。


8086中的栈:

提供了push和pop指令,分别用于入栈和出栈操作。栈的每一个操作单元都是2个字节的,16位的数据。sp的范围为0-FFFF,因此栈的最大容量为64k。

实现的方法则是使用了两个寄存器SS和SP,分别作为栈寄存器和段偏移寄存器。这两个寄存器分别用于存放栈顶的段地址和偏移地址。在任意时刻,SS:SP指向栈顶的元素(当栈是空的时候,指向栈底更下一字节的位置)。通常,作为栈的一段内存首先从高地址开始存放数据,由高地址存放至低地址。

执行push指令时,首先改变sp的值,然后向ss:sp传送数据;执行pop指令时,首先从ss:sp处读取数据,然后改变sp的值。

目录
相关文章
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
460 6
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
786 4
|
存储 容器
内存越界访问(Out-of-Bounds Access)
【10月更文挑战第12天】
1822 2
|
Rust 编译器
|
缓存 算法 数据处理
如何选择合适的内存访问模式
【10月更文挑战第20天】如何选择合适的内存访问模式
517 1
|
存储 网络协议 大数据
一文读懂RDMA: Remote Direct Memory Access(远程直接内存访问)
该文档详细介绍了RDMA(远程直接内存访问)技术的基本原理、主要特点及其编程接口。RDMA通过硬件直接在应用程序间搬移数据,绕过操作系统协议栈,显著提升网络通信效率,尤其适用于高性能计算和大数据处理等场景。文档还提供了RDMA编程接口的概述及示例代码,帮助开发者更好地理解和应用这一技术。
|
存储 缓存 数据安全/隐私保护
DMA(Direct Memory Access):直接内存访问
DMA(Direct Memory Access)是一种允许外设直接与内存进行数据传输的技术,无需 CPU 干预。它通过减轻 CPU 负担、提高数据传输效率来提升系统性能。DMA 的工作模式包括直接模式和 FIFO 模式,数据传输方式有单字传送和块传送,寻址模式有增量寻址和非增量寻址。通过缓存一致性协议、同步机制、数据校验和合理的内存管理,DMA 确保了数据在内存中的一致性和完整性。
|
存储 安全 Linux
将文件映射到内存,像数组一样访问
将文件映射到内存,像数组一样访问
357 1
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
468 2
|
10月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
3039 0