沉ジ寞 发表于 2014-4-14 18:21:50

附注 4 的方法不会用

第十章 11小节提到了 用栈传递参数我看了附注4以后,就试着用栈传递 11小节那个程序,还是不会
    那位大哥给我说一下 这个怎么弄啊   最好能给俩例子 我研究一下谢谢了
    还有,这种方法是不是需要掌握啊!!
   这是11小节的程序:
assume cs:code
data segment
db 'conversation'   ;把这个字符串改成大写
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,0
mov cx,12
call s
mov ax,4c00h
int 21h
s:
and byte ptr ,11011111b
inc si
loop s
ret
code ends
end start

oggplay 发表于 2014-4-14 18:21:51

本帖最后由 oggplay 于 2014-4-14 23:11 编辑

传递参数的方法有3种,寄存器、全局变量、堆栈
用堆栈传递参数就是调用函数之前先把函数的参数压栈即push。然后用相对寻址即ebp来取参数的值。估计你看的那个教程没有详细介绍。

ck329054222 发表于 2014-4-14 23:47:00

这个例子是讲call和ret的例子吧,,
先看书上call和ret的用法。
然后单步调试跟踪call和ret这两个指令执行时ip的变化。

苏门答腊鸭 发表于 2014-4-15 08:28:40

这个是讲Call命令自动将call 下一行命令的IP入栈保存,执行到ret 的时候自动将IP出栈这时CS:IP指向Call下一条指令

沉ジ寞 发表于 2014-4-15 12:18:11

oggplay 发表于 2014-4-14 23:09 static/image/common/back.gif
传递参数的方法有3种,寄存器、全局变量、堆栈
用堆栈传递参数就是调用函数之前先把函数的参数压栈即push。 ...

我看得是王爽的 《汇编语言》 里面没有提到全局变量,看了小甲鱼的视频 也没有提到全局变量和堆栈,哪里有详细介绍的?

oggplay 发表于 2014-4-15 13:45:36

本帖最后由 oggplay 于 2014-4-15 13:49 编辑

http://pan.baidu.com/s/1o6v0v02密码4e76 也可能是4c76

随便找本32位的汇编书籍都有介绍

沉ジ寞 发表于 2014-4-15 13:55:52

oggplay 发表于 2014-4-15 13:45 static/image/common/back.gif
http://pan.baidu.com/s/1o6v0v02密码4e76 也可能是4c76

随便找本32位的汇编书籍都有介绍

进不去 不过还是谢谢你了,我现在学得还是8086汇编   可能以后学到32位 会学的

oggplay 发表于 2014-4-15 16:39:24

沉ジ寞 发表于 2014-4-15 13:55 static/image/common/back.gif
进不去 不过还是谢谢你了,我现在学得还是8086汇编   可能以后学到32位 会学的

。。。。密码 8c76
页: [1]
查看完整版本: 附注 4 的方法不会用