汇编小记16/3/23

Posted iEdson

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编小记16/3/23相关的知识,希望对你有一定的参考价值。

最后一次更新:2016-03-23 19:51:12 


 

寄存器(内存访问)

字单元:字型数据在地址连续的两个内存单元中存储,比如2 3内存单元,2为该字型起始单元,则称该字单元为2地址地址单元


 

用mov指令访问内存单元,可以在mov指令中只给出单元的偏移地址,此时段地址默认在DS寄存器中

[address]表示偏移地址为address的内存单元

内存和寄存器中传送字型数据是,高地址单元和高8位寄存器,低地址单元和低8为寄存器


 

任意时刻,SS:SP指向栈顶元素

和mov不同的是,pop和push不需要给出内存的偏移地址,ss:sp就能确定当前栈顶

cpu的栈机制:先改变sp后写内存的push指令,读内存后改变sp的pop指令

cpu只知道当前执行的指令和当前的栈顶元素,没有overflow的机制

需要自己判断栈有没有出界,需要自己管理栈空间的大小,比如我们人为设定10000H~1FFFFH为栈段

pop和push只是指令,需要我们先定义SS,SP指向栈段(初始化栈顶)

pop和push实质上是一种内存访问指令

 

比如 1000H~1FFFFH这段空间设定为栈段,初始状态栈是空的,此时SS=1000H?(感觉是2000H),SP=0000H

分析:栈为有唯一一个元素时,sp的内容是fffe,则这个元素出栈,sp=sp+2

分析:ss当前栈段地址,是不会改变的,push、pop只改变sp,所以栈顶的变化范围是0~FFFFFH,从栈空的时候的sp=0,一直压栈,直到栈满是sp=0,如果再次压栈,栈顶将环绕,覆盖掉原来的内容,所以一个栈段的最大容量为64KB

 


 

 

 

以上是关于汇编小记16/3/23的主要内容,如果未能解决你的问题,请参考以下文章

数据越界?Open Segment?——汇编程序调试小记

数据越界?Open Segment?——汇编程序调试小记

数据越界?Open Segment?——汇编程序调试小记

朝花夕拾-工作小记

朝花夕拾-工作小记

gcc用法小记