汇编网首页登录博客注册
suixin的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2010-01-30 13:24] 第十一章 标志寄存器

一、寄存器的作用:
1)、用来存储相关指令的某些执行结果
2)、用来为cpu执行相关指令提供行为依据
3)、用来控制cpu的相关工作方式
二、标志位
8086cpu提供了0、2、4、6、7、8、9、10、11位状态字

            名称     位数            记录
zf:      零标志位    6     指令执行后zf=1,结果为0
                         zf=0,结果不为0
pf:      奇偶标志    2    bit位中1的个数为偶数,pf=1
                         为奇数,pf=0
sf:      符号标志    7     指令执行后,结果为负,sf=1
                         如果为非负,sf=0
cf:      进位标志    0    无符号运算,进位或借位,cf=1
                        否则cf=0
of:      溢出标志   11     有符号运算,结果溢出,of=1
                         否则of=0
三、寄存器的应用
1.adc指令:  带进位加法,利用cf位上记录的进位值
指令格式: adc    操作对象1 ,  操作对象2
功能:     操作对象1=操作对象1+操作对象2+cf
2.sbb指令:  带进位减法,利用cf位上记录的进位值
指令格式: sbb    操作对象1 ,  操作对象2
功能:     操作对象1=操作对象1-操作对象2-cf
3.cmp指令:  比较指令,相当于减法指令,结果不保存
指令格式: 操作对象1, 操作对象2
功能:     操作对象1=操作对象1-操作对象2,结果不保存
1)、无符号运算:
zf=1,说明(ax)=(bx)
zf=0,说明(ax)≠(bx)
cf=1,说明(ax)<(bx)
cf=0, 说明(ax)≥(bx)
cf=0并且zf=0,说明(ax)>(bx)
cf=1并且zf=1,说明(ax)≤(bx)
根据cmp指令:
          含义             检测的相关标志位
je      等于则转移          zf=1
jne    不等于则转移         zf=0
jb      低于则转移          cf=1
jnb    不低于则转移         cf=0
ja      高于则转移          cf=0且zf=0
jna    不高于则转移         cf=1或zf=1

2)、有符号运算:cmp ah,bh
如果sf=1,而of=0,所以(ah)<(bh)
如果sf=1,而of=1,所以(ah)>(bh)
如果sf=0,而of=1,所以(ah)<(bh)
如果sf=0,而of=0,所以(ah)≥(bh)

四、df标志和串传送指令:
1、1)、df=0,每次操作后si,di递增
   2)、df=1,每次操作后si,di递减

2、movsb
mov es:[di],byte ptr ds:[si] ;8086不支持这样指令
如果 df=0
inc si
inc di
如果
dec si
dec di
3、movsw
mov es:[di],word ptr ds:[si] ;8086不支持这样指令
如果 df=0 ;cld指令(正向)
add si,2
add di,2
如果 df=1 ;std指令(反向)
sub si,2
sub di,2
4、rep
rep movsb 或 movsw
功能:
s:movsb 或 movsw
   loop s
五、pushf和popf
pushf:把标志寄存器压入栈
popf:从栈中弹出数据,送人标志jcq
评论次数(0)  |  浏览次数(703)  |  类型(每章总结) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码