reg :表示寄存器
men: 表示内存
imm: 表示立即数
seg: 表示段
MOV指令:
语法 : MOV reg,reg/men/imm
MOV mem,reg/imm
MOV seg,reg16/mem16
指令操作: 相当于将操作数1中的值,给操作数2
例: MOV EAX,100 此时EAX寄存器中就会保存0x100
{ MOV EAX,100
MOV ECX,EAX } 此时先将EAX赋值100,然后给ECX赋上EAX所保存的值。 此时ECX的值为100
PUSH 指令:
语法:
PUSH reg/mem/seg
指令操作:向栈中压入数据,并且改变ESP的位置
例: PUSH 0x100 此时将0x100压入栈中
PUSH EAX 此时将EAX中的值压入栈中
PUSH AX 此时将AX中的值压入栈中
注意:将数据压入栈中时,会改变栈的栈顶(ESP)位置。位置变化多少是根据压入数据的类型所占的空间大小
例如:PUTH 0x100 数值所占的空间大小为4个字节,所以ESP的值就会减少4
PUTH EAX 因为EAX所占的空间大小为4个字节,所以ESP的值会减少4
PUSH AX 因为AX所占的空间大小为2个字节,所以ESP的值会减少2
POP 指令
语法:
POP reg/mem/seg
操作: 将栈中的数据从栈中弹出,并将栈中的数据保存到操作数中,并且改变ESP的位置
例: POP EAX 将栈中的数据进行弹出,并将数据保存到EAX中
POP CX 将栈中的数据进行弹出,并将数据保存到CX中
注意: 将栈中的数据从栈中弹出时,会改变栈的栈顶(ESP)位置,位置变化多少是根据弹出数据的类型所占的空间大小