yuinitiatec++ 发表于 2014-2-27 12:27:53

新人求助汇编栈的问题!




1.单纯入栈中的数据,不用pop,可以用其他方法读取里面的数据么?
2.如何查看栈中的数据?

swsm 发表于 2014-2-27 13:39:16

本帖最后由 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


;程序可以达到目的,楼主看看,有问题,再交流。


      

SunlightPC 发表于 2014-2-27 17:04:20

:lol:帮顶一下

yuzhouliu2000 发表于 2014-2-27 17:13:31

我顶一下:lol:

oggplay 发表于 2014-2-27 17:37:02

本帖最后由 oggplay 于 2014-2-27 18:58 编辑

用esp或者ebp间接寻址

『嫙嵂actor 发表于 2014-2-28 09:00:01

帮顶一下:lol:

15岁的小朋友 发表于 2014-2-28 09:14:23

栈不是一段独立的内存段   其实和平时的内存段是一体的   所以知道他的地址就可以查看他

小名明SIU 发表于 2014-2-28 18:34:37

栈也是一块普通的内存区域,所以可以用访问内存的方式访问栈

无名侠 发表于 2014-3-1 09:45:05

呵呵,C语言就是这样做的。
你可以把 BP指向栈顶。
这样读取:
mov ax,
mov cx,
栈只是一种读取方式。

5个木头心 发表于 2014-3-3 22:06:36

知道栈的内存地址,然后就可以访问里面的数据了么。

yuinitiatec++ 发表于 2014-3-8 11:42:42

15岁的小朋友 发表于 2014-2-28 09:14 static/image/common/back.gif
栈不是一段独立的内存段   其实和平时的内存段是一体的   所以知道他的地址就可以查看他

难道就是用单步跟踪查看他的内存地址,然后进行寻址取值?

yuinitiatec++ 发表于 2014-3-8 11:44:39

无名侠 发表于 2014-3-1 09:45 static/image/common/back.gif
呵呵,C语言就是这样做的。
你可以把 BP指向栈顶。
这样读取:


你的意思是把他复制出来!
页: [1]
查看完整版本: 新人求助汇编栈的问题!