新人求助汇编栈的问题!
1.单纯入栈中的数据,不用pop,可以用其他方法读取里面的数据么?
2.如何查看栈中的数据?
本帖最后由 swsm 于 2014-2-27 14:09 编辑
assume cs:code
stack segment
db 16 dup (0)
stack ends ;栈段
code segment
start:
mov ax,stack
mov ss,ax
mov sp,16 ;设置栈段的长度
mov ax,0ffffh ;先准备测试数据放ax
push ax ;将ax放进栈里
mov bx,0 ;准备bx先将bx置0
mov bp,sp ;使用寄存器间接寻址要准备bp即将sp栈指针给bp
mov bx,ss: ;获得栈顶的元素放bx
pop dx ;传统的pop指令获得栈顶数据放dx
;这样bx为不用pop指令或得栈顶数据
;dx为pop指令获得的栈顶数据
;ax为放进栈顶的数据
mov ax,4c00h
int 21h
code ends
end start
;程序可以达到目的,楼主看看,有问题,再交流。
:lol:帮顶一下 我顶一下:lol: 本帖最后由 oggplay 于 2014-2-27 18:58 编辑
用esp或者ebp间接寻址 帮顶一下:lol: 栈不是一段独立的内存段 其实和平时的内存段是一体的 所以知道他的地址就可以查看他 栈也是一块普通的内存区域,所以可以用访问内存的方式访问栈 呵呵,C语言就是这样做的。
你可以把 BP指向栈顶。
这样读取:
mov ax,
mov cx,
栈只是一种读取方式。 知道栈的内存地址,然后就可以访问里面的数据了么。 15岁的小朋友 发表于 2014-2-28 09:14 static/image/common/back.gif
栈不是一段独立的内存段 其实和平时的内存段是一体的 所以知道他的地址就可以查看他
难道就是用单步跟踪查看他的内存地址,然后进行寻址取值? 无名侠 发表于 2014-3-1 09:45 static/image/common/back.gif
呵呵,C语言就是这样做的。
你可以把 BP指向栈顶。
这样读取:
你的意思是把他复制出来!
页:
[1]