那些年,我们一起学过的汇编----之标志寄存器

简介:

  Intel 8086/8088CPU设置了一个16位的标志寄存器,用来反映微处理器的当前状态和某些控制,标志寄存器中有9个标志位,分为两大类:状态标志(CF, PF, AF, ZF, SF, OF)和控制标志(TF, IF, DF),状态标志由CPU根据运算结果自动设置,用来反映CPU的执行单元EU执行算术运算或逻辑运算后的结果特征,这些特征常用来影响或者是控制某些后续指令的执行,控制标志由系统程序或者用户程序用指令来设置或者是清除,用来控制CPU的某些操作。

1)、状态标志
(1)进位位CF
进位位CF用来反映运算结果是否产生进位或者是借位。如果运算结果的最高
 位(字操作的15位和字节操作的第7位)产生一个进位(减法),则CF置1,否则CF清零,另外CF在循环移位/移位类指令中用来保存从最高位或最低位移出的0或1
 
(2)奇偶位PF
奇偶位PF用来反映运算结果低八位中“1”的个数,可以为传送数据时可能产生的出错情况提供校验条件,如果运算结果中的低八位中“1”的个数为偶数个时,则置PF为1,否则置0
 
(3)辅助进位位AF
辅助进位位AF用来反映运算结果低四位产生进位或借位情况,如果运算结果的第3位产生了一个进位或借位,,则AF置1,否则置0,AF只反映运算结果的低八位,与操作数长度无关,主要用于十进制的调整
 
(4)零值位ZF
零值位ZF用来反映运算结果是否为0, 如果运算结果为0,则ZF置为1, 否则置为0
 
(5)符号位SF
符号位SF再将运算结果视为带符号数时,用来反映运算结果是正数还是负数,如果运算结果是负数,即一个数的最高位为1则SF置1,否则置0,所以SF与运算结果的最高位相一致
 
(6)溢出位OF
溢出位OF用来反映运算结果是否超出了补码的表示范围,8位带符号数的补码的表示范围是-128--+127, 16位的带符号数补码表示范围是-32768--+32767,如果运算结果超过了补码的范围,则OF置1,否则置0.
 
2)控制标志
(1)单步标志位TF
单步标志位TF也叫跟踪标志位,用药用于程序程序的跟踪调试,当TF=1时,CPU进入单步状态。
 
(2)中断允许位IF
中断允许位IF用于决定CPU是否可以相应外部可屏蔽中断请求,当IF=1时为中断状态,即允许CPU响应外部可屏蔽中断,反则一样
 
(3)方向位DF
方向位DF决定串操作指令执行时指针寄存器的调整方向方向,当DF=0时,正向处理,从地地址向高地址,即串操作指令自动地使地址寄存器(SI或DI)递增,反之同样



     本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/938213,如需转载请自行联系原作者


相关文章
|
4月前
|
存储 程序员 存储控制器
【读书笔记】汇编语言(第四版)第二章 寄存器
【读书笔记】汇编语言(第四版)第二章 寄存器
8086 汇编笔记(十):标志寄存器
8086 汇编笔记(十):标志寄存器
|
5月前
|
存储
8086 汇编笔记(二):寄存器(内存访问)
8086 汇编笔记(二):寄存器(内存访问)
|
5月前
|
存储
8086 汇编笔记(一):寄存器
8086 汇编笔记(一):寄存器
|
5月前
|
JavaScript
深入理解汇编中的ZF、OF、SF标志位和条件跳转
深入理解汇编中的ZF、OF、SF标志位和条件跳转
149 0
|
5月前
|
索引 存储 C语言
【汇编】[bx+idata]的寻址方式、SI和DI寄存器
【汇编】[bx+idata]的寻址方式、SI和DI寄存器
213 0
【汇编】[bx+idata]的寻址方式、SI和DI寄存器
|
5月前
|
编译器 存储 网络协议
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
203 1
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
|
5月前
|
存储 程序员
【汇编】内存的读写与地址空间、寄存器及数据存储
【汇编】内存的读写与地址空间、寄存器及数据存储
451 1
【汇编】内存的读写与地址空间、寄存器及数据存储
|
存储 IDE Java
二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通
二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通
163 1
|
存储 JavaScript
5.2 汇编语言:标志位测试指令
汇编语言是一种面向机器的低级语言,用于编写计算机程序。汇编语言与计算机机器语言非常接近,汇编语言程序可以使用符号、助记符等来代替机器语言的二进制码,但最终会被汇编器编译成计算机可执行的机器码。标志位测试指令是汇编语言中用于测试处理器标志位状态的指令。标志位是位于处理器状态寄存器中的一组特殊标志,用于指示上一个运算的结果是否为零、是否进位/借位、是否溢出等等。可以使用标志位测试指令来检查标志位的状态,并在需要时根据标志位状态进行操作。
217 0