| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4764 人关注过本帖, 1 人收藏
标题:请教罗云彬汇编中的一段程序
只看楼主 加入收藏
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
[bo][un]Hallelujah[/un] 在 2008-9-19 17:49 的发言:[/bo]

还有一个问题,怎样把硬盘上的图片上传到论坛上。

要用程序来实现?
2008-09-19 17:56
Hallelujah
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-9-18
收藏
得分:0 
不是,我指我回帖时怎么发不上图片,我写的程序有载图大家看得更直观点。
2008-09-19 19:54
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
发帖或回帖的时候,请注意观察页面的下方"上传附件",并且注意自己的文件格式是否符合要求就可以了.
2008-09-19 22:25
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
示例:

001.jpg (66.45 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-09-19 22:33
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
示例:

001.jpg (66.45 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-09-19 22:34
Hallelujah
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-9-18
收藏
得分:0 
谢了,这是程序运行后的效果:a就是十六进制10,证明了我的运算。

2.jpg (5.4 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-09-20 08:34
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
偶一直搞不懂这些浮点之类的东西…
2008-09-20 11:53
arsionbc
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-9-20
收藏
得分:0 
_CalcX        proc    _dwDegree,_dwRadius
        local    @dwReturn

        fild    dwCenterX              ;st(0)=dwCenterX
        fild    _dwDegree              ;st(0)=_dwDegree,st(1)=dwCenterX
        fldpi                          ;st(0)=pi,st(1)=_dwDegree,st(2)=dwCenterX
        fmul            ;角度*Pi       ;st(1)=st(0)*s(1),然后s(0)出栈,于是s(0)=角度*pi,st(1)=_dwDegree,st(2)=dwCenterY
        fild    _dwPara180
        fdivp    st(1),st    ;角度*Pi/180
        fsin            ;Sin(角度*Pi/180)
        fild    _dwRadius
        fmul            ;半径*Sin(角度*Pi/180)
        fadd            ;X+半径*Sin(角度*Pi/180)
        fistp    @dwReturn
        mov    eax,@dwReturn
        ret

_CalcX        endp


以下我没时间帖了,用OD反编译一下,跟踪一下st的八个寄存器的用法,只是有两个指令特珠,就是fadd = faddp st(1),st(0)  即 st(1)=st(1)*st(0),算完后自动把st(0)出栈,fmul=fmulp st(1),st(0)和fadd一样
2008-09-21 20:31
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
以下我没时间帖了,用OD反编译一下,跟踪一下st的八个寄存器的用法,只是有两个指令特珠,就是fadd = faddp st(1),st(0)  即 st(1)=st(1)*st(0),算完后自动把st(0)出栈,fmul=fmulp st(1),st(0)和fadd一样
==========================================================
LS匆忙中打错了个地方~~上面的"即 st(1)=st(1)*st(0)",改一下"即 st(1)=st(1)+st(0)"
2008-09-22 17:29
asli33
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-10-14
收藏
得分:0 
刚好也看到这里,发现有些问题不大懂,学习了下两位的帖子
用OD跟踪了一下,执行如下:
1 .fild     dwCenterX    st(0)<--dwCenterX
2 .fild     _dwDegree    st(0)<--_dwDegree,                st(1)<--dwCenterX
3 .fldpi        st(0)<--pi,                    st(1)<--_dwDegree,        st(2)<--dwCenterX
4 .fmulp st(1),st    st(0)<--pi*_dwDegree,                st(1)<--dwCenterX
5 .fild     _dwPara180    st(0)<--180,                    st(1)<--pi*_dwDegree,        st(2)<--dwCenterX
6 .fdivp st(1),st    st(0)<--pi*_dwDegree/180,            st(1)<--dwCenterX
7 .fsin            st(0)<--sin(pi*_dwDegree/180),            st(1)<--dwCenterX
8 .fild     _dwRadius    st(0)<--_dwRadius,                st(1)<--sin(pi*_dwDegree/180),    st(2)<--dwCenterX
9 .fmulp st(1),st    st(0)<--_dwRadius*sin(pi*_dwDegree/180),    st(1)<--dwCenterX
10.faddp st(1),st    st(0)<--dwCenterX+_dwRadius*sin(pi*_dwDegree/180)
11.fistp @dwReturn    @dwReturn=dwCenterX+_dwRadius*sin(pi*_dwDegree/180)

其中第4、9、10三行变化如下:
4 .
fmul             原文件
fmulp st(1),st   反汇编结果
9 .
fmul             原文件
fmulp st(1),st   反汇编结果
10.
fadd             原文件
faddp st(1),st   反汇编结果
不明白为什么会变成这样,
源文件中并未包含对出栈操作的考虑,程序为何会这样变动达到堆栈平衡的?
2008-10-14 18:36
快速回复:请教罗云彬汇编中的一段程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019365 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved