8086汇编语言:第3章寄存器与内存访问

需积分: 4 1 下载量 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提供的栈机制进行复杂操作。这些基础知识对于深入理解计算机系统的底层工作原理至关重要。