几组汇编指令的比较

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值