这有点像三个问题合二为一,无论如何这里是:
1-所以我一直在这里搜索我的问题的答案,有人从某处引用了这个:
堆栈段的地址大小属性决定堆栈指针大小(16、32 或 64 位)。当前代码段的操作数大小属性决定了堆栈指针的递减量(2、4 或 8 个字节)。
有人能以像我这样的汇编新手可以理解的方式向我解释吗?
2-问题是我创建了这个小堆栈:
setStack: ; setup a small stack at 0x9B000
cli ; disable interrupts
mov AX, 0x9000
mov SS, AX
mov SP, 0xB000
sti ; re-enable interrupts
由于我(最肯定缺乏)对 1 处的引用的理解,我假设这个堆栈有一个 16 位指针,并且 push/pop 指令在被调用时递减/递增 2 个字节?我假设正确吗?
3-假设我已经正确假设(即:即使我没有,也像我一样回答下一个问题)下一个语句将在堆栈上执行什么?
push ECX ; ECX is a 32 bit register
在此先感谢 Stack Overflow 的善良居民。