不存在 发表于 2013-8-16 10:37:21

汇编中的栈是不是只能定义16个字节?

如果能定义更多的字节,具体的汇编指令时什么?
初始化栈为什么是:
mov ax,1000H
mov ss,ax
mov sp,0010h

看完小甲鱼的视频和书里的解释还是不懂诶

牡丹花下死做鬼 发表于 2013-8-16 11:22:31

这三句代码就是确定了栈的位置
应为物理地址 = 段地址:偏移地址
段地址是不变的 能变得就只有偏移地址
应为这是16位了所以 sp的变化范围就是0000~ffff
也就是说 这个栈的范围就是SS:0000~SS:FFFF

不存在 发表于 2013-8-16 13:33:22

牡丹花下死做鬼 发表于 2013-8-16 11:22 static/image/common/back.gif
这三句代码就是确定了栈的位置
应为物理地址 = 段地址:偏移地址
段地址是不变的 能变得就只有偏移地址


那么如果要定义32字节的栈,汇编指令是怎么样的?

幽〆浅舞丶 发表于 2013-8-16 13:33:25

不是的,栈的定义不是只有16字节,是16字节的倍数~~~因为例题用不了那么多,所以定义成16字节,以后例题会需要大一些的

牡丹花下死做鬼 发表于 2013-8-16 13:34:34

不存在 发表于 2013-8-16 13:33 static/image/common/back.gif
那么如果要定义32字节的栈,汇编指令是怎么样的?

介个 .. 我8086才看到第十章 对于32位 一点都没接触过 我不想误人子弟

不存在 发表于 2013-8-16 13:46:08

牡丹花下死做鬼 发表于 2013-8-16 13:34 static/image/common/back.gif
介个 .. 我8086才看到第十章 对于32位 一点都没接触过 我不想误人子弟

哦哦,还是谢谢了{:5_109:}

Dardy 发表于 2013-8-16 22:41:27

栈不需要定义,也就没有定义大小之说。你可把一段内存以栈的方式来管理操作,如pop push。操作时会改写其中的数据,所以要避免改写不应被改写的内容,如程序中的数据指令。事先定义一些变量,编译后这些变量就占有一些内存空间,以后你的pop push不要超出这些准备用于栈操作的变量所占的内存,这样就能避免改写不该被改写的内存。栈的大小就是指准备用于栈操作的内存,实际使用你可以超出这个大小,显然如果超出,可能会引发问题。

欠你的幸福 发表于 2013-8-17 00:52:02

汗言。我也学过,但我懂一点意思,真的还是说不出……
   看了别人的留言。我真想在真头从学的冲动。

Crazy迷恋. 发表于 2013-8-17 16:00:42

汇编中用定义我觉得不怎么恰当。用预留吧~~我们可以通过 预留一个段然后我们指定它为栈段它就是栈段。我们指定它为数据段就是数据段。这个要看我们怎么用指定它了。

有了幸福的猪 发表于 2013-8-17 20:55:07

这个我也不懂,我看到第五章了 但是打算吧基础篇在从新看一遍,我还是不知道寄存器中的CS 等那些指令的用法,不知道什么时候该用什么

hnqqqblf 发表于 2013-8-24 20:18:51

a13106781 发表于 2013-8-24 21:15:36

学习学习~~

rootquan 发表于 2017-1-12 07:22:40

学习了

酸辣小白菜 发表于 2017-7-30 14:46:33

幽〆浅舞丶 发表于 2013-8-16 13:33
不是的,栈的定义不是只有16字节,是16字节的倍数~~~因为例题用不了那么多,所以定义成16字节,以后例题会 ...

那是否能定义成8字节
页: [1]
查看完整版本: 汇编中的栈是不是只能定义16个字节?