43、深入探索汇编与C交互及文件I/O操作

深入探索汇编与C交互及文件I/O操作

1. 灵活调用程序的技巧

在汇编代码中,我们可以通过两种方式调用程序,下面的代码片段展示了这一点:

mov ebx, pull8 ; 将标签pull8代表的地址加载到EBX
call pull8      ; 调用pull8代表的地址
call ebx        ; 调用EBX中存储的地址

这种做法的好处是可以将程序调用当作参数来处理。例如在 randtest 里,我们把很多代码提取到 puller 程序中,然后针对不同大小的随机数多次调用 puller 。具体操作是把正确的随机数程序地址加载到 EDI ,再传递给 puller

; 创建并显示一个8位随机值数组
mov edi,pull8    ; 将随机数子程序的地址复制到edi
call puller      ; 按照[pulls]中的要求提取尽可能多的数字

puller 程序里,通过 CALL EDI 指令调用所需的随机数程序:

puller:
    mov esi,dword [pulls] ; 将提取计数放入ESI
.grab: 
    dec esi               ; 递减ESI中的
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值