首页
社区
课程
招聘
[求助]向大家请教几个算法问题
发表于: 2007-12-10 08:20 7105

[求助]向大家请教几个算法问题

2007-12-10 08:20
7105
0055BBED    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
0055BBF0    0FB600          MOVZX EAX,BYTE PTR DS:[EAX]          //取第一位数为0
0055BBF3    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]     
0055BBF6    0FB652 01       MOVZX EDX,BYTE PTR DS:[EDX+1]   //取第二位数为2
0055BBFA    03C2            ADD EAX,EDX                 //相加 30+32=62
0055BBFC    B9 05000000     MOV ECX,5            
0055BC01    99              CDQ                              
0055BC02    F7F9            IDIV ECX                      //??? 请问在此整除,取的是余数呢?还是商?  为什么 DL=03 呢?
0055BC04    80C2 34         ADD DL,33                 // ??? 为什么是 DL=03 呢?
0055BC07    8855 F8         MOV BYTE PTR SS:[EBP-8],DL        //??? 这局话是否将十六进制转换为十进制 ?等于 6 呢?


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

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 3689
活跃值: (4247)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
2
eax idiv ecx  在dl保存的是余数。

下一句话是把新计算的结果dl存放到[EBP-8]
2007-12-10 08:46
0
雪    币: 1946
活跃值: (248)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
3
int num1 = 0x30320000;
BYTE result = (*(LPBYTE)(&num1)+*(LPBYTE)(&num1+1))%5 + 0x33;
2007-12-10 08:56
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
4
直接按F5 吧
2007-12-10 14:30
0
雪    币: 1946
活跃值: (248)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
5
神奇的F5
2007-12-10 15:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
F5最直接啊
哈哈
2007-12-10 16:16
0
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
7
啊?
不是F8的吗?
2007-12-10 18:34
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
8
F8是什么?
我只知道F5
现在只会用F5
2007-12-10 19:18
0
雪    币: 439
活跃值: (599)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
一般的汇编基础教程都说得很明白
有符号数除法指令IDIV(Signed Integer Divide Instruction)

指令的格式:IDIV  Reg/Mem
受影响的标志位:AF、CF、OF、PF、SF和ZF

指令的功能是用显式操作数去除隐含操作数(都作为有符号数),所得商和余数的对应关系见表5.3。

表5.3 除法指令除数、被除数、商和余数的对应关系
除数位数   隐含的被除数   商   余数   举例
8位           AX             AL   AH      DIV  BH
...
2007-12-10 21:15
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
感谢楼上的朋友指教,谢谢!!!
F5 ??? 我用的是OD
F5--最大化或恢复活动窗口。
难道到F5还有其他什么功能,我咋试过没有什么,就上面这点功能。
请大家指教。
谢谢!!!
2007-12-11 11:22
0
雪    币: 259
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
11
商放在EAX中,余数放在EDX中
2007-12-12 01:39
0
雪    币: 144
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
IDA 神奇的F5
2007-12-12 03:12
0
雪    币: 466
活跃值: (175)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
13
f8是单步步过,就是按一下走一步,遇到函数不跟进去。
F5是运行,程序就直接跑起来了。
0055BC02    F7F9            IDIV ECX                      //??? 请问在此整除,取的是余数呢?还是商?  为什么 DL=03 呢?
0055BC04    80C2 34         ADD DL,33                 // ??? 为什么是 DL=03 呢?
0055BC07    8855 F8         MOV BYTE PTR SS:[EBP-8],DL        //??? 这局话是否将十六进制转换为十进制 ?等于 6 呢?

我觉得DL的值应该是 02.

IDIV是将 EAX /ECX 。结果商保存在EAX,余数保存在EDX。这里主要用了余数。(加密算法中取余是很常见的操作)

EDX =   62 %5
DL是取 EDX的低字节
最后一句将DL的值保存到栈 EBP -8中。
2007-12-12 09:01
0
游客
登录 | 注册 方可回帖
返回
//