这里讲一个特殊的寄存器,flag内存
先看flag的16位显示it
11.1 zfclass
指令执行后,结果0,ZF=1im
指令执行后,结果不为0,ZF=0总结
11.2 pf数据
指令执行后,全部bit位中1的个数是否位偶数,若为偶数,那么pf=1img
若为奇数,pf=0语言
11.3 sfdi
指令执行后,结果负,SF=1数字
指令执行后,结果不为负,SF=0
11.4 cf
进位
若出现进位,那么CF=1
没有的话CF=0
11.5 of
溢出,
数字的溢出。
8位范围是-128-127 若130就是溢出了
11.6 abc指令
abc a,b
a=a+b+CF
为啥须要这个东西呢?
加法能够分2步,
1 低位=低位加
2 高位=高位加+CF
把加法分步进行了
11.8 cmp指令
减法指令,可是不保存实际减法结果,就是用来影响flag的位
有4种状况把,本身总结的
1 sf=1,of =0 就A<B
2 sf=1,of=1 正溢出出现的负值,就是a-b是一个大的正数,要是8位的话,就是大于127的
3 sf=0,of=1 负溢出才会出现正值,那么a-b就是一个负数,要是8位的话,就是小于128的
4 sf=0 sf=1 没溢出,就很正常的比较大小
11.9 讲了一些条件转移指令
jczx 这种的
就和高级语言的if switch差很少把
11.10 串传送
DF =0 每次操做后 si,di 递增
DF=1 每次操做后si,di递减
movsb一次传一个内存单元,配合rep movsb使用
11.11 pushf popf
pushf 把标志寄存器的值入栈
popf 从栈中弹出数据,送到栈中
这里就讲一个flag寄存器,每一个位都下设置0,1,起到不一样的做用
EOF