标志寄存器的作用
1) 存储相关指令的某些执行结果;
2) 为CPU执行相关指令提供行为依据;
3) 控制CPU的相关工作方式
标志寄存器的结构
标志寄存器(简称flag)的1、3、5、12、13、14、15位在8086CPU中没有使用,不具有任何意义.
ZF标志
flag的第六位是ZF,零标志位.记录相关指令执行后,结果是否为0,若结果为0,ZF=1,否则ZF=0.
PF标志
flag的第二位是PF,奇偶标志位.它记录相关指令执行后,结果的所有二进制位中1的个数是否为偶数,是则PF=1,否则PF=0.
SF标志
flag的第七位是SF,符号标志位.它记录相关指令执行后,结果是否为负,若结果为负,则SF=1,否则SF=0.
SF标志,就是CPU对有符号数运算结果的一种记录,它记录数据的正负,若将数据当作有符号数来运算,可以通过它来得知结果的正负,若将数据当作无符号数来运算,SF的值没有意义。
例如:mov al,10000001B
add al,1
执行后,SF=1表示:若进行的是有符号数运算,则结果为负
CF标志
flag的第0位是CF,进位标志位.一般情况下,在进行无符号数运算的时候,它记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值.
当两个数据相加的时候,有可能产生从最高有效位向更高位的进位.比如:
两个8位数据: 98H+98H
当两个数据相减时,有可能向更高位借位.比如:
两个8位数据:97H-98H,将产生借位,相当于计算197H-98H.
OF标志
flag的第十一位是OF,溢出标志位.一般情况下,OF记录了有符号数运算的结果是否发生了溢出.如果发生溢出,OF=1,否则 OF=0.
溢出:进行有符号数运算的时候,结果超出机器所能表示的范围
机器表示的范围:8位有符号数据,机器所能表示的范围是-128~127,而16位有符号数据,机器所能表示的范围是-32768~32767
注意CF和OF的区别:CF是对无符号数运算有意义的标志位,而OF是对有符号数运算有意义的标志位
adc指令
adc是带进位加法的指令,它利用CF位上记录的进位值.
指令格式:adc 操作对象1,操作对象2
功能:操作对象1=操作对象1+操作对象2+CF
inc和loop指令不影响CF位.
sbb指令
sbb指令是带借位减法指令,它利用了CF上记录的借位值
指令格式:sbb 操作对象1,操作对象2
功能:操作对象1=操作对象1-操作对象2-CF
cmp指令
cmp是比较指令,功能相当于减法指令
指令格式:cmp 操作对象1,操作对象2
功能:计算操作对象1-操作对象2,不保存结果,只根据计算结果对标志寄存器进行设置
cmp指令的含义
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)
检测比较结果的条件转移指令
指令 含义 检测的相关标志位 |
je 等于则转移 ZF=1 |
jne 不等于则转移 ZF=0
jb 低于则转移 CF=1
jnb 不低于则转移 CF=0
ja 高于则转移 CF=0且ZF=0
jna 不高于则转移 CF=1或ZF=1
DF标志和串传送指令
flag的第10位是DF,方向标志位,在串处理指令中,控制每次操作后si,di的增减
DF=0,每次操作后si,di递增
DF=1,每次操作后si,di递减
传送字节串指令
格式:movsb 相当于mov es:[di], byte ptr ds:[si]
功能:将ds:si指向的内存单元中的字节送入es:di指向的单元中,然后根据DF的值,将si和di进行递增或递减
传送字串指令
格式:movsw 相当于mov es:[di], word ptr ds:[si]
功能:将ds:si指向的内存单元中的字送入es:di指向的单元中,然后根据DF的值,将si和di进行递增2或递减2
两个指令可以和rep配合使用
格式:rep movsb/movsw
相当于:s: movsb/movsw loop s
rep的作用:根据cx的值,重复执行后面的串传送
rep movsb可以循环实现(cx)个字符的传送
8086CPU提供下面两条指令对DF位进行设置
cld指令:将DF置0
std指令:将DF置1
pushf和popf
格式:pushf
功能:将标志寄存器的值压栈
格式:popf
功能:从栈中弹出栈顶数据,送入标志寄存器
上面的两条指令可以直接访问标志寄存器
标志寄存器在Debug中的表示
标志 值为1的标记 值为0的标记
OF OV NV
SF NG PL
ZF ZR NZ
PF PE PO
CF CY NC
DF DN UP
本文始发于微信公众号(飓风网络安全):汇编语言学习笔记<标志寄存器>
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论