8086汇编语言:第3章寄存器与内存访问
需积分: 4 173 浏览量
更新于2024-07-30
收藏 848KB PPT 举报
"《汇编语言》清华大学课件 第3章"
在计算机科学中,汇编语言是与机器语言紧密相关的编程语言,它允许程序员直接操纵硬件系统。本课件,出自王爽所著的《汇编语言》并由清华大学出版社出版,详细介绍了汇编语言中的关键概念,特别是关于内存访问的机制。以下是对各知识点的详细解释:
3.1 内存中字的存储:内存是计算机存储数据的主要场所,字是内存中数据的基本单位。在8086CPU中,字是由两个字节组成的,高字节在前,低字节在后。例如,如果0地址处开始存放20000H,那么0号单元存放的是字的高字节,1号单元存放的是低字节。
3.2 DS和[address]:DS(Data Segment)寄存器是8086CPU中用于存放数据段地址的寄存器。在访问内存时,通常需要结合DS和偏移地址(address)来形成完整的20位物理地址。例如,若DS=1000H,要访问地址为2000H的内存单元,实际的地址计算为DS*16 + 偏移地址 = 1000H * 16 + 2000H。
3.3 字的传送:字的传送是指在内存和CPU寄存器之间,或内存的两个不同位置之间移动数据。这涉及到如`mov`指令,用于将一个操作数的值复制到另一个操作数。
3.4 mov、add、sub指令:`mov`指令用于无条件地将源操作数的值移动到目的操作数;`add`用于执行加法操作,`sub`用于执行减法操作,这些指令是汇编语言中最基本的算术运算。
3.5 数据段:在8086系统中,数据可以组织在不同的段中,数据段是用来存储程序和变量的内存区域,其起始地址由DS寄存器指定。
3.6 栈:栈是一种后进先出(LIFO)的数据结构,CPU内部提供了支持栈操作的硬件机制。栈常用于函数调用、保存临时数据等场景。
3.7 CPU提供的栈机制:8086CPU中,栈顶位置由SP(Stack Pointer)寄存器维护,每次压栈或弹栈,SP会自动更新以跟踪栈顶位置。
3.8 栈顶超界的问题:当连续的栈操作导致栈顶位置超出预设的栈区范围时,就会发生栈溢出,这可能导致程序崩溃或其他未定义的行为。
3.9 push、pop指令:`push`指令用于将数据压入栈中,`pop`指令则用于从栈顶弹出数据。这两个指令经常用于保存和恢复CPU寄存器的状态,以及在函数调用中传递参数和返回值。
3.10 栈段:栈也可以组织在特定的内存段中,这个段被称为栈段,其起始地址通常由SS(Stack Segment)寄存器指定,与DS类似,但专门用于管理栈的存储。
通过学习这一章的内容,读者将能够理解如何通过汇编语言有效地访问和操作内存,包括数据的存储、传送以及利用CPU提供的栈机制进行复杂操作。这些基础知识对于深入理解计算机系统的底层工作原理至关重要。
2009-01-18 上传
2019-04-25 上传
2011-09-24 上传
2009-10-23 上传
2010-11-15 上传
2015-05-05 上传
2008-07-23 上传
2024-01-13 上传
2010-04-14 上传
hongly168
- 粉丝: 0
- 资源: 41
最新资源
- WordPress作为新闻管理面板的实现指南
- NPC_Generator:使用Ruby打造的游戏角色生成器
- MATLAB实现变邻域搜索算法源码解析
- 探索C++并行编程:使用INTEL TBB的项目实践
- 玫枫跟打器:网页版五笔打字工具,提升macOS打字效率
- 萨尔塔·阿萨尔·希塔斯:SATINDER项目解析
- 掌握变邻域搜索算法:MATLAB代码实践
- saaraansh: 简化法律文档,打破语言障碍的智能应用
- 探索牛角交友盲盒系统:PHP开源交友平台的新选择
- 探索Nullfactory-SSRSExtensions: 强化SQL Server报告服务
- Lotide:一套JavaScript实用工具库的深度解析
- 利用Aurelia 2脚手架搭建新项目的快速指南
- 变邻域搜索算法Matlab实现教程
- 实战指南:构建高效ES+Redis+MySQL架构解决方案
- GitHub Pages入门模板快速启动指南
- NeonClock遗产版:包名更迭与应用更新