|
发表于 2015-5-26 08:54:47
|
显示全部楼层
本帖最后由 ryxcaixia 于 2015-5-26 09:04 编辑
首先明确一个问题
栈只是一种存储结构, 先进后出, 比较适用于进制转换等函数, 以及字符串反转等
但是c语言中的栈(包括STL的stack)并不支持随机存取, 即知道了一个元素相对于首地址的下标
可以直接利用Arr[7](G)得到该位置的元素
除非自己重载[]运算符
如果真的是想随机存取, 即通过下标可以索引到元素值, 那么考虑利用其它存储结构如向量容器.
并不一定要执着用栈这种结构
比如链表不支持随机采取, 但是如果非得要链式结构也要支持随机存取, 虽然有点费力不讨好的意思, 但是自己重定义下标操作符也可以做到.
所以重点看你想干什么, 选取合适的存储结构
回归正题, 如果真的想要知道G的位置(我理解为索引号)
先把G刚到一个寄存器里
然后设置个自增计数器如dx, 每次inc一次
从ss:sp~ss:15一直遍历
每次取出的元素与G相减
再设置个条件判断
当遍历取出的元素与G相减为0时
jz条件跳转
然后再看此时计数器的数值就是偏移地址(既然是1~15入栈, 考虑的ASCII最好是对应的字符, 这样就不会有歧义)
|
|