汇编常用指令的使用

MOV

MOV A,123

就是直接给A赋值
这句话的意思,就是,把123放在A里面

mov dword ptr ds[0x4562],edx
把edx的值,放在地址为0x4562的里面

add

mov eax,1			// eax里面赋值为1(相当于:int eax=1)
add eax,8			//eax+8然后,再把值给eax,这个时候,eax等于8(相当于:eax=eax+8)

sub


mov eax,8			// eax里面赋值为1(相当于:int eax=1)
sub eax,5			//eax-5然后,再把值给eax,eax等于3(相当于eax=eax-8)

逻辑与and

逻辑或or

逻辑非not

逻辑异或xor(同为0,异为1)

在这里插入图片描述

移位指令

左移动:sal;
右移动:sar;
sal eax,1 //算数左移与逻辑左移,功能是一样的
00000010这个将会左移动一位变成:00000100,,
因为要保持8位,不够的地方,会自动用0补齐
......................................................................................
sar eax,1
10001000这个将会向右移动一位,但是,最高位不会变。。。右移后,变成10000100
因为要保持8位,不够的地方,会自动用0补齐


逻辑移位指令

逻辑左移:SHL;
逻辑右移动:SHR;
sal eax,1 //算数左移与逻辑左移,功能是一样的
00000010这个将会左移动一位,最低位置0,变成:00000100,,

......................................................................................
sar eax,1
10001000这个将会向右移动一位,最高位置0。。。右移后,变成01000100


test。cmp指令

test指令:实际上就是逻辑与运算,但不同的是,test指令不会改变参与运算的参数的值,只会改变标志位的值。
cmp指令:实际上就是减法运算,但不同的是,cmp指令不会改变参与运算的参数的值,只会改变标志位的值。

pust。pop指令

push 压栈指令

push ebp 直接把ebp的值,给到栈里面
······它执行了2步操作:1.置顶2.赋值

pop 出栈指令

push ebp 直接把给栈里面值,取出来给ebp
······它执行了2步操作:1.还原之前所在的位置(优先级?反正我是这么理解的)2.赋值

栈:先进后出,后进先出

jmp,nop指令

jmp:无条件跳转指令
nop指令:空指令(CPU什么事情也不做,在那里发呆)

jcc跳转指令,表

call,retn指令

call:
实际上是执行了。1.jmp+函数地址—和----2.push call函数指令的下一行的地址

retn:
实际上就是pop eip

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值