码迷,mamicode.com
首页 > 编程语言 > 详细

汇编语言(王爽) 第11章 标志寄存器

时间:2016-04-11 22:36:53      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

这里讲一个特殊的寄存器,flag

先看flag的16位显示

技术分享

技术分享

11.1 zf

指令执行后,结果0,ZF=1

指令执行后,结果不为0,ZF=0

11.2 pf

指令执行后,所有bit位中1的个数是否位偶数,若为偶数,那么pf=1

若为奇数,pf=0

11.3 sf

指令执行后,结果负,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

 

汇编语言(王爽) 第11章 标志寄存器

标签:

原文地址:http://www.cnblogs.com/wz0107/p/5380197.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!