. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->附注
主题 : :  附注4  有错误啊!!!  [待解决] 回复[ 4次 ]   点击[ 1086次 ]  
zhenglxd
[帖 主] [ 发表时间:2009-05-21 13:25 ] 
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05
辅助4 要实现的 是 a,b,c赋值后 c=a+b,c++
但是 在汇编中 分开看 似乎都实现了
可是关键是 它不是连续的
比如a=1,b=2,c=0
最终结果应该是 1+2+1=4 c=4
但是他的汇编中 c=1+2存放在栈中 可是最后 返回的结果却是吧 原始数据 c=0 作c++结果等于1
不知道是故意这样 还是有误
我不理解
我认为 c=0是一个变量 c=a+b中的c是另一个变量 (2个地址存放的东西不一样)
但是 最后c++呢? c++是指c=a+b后c++还是 就是纯粹的c++?
按c程序执行顺序我认为最终结果应该是 c=4
汇编中 最后一行inc word ptr [bp-2]错了
应该是[bp-8]才对
wsrf
[第1楼] [ 回复时间:2009-05-21 18:11 ] 
荣誉值:33
信誉值:0
注册日期:2008-10-16 10:01
汇编中 最后一行inc word ptr [bp-2]错了 
应该是[bp-8]才对
----------------------------------
是楼主理解错误,书上没有问题。ss:[bp-2]就是main函数中c的存储位置,BP的值始终没变。


C语言中,只有值传递,也就是说main()中的C和add()中的C它们只有值是一样的,都有自己的存储空间,在add()中进行了c=a+b,此时add()中的c的值为3,但是main()中的c仍然为0.调用完add()函数后,它里面的c便会被释放。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved