0
点赞
收藏
分享

微信扫一扫

几组汇编指令的比较


Purple Endurer 

2006-10-14  第1版 

1、给内存变量赋32位立即数值试验
1)使用push-pop指令
0040100A  |. 68 31323334    PUSH 34333231
0040100F  |. 8F05 50304000  POP DWORD PTR DS:[403050]
00401015  |
指令长度:015h-0Ah=0Bh=11d

2)使用 mov 指令
0040101A  |. C705 50304000 >MOV DWORD PTR DS:[403050],34333231
00401024  |
指令长度:024h-01Ah=0Ah=10d

2、把32位内存变量A的值赋给32位内存变量B
1)使用push-pop指令
0040102E  |. FF35 50304000  PUSH DWORD PTR DS:[403050]
00401034  |. 8F05 4C304000  POP DWORD PTR DS:[40304C]
0040103A  |
指令长度:03Ah-02Eh=0Ch=12d

2)使用 mov 指令通过寄存器0040103F  |. A1 50304000    MOV EAX,DWORD PTR DS:[403050]
00401044  |. A3 4C304000    MOV DWORD PTR DS:[40304C],EAX
00401049  |
指令长度:049h-03Fh=0Ah=10d

3、调用参数为32位数值0的自定义函数
1)直接用32位数值0作参数
0040104E  |. 6A 00          PUSH 0
00401050  |. 6A 00          PUSH 0
00401052  |. 6A 00          PUSH 0
00401054  |. 6A 00          PUSH 0
00401056  |. 6A 00          PUSH 0
00401058  |. E8 18000000    CALL test.00401075
0040105D  |
指令长度:05Dh-04Eh=0Fh=15d

2)把寄存器EAX置0,再把5个EAX作参数
00401062  |. 33C0           XOR EAX,EAX
00401064  |. 50             PUSH EAX
00401065  |. 50             PUSH EAX
00401066  |. 50             PUSH EAX
00401067  |. 50             PUSH EAX
00401068  |. 50             PUSH EAX
00401069  |. E8 07000000    CALL test.00401075
0040106E  |
指令长度:06Eh-062h=0Ch=12d

举报

相关推荐

0 条评论