汇编——(2)

1flag寄存器:按位起作用的,每一位都有专门的含义。flag的1、3、5、12、13、14、15在8086CPU中没有使用。而0、2、4、6、7、8、9、10、11都有特殊的含义

1.1.ZF标志(第六位):零标志位,记录相关指令执行后,结果是否为0,如果为0,zf=1;结果不为0,zf=0

1.2.PF标志(第二位):奇偶标志位,记录相关指令执行后,结果的所有bit位中1的个数是否为偶数。如果1的个数为偶数,pf=1;如果为奇数,pf=0

1.3.SF标志(第七位):符号标志位,记录相关指令执行后,结果是否为负。如果为负,sf=1;非负,sf=0

1.4.CF标志(第0位):进位标志位,无符号运算

1.5.OF标志(第11位):记录有符号数运算的结果是否发生了溢出,如果发生溢出,of=1;如果没有,of=0

1.6.DF标志(第10位):方向标志位,控制每次操作后si、di的增减

      df=0,每次操作后si、di递增

      df=1,每次操作后si、di递减

2.adc指令:带进位加法运算,利用CF位上记录的进位值

   adc ax,bx

   (ax)=(ax)+(bx)+CF

3.sbb指令:带借位减法指令,它利用CF位上记录的借位值

   sbb ax,bx

   (ax)=(ax)-(bx)-CF

4.条件转移指令

4.1.je:等于则转移

4.2.jne: 不等于则转移

4.3.jb:低于则转移

4.4.jnb:不低于则转移

4.5.ja:高于则转移

4.6.jna:不高于则转移

5.movsb:执行相当于进行下面几步操作

   ((es)*16+(di))=((ds)*16+(si))

   如果df=0:(si)=(si)+1;(di)=(di)+1

   如果df=1:(si)=(si)-1;(di)=(di)-1

   可以看出,movsb的功能是将ds:si指向的内存单元中的字节送入到es:di中,根据df的值,改变di,si

6.movsw:ds:si指向的内存字单元的字送入es:di中,根据df的值,将di、si增减2

这两个指令一般来说都是配合rep使用的:

rep movsb

用汇编语法来描述它的功能就是:

s:movsb

   loop s

rep的作用是根据cs的值,重复执行后面的串传送指令。由于每执行一次movsb指令si和di都会递减或递增指向后一个单元或前一个单元,则rep movsb就可以循环实现(cs)个字符的传送

7. cld指令:将标志寄存器的df位置0

    std指令:将标志寄存器的df位置1

8.pushf指令:将标志寄存器的值压栈

   popf指令:从栈中弹出数据,送入标志寄存器中

尝试做了几道题

dll-files快两天了还没找回来

mac更新新系统后中文输入法下ida会崩。。这就很难受了

开始定计划学英语了。。。。不然真凉了

猜你喜欢

转载自blog.csdn.net/qq_41007744/article/details/82903587