下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈...
本帖最后由 微笑向暖~ 于 2017-11-2 21:34 编辑下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:
想问一下这个圈住的是什么意思?
我感觉这个只用设置一个栈段就好呀,先push再pop,为什么设置10个栈段,用意何在???
求大神指教!!!
把栈里的数据拿出来,给cs:的这个地址,就不用通用寄存器当临时变量 第二个处用了段前缀CS,表明这是以CS为段地址,偏移地址为的内存单元。
当第一次bx=0时,该内存单元指向的就是第一个dw处的位置,也就是数据“0123H”存放的地方。
以下类推。
push
pop cs:
这两句连起来就是用内存单元0000:的值依次取代第一个伪指令dw后的8个字数据。(按低地址到高地址的次序) 丶忘却的年少o 发表于 2017-11-2 21:30
把栈里的数据拿出来,给cs:的这个地址,就不用通用寄存器当临时变量
我感觉这个只用设置一个栈段就好呀,先push再pop,为什么设置10个栈段,用意何在???
求大神指教!!! 兰陵月 发表于 2017-11-2 21:34
第二个处用了段前缀CS,表明这是以CS为段地址,偏移地址为的内存单元。
当第一次bx=0时,该内存单元指向 ...
我感觉这个只用设置一个栈段就好呀,先push再pop,为什么设置10个栈段,用意何在???
求大神指教!!! 微笑向暖~ 发表于 2017-11-2 21:35
我感觉这个只用设置一个栈段就好呀,先push再pop,为什么设置10个栈段,用意何在???
求大神指教!! ...
哪里有设置10个栈段,就一个啊
段ss值=cs的值 SP指向36 兰陵月 发表于 2017-11-2 21:37
哪里有设置10个栈段,就一个啊
段ss值=cs的值 SP指向36
说错了,我是说栈段设置一个字节就OK了,为什么要设置10个字节,这么做的用意何在??? 本帖最后由 兰陵月 于 2017-11-2 22:26 编辑
微笑向暖~ 发表于 2017-11-2 22:15
说错了,我是说栈段设置一个字节就OK了,为什么要设置10个字节,这么做的用意何在???
第一,栈压入或者弹出都是以字为单位,不存在一个字节单元的问题。我理解你说的应该是一个最小存储单元的意思,也就是一个字。
第二,栈保持适当的空间,能减少很多错误的产生,有时候,栈里绝不仅仅是我们自己操作的那一部分内容,可能还有系统操作的相关内容。
最主要的用意还是在于让人养成良好的习惯,在设置栈大小的尽量适当设置,10个字节大小的栈已经是很小,虽然可以更少,但是又何必呢。我们不缺那点空间。照你说的只设置一个字大小的栈,压入一下就没了,再压就越界了。假如你后面还有要用到栈的地方呢,还有需要用栈保存较多数据的地方呢。
所以,别把栈弄的那么小,一个人要是穿着很小一号的衣服,肯定也很难受的。{:10_258:} 兰陵月 发表于 2017-11-2 22:22
第一,栈压入或者弹出都是以字为单位,不存在一个字节单元的问题。我理解你说的应该是一个最小存储单元 ...
醍醐灌顶,谢谢 微笑向暖~ 发表于 2017-11-2 23:31
醍醐灌顶,谢谢
{:10_254:}{:10_254:}{:10_254:}
页:
[1]