[汇编学习笔记][第十一章标志寄存器]
来源:互联网 发布:java web登录次数限制 编辑:程序博客网 时间:2024/05/16 05:24
第十一章 标志寄存器
作用
- 存储相关指令执行结果
- 用来为CPU执行相关指令提供行为依据
- 用来控制CPU的相关工作方式
这种特殊寄存器在8086CPU
被称为标志寄存器(flag), 8086标志寄存器有16位
其中存储程序状态字。
11.1 ZF标志
ZF
(zero flag) 在flag的第6位。它记录相关指令执行后,其结果是否为0.如果结果为0,则
ZF=1
,否则ZF=0
- 要注意,在8086CPU中,有的指令影响标志寄存器,大多数是运算指令
- mov,push,pop,对标志器基本没影响
- 学一条指令,要关注他会对那些标志寄存器产生影响
11.2 PF标志
PF
(Parity flag) 在flag的第2位。奇偶校验位。- 记录相关指令执行后,结果所有bit位中1的个数是否为偶数
- 只判断结果的低8位
11.3 SF标志
PF
(Sign flag) 在flag的第7位。符号标志位。- 记录相关指令执行后,结果是否为负
- 对有符号数起作用
11.4 CF标志
CF
(Carry Flag) 在flag的第0位,进位标志位。- 在进行无符号运算的时候它记录了运算结果的最高有效位向更高位的进位值,或最高位的借位值。
- 对无符号数起作用
11.5 OF标志
OF
(Overflow Flag) 在flag的第7位。符号标志位。- 在进行有符号运算的时候,记录结果是否溢出
- 对有符号数起作用
- 在实际ADD中,既可以看作有符号,也可以看作无符号。CF和OF可能都为1,代表无符号的时候进位了,有符号的时候溢出了。
11.6 adc指令
- 指令格式 adc obj1,obj2
- 作用 obj1=obj1+obj2+CF
11.7 sbb指令
- 指令格式 sbb obj1,obj2
- 作用 obj1 = obj1 - obj2 - cf
11.8 cmp指令
- 指令个事 cmp obj1,obj2
作用 计算 obj1 - obj2 但不保存结果,仅仅根据结果对标志寄存器进行设置
无符号的运算主要影响
cf
,zf
两个标志寄存器- 有符号的运算还要涉及到
sf
, 和of
。- 溢出后为负数,溢出前为正数
- 溢出后为正数,溢出前为负数
以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)
11.9 检测比较结果的跳转指令
jcxz
: 如果(cx)=0 则跳转
无符号:
je
: 等于则跳转,zf
=1jne
: 不等于则跳转,zf
=0jb
: 低于则跳转,cf
=1jnb
: 不低于则跳转cf
=0ja
: 高于则跳转cf=0
且zf=0
jna
: 不高于则跳转cf=1
或zf=1
e:equal
,n:not
,b:below
,a:above
11.10 DF标志和串传送命令
DF
(Direction Flag) 在flag的第10位。方向标志位。- 当
DF=0
时,si++,di++。DF=1
时,si–,di– movsb
将ds:si
所指的一个字节赋值给es:di
实际运用
通过
rep
和movsb
(byte)或movsw
(word)来共同使用。cx控制循环次数,DF控制串传送方向。- rep movsb
- rep movsw
- cld 使
df=0
Clear Director - std 使
df=1
Set Director
11.11 pushf和popf
pushf
将标志寄存器的值压栈popf
从栈中弹出数据,送入标志寄存器
11.12 DEBUG中标志寄存器的表示
0 0
- [汇编学习笔记][第十一章标志寄存器]
- 汇编学习笔记--标志寄存器
- 汇编语言学习第十一章-标志寄存器
- 8086汇编学习笔记7-标志寄存器
- 王爽《汇编语言》(第二版) 学习笔记 (第十一章 标志寄存器)
- 王爽《汇编语言》(第二版) 学习笔记 (第十一章 标志寄存器)
- 汇编学习--7.13--标志寄存器
- 汇编学习历程(标志寄存器)
- 汇编学习笔记第11~13章:标志寄存器-内中断-int指令
- 8086汇编笔记(标志寄存器)
- 汇编学习笔记--寄存器
- 汇编标志寄存器
- 汇编标志寄存器
- 标志寄存器 x86汇编
- 汇编入门学习笔记 (十)—— 标志寄存器、串传送指令
- 汇编语言学习笔记(十一)标志寄存器
- 汇编学习笔记[1]:寄存器
- 汇编学习笔记[1]:寄存器
- 程序猿写的剧本?你见过了??哈哈_快来看我的原创电影剧本《烽火连三月》前二十个场景
- python笔记2 python对象的动态类型
- javascript 常用代码技巧大收集
- LeeCode(Database)-Customers Who Never Order
- 设计一个二人五子棋游戏
- [汇编学习笔记][第十一章标志寄存器]
- 15. 3Sum
- Android开发在ADT中关联源码
- POJ 1681 Painter's Problem (高斯消元)
- centos 局域网时间同步设置
- c++第四次作业
- Python处理Excel(二):个性化Excel表格
- 指针数组和数组指针
- 13. Roman to Integer