ret:pop ip 用栈中的数据修改IP类容,实现近转移
retf :pop cs;pop ip
call:当前IP或者CS类容压栈。再进行转移。
具体用法:
① call 标号 push ip;
jmp near ptr 标号(注意一下jmp是怎么实现转移的)通过位移实现。
②call far 标号 push cs;
push ip;
jmp far ptr 标号
③call reg push ip;
jmp reg;
④call word ptr 内存单元地址 push ip;
jmp word ptr 内存单元地址
⑤call dword ptr 内存单元地址 push cs
push ip
jmp dword ptr 内存单元地址
call 和ret相互搭配使用:实现子程序的调用(寄存器压栈出栈的目的?)
标志寄存器
ZF SF PF CF OF DF
CF:针对无符号位
OF:针对有符号位
DF: 针对si和di(df=0;si,di递增 df=1;si di递减)
adc指令:带进位加法指令
功能:操作对象1=操作对象1+操作对象2+CF
和add配合使用可以对更大的数据进行加法运算(为什么?)
sbb累世于adc
cmp指令
无符号数:CF ZF
有符号数:SF OF
转移指令
je jne ja jna jb jnb
e:equal
a:above
b:below
n:not
和cmp搭配使用:(实现什么样的功能)
串传送指令
movsb:①:((es)*16+(di))=((ds)*16+(si))
②:根据df值进行si 和di 的相应操作
movsw
rep movsb:功能?
cld 重置df=0;
std 重置df=1;
pushf
popf:将标志寄存器的值进行压栈和出栈的操作