汇编指令基础

来源:互联网 发布:windows内核存在漏洞 编辑:程序博客网 时间:2024/06/05 17:26

1. 堆栈相关指令

    push:把一个32位的操作数压入堆栈中。这个操作导致esp被减去4。esp被称为栈顶,顶部是地址小的区域,那么压入堆栈的数据越多,esp就越来越小。在32位平台上,esp每次减少4个字节。

    pop:与pop相反,esp被加4,一个数据出栈。pop的参数一般是寄存器,栈顶的数据被弹出到这个寄存器中。

虽然一般不把sub、add这些算术指令和call、ret这样的跳转指令归入堆栈相关指令中,但是实际上在函数参数传递过程中,sub和add最长用来操作堆栈;call和ret对堆栈也有影响。

    sub:减法。第一个参数是被减数所在的寄存器;第二个参数是减数。

    add:加法。(与sub类似)

    ret:返回。相当于跳转回调用函数的地方。(对应的call指令来调用函数,返回到call之后的下一条指令)

    call:调用函数。

指令对堆栈的影响:有的指令会自动的操作堆栈,这也正是call与jmp的不同之处。call会把它的下一条指令的地址压入堆栈中,然后跳转到它调用的函数的开头处;而单纯的jmp是不会这样做的。同样,ret指令也会自动地弹出返回地址。

    call的本质相当于push+jmp;ret的本质相当于pop+jmp。

 

2. 数据传送指令

    mov:数据移动。第一个参数是目的,第二个参数是来源。

    xor:异或。虽然是逻辑运算指令,但是xor eax, eax这样的操作常用来代替mov eax, 0。好处是速度更快,占用字节数更少。

    lea:取得第二个参数的地址后放入到前面的寄存器(第一个参数)中。注意:常用lea来做何mov同样的事情,比如赋值。

             lea edi, [ebp-0cch] 等同于 mov edi, ebp-0cch   但是这样的mov指令是错误的,因为mov不支持后一个操作数写成寄存器减去数字。

    stos:串存储指令。

 

3. 跳转与比较指令

    jmp:无条件跳转。

    jg:大于的时候跳转。通常前面有一条比较指令。

    jl:小于的时候跳转。通常前面有一条比较指令。

    jge:大于的时候跳转。通常前面有一条比较指令。

    cmp:比较。往往是jg、jl、jge之类的条件跳转指令的执行条件。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 无效安装包与系统不兼容怎么办 圣空法师持五戒范戒了怎么办 美航空要是不改中国台湾标志怎么办 淘宝买的东西质量有问题怎么办 天猫618长达20天c店怎么办 新开的淘宝店铺没有生意怎么办 淘宝账号登陆限制用不了花呗怎么办 闲鱼买家签收后说是空盒怎么办 在咸鱼卖东西买家恶意退货怎么办 淘宝联系不上买家物流返回怎么办 换了支付宝绑定手机号退款怎么办啊 淘宝评价错了追评评价错了怎么办 淘宝给客户退款后还给差评怎么办 淘宝账号处于下单保护状态怎么办 淘宝卖家物流单号写错了怎么办 有个人给我发直播消息怎么办 网贷申请多了现在秒拒怎么办 顺丰快递寄的瓜果坏了怎么办 淘宝退货快递公司填错了怎么办 不小心把淘宝账号注销了怎么办 腾讯视频会员开通一个月贵怎么办 微交易买美国指数输了四千块怎么办 淘宝地址中包含了违禁词怎么办 微信支付失败但是钱扣了怎么办 支付宝向别人收款交易关闭了怎么办 从淘宝充的晋江币充值异常怎么办 接手转让店铺会员要求退卡怎么办 转转买手机卖家拒绝退款怎么办 淘宝买的东西电话号码留错了怎么办 平板电脑没电关机没保存文件怎么办 恢复出厂设置需要谷歌账号怎么办 华为手机云端里照片删除了怎么办 客户退货卖家一直没收到货怎么办 在淘宝买到假货投诉不管用怎么办 差评不接电话不回旺旺不要钱怎么办 饿了么同行恶意差评怎么办 苹果手机更新后淘宝用不了怎么办 淘宝网快递丢件了买家怎么办 评价后忘了截图五星好评怎么办 在淘宝被骗了好评返现怎么办 苹果4s微信版本过低怎么办