【汇编】学习笔记——第五篇

来源:互联网 发布:linux定时脚本 编辑:程序博客网 时间:2024/05/23 23:33
【3.6主要摘要】
栈:
栈是一种具有特殊的访问方式的存储空间
特殊性:最后进入这个空间的数据,最先出去
栈有两个基本操作:入栈 和 出栈
入栈就是讲一个新的元素放到栈顶
出栈就是从栈顶取出一个元素
栈顶的元素总是最后入栈
栈的这种操作规则被称为:LIFO(last in first out  后进先出)


【3.7主要摘要】
8086CPU提供入栈和出栈指令,最基本的两个是PUSH(入栈) 和 POP(出栈)
8086CPU的入栈和出栈操作都是以字为单位进行的.
字型数据用两个单元存放,高地址单元存放高8位,低地址单元存放低8位.
8086CPU中,有两个寄存器,段寄存器SS和寄存器SP
   栈顶的段地址存放在SS中,偏移地址存放在SP中
   任意时刻,SS:SP指向栈顶元素
8086CPU中,入栈时,栈顶从高地址向低地址方向增长
栈空,SS:SP指向栈空间最高地址单元的下一个单元


【3.9主要摘要】
栈空间也是内存空间的一部分,它只是一段可以以一种特殊的方式进行访问的内存空间
push 和 pop指令格式:
push 寄存器
pop 寄存器
push 段寄存器
pop 段寄存器
push 内存单元
pop 内存单元
push、pop实质上就是一种内存传送指令,可以在寄存器和内存之间传送数据
栈顶的变化范围最大为:0~FFFFH


【关于段】
对于数据段,将它的段地址放在DS中,用mov、add、sub等访问内存单元的指令时,CPU就将我们定义的数据段中的内容当做数据来访问
对于代码段,将它的段地址放在CS中,将段中第一条指令的偏移地址放在IP中,这样CPU就将执行我们定义的代码段中的指令
对于栈段,将它的段地址放在SS中,将栈顶单元的偏移地址放在SP中,这样CPU在需要进行栈操作的时候,比如执行push、pop指令等,就将我们定义的栈段当做栈空间来使用
0 0