首页
社区
课程
招聘
[求助][新手学汇编]在看老罗的书的时候,看其中一个例子 遇到点疑问
发表于: 2016-10-12 19:51 3435

[求助][新手学汇编]在看老罗的书的时候,看其中一个例子 遇到点疑问

2016-10-12 19:51
3435
代码如下
            .elseif ax ==    IDC_NUM1 || ax == IDC_NUM2
                invoke    GetDlgItemInt,hWnd,IDC_NUM1,NULL,FALSE
                push    eax                     ////这里 eax 应该是IDC_NUM1取的值  难道不应该写成mov ecx,eax 吗?
                invoke    GetDlgItemInt,hWnd,IDC_NUM2,NULL,FALSE
                pop    ecx                         ////这里  eax=IDC_NUM2,那么这个pop ecx是什么意思呢?
                invoke    _Mod,ecx,eax

新手疑问,请各位大大代为解惑

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 6
活跃值: (1509)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
获取控件中里面字符串并转换成int类型返回·BOOLbSigned
你的代码 只是做一个 mod函数是一个求余函数   
看明白了吗,只是从文本框获取值 ,求余而已,前面的EAX  在POP ECX   ,到了ECX,
先百度下 了解函数涵义
2016-10-12 19:58
0
雪    币: 12
活跃值: (142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
invoke    GetDlgItemInt,hWnd,IDC_NUM1,NULL,FALSE
mov ecx, eax
invoke    GetDlgItemInt,hWnd,IDC_NUM2,NULL,FALSE
invoke    _Mod,ecx,eax

我尝试改写成这样,为什么不行。
我的疑问是这个
2016-10-12 20:09
0
雪    币: 12
活跃值: (142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
问题弄清楚了
invoke    GetDlgItemInt,hWnd,IDC_NUM1,NULL,FALSE
mov ecx, eax
invoke    GetDlgItemInt,hWnd,IDC_NUM2,NULL,FALSE////在调用这个函数的时候  会改写ecx的值,所以导致运算失败。
invoke    _Mod,ecx,eax

还是谢谢大哥了
2016-10-12 20:17
0
雪    币: 6
活跃值: (1509)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你看下  ECX  是在后面赋值,说明,你可以用一个变量去保存EAX 第一次调用函数的直,如果这样可行,就说明ECX,你前面的MOV ECX, EAX,     这里ECX 汇编第2次调用函数调用  ,被污染, 不知道 你报错 ,有提示还是直错误了
2016-10-12 20:17
0
雪    币: 12
活跃值: (142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
恩 ecx会被污染
没考虑到这个问题
2016-10-12 20:24
0
雪    币: 16386
活跃值: (1600)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
行与不行 要看最后的返回值决定
多年前论坛有篇winzip明码弹错框搞成显示正确的,当时 我做不到!
多年后我做到了,换成另一款system mechanic,同样道理,东西要学会变通
不是前辈说的每句都能对得上茬子的 ~~
2016-10-13 06:57
0
游客
登录 | 注册 方可回帖
返回
//