|
发表于 2019-12-11 17:34:09
|
显示全部楼层
浙江省台州市
本帖最后由 aiksie 于 2019-12-11 18:07 编辑
我是没有系统的学习过汇编包括易语言,都是百度自学,完全是依靠自己的理解。
你说的那个子程序头已经保存ebp,就是因为我知道开头已经有了那个
push ebp
mov ebp,esp
所以我后面才加入那个
mov esp, ebp
pop ebp
还有push ecx、pop ecx 都是为了恢复原先寄存器的值,易语言自身编译出来的子程序基本都是这样的,我这样写是依葫芦画瓢。
但是 leave 这个不应该加上去。 和 后面 pop ebp重复了,之前我这样写完全没有意识到这样写是有问题的,程序运行起来也没有遇到过崩溃。
push ebp
mov ebp,esp
push ecx //81
mov eax,dword ptr ss:[ebp+0x8] //139,69,8
mov ecx,dword ptr ss:[ebp+0xC] //139, 77, 12
shl al,cl // 210, 224
pop ecx //这个忘了 89
mov esp,ebp //139, 229
pop ebp //93
retn 0x8 //194, 8, 0
|
汇编左移 | 整数型 | | |
欲移动的整数 | 整数型 | | | | 欲移动的位数 | 整数型 | | | | 置入代码 ({ 81, 139, 69, 8, 139, 77, 12, 210, 224, 89, 139, 229, 93, 194, 8, 0 })返回 (-1 )
你觉得哪里写的不好,都可以给我改了。
|
|