《汇编语言(第三版)》标志寄存器

摘要:
8086 CPU中的标志寄存器包括CF、PF、ZF、SF、OF、DF。传输指令不影响标志寄存器ZF标志寄存器ZF标志寄存器。flag中的第6个标志寄存器指示零标志位。(至于标志是什么,暂时不重要。)ZF寄存器的功能是确定指令执行后的结果是否为0。例如,movax,1 subax,1,指令执行后结果为0,ZF=1PF标志寄存器
标志寄存器

8086CPU中的flag寄存器包括:

    CF、PF、ZF、SF、OF、DF。

    传送指令不影响标志寄存器

ZF标志寄存器

    zf标志寄存器位于flag中的第6为,表示零标志位。(至于flag是什么,暂时不用管)

  ZF寄存器的作用

    判断指令执行后结果是否为0。

  举例

    mov ax,1

    sub ax,1

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

PF标志寄存器

    pf标志寄存器位于flag中的第2位,表示奇偶标志位。

  PF寄存器的作用

    判断指令执行完之后结果中bit位为1的个数是否为偶数。如果1的个数为偶数,pf=1;如果为奇数,pf=0。

  举例

    mov al,1

    add al,10

    执行后结果为00001011B,其中有3个1,pf=0。

SF标志寄存器

    sf标志寄存器位于flag中的第7位,表示符号标志位。

  SF寄存器的作用

    判断指令执行之后结果是否为负。如果为负,sf=1。

  SF寄存器的特点

    如果我们进行无符号运算,sf寄存器无意义,如果进行有符号运算,sf记录正负。

  举例

    00000001B 可以看做无符号数1,有符号数+1。

    10000001B 可以看做无符号数129,有符号数-127。

    无符号加法:

      mov al,10000001B

      add al,1

      结果 al = 10000010B,表示129+1 = 130。

    有符号加法:

      mov al,10000001B

      add al,1

      结果 al = 10000010B, sf=1,表示-127+1 = -126。

CF标志寄存器

    cf标志寄存器位于flag中的第0位,表示仅为标志位。

  CF寄存器的作用

    在无符号数运算的时候,它录入了运算结果的最高有效位向更高位进位的进位值,或从更高位的借位值。

  CF寄存器的特点

    仅在无符号运算时起作用。

  举例

    进位:

      mov al,98h

      add al,al

      执行后al=30h,cf=1,cf记录了从最高有效位向更高位的进位值。

      add al,al

      执行后al=60h,cf=0,cf记录了从最高有效位向更高位的进位值。

    借位:

      mov al,97h

      sub al,98h

      执行后al=ffh,cf=1,cf记录了向更高位的借位值。

      sub al,al

      执行后al=0,cf=0,cf记录了向更高位的借位值。

OF标志寄存器

    of标志寄存器位于flag中的第11位,表示溢出标志位。

  OF寄存器的作用

    判断计算后的结果是否溢出。溢出,of=1;不溢出,of=0。

  OF寄存器的特点

    OF仅在有符号数运算时起作用。

    如果因为溢出导致了实际结果为负,那么逻辑上真正的结果必定为正。

    如果因为溢出导致了实际结果为正,那么逻辑上真正的结果必定为负。

  举例

    mov al,0f0h

    add al,88h

    指令执行后发生了溢出of=1。

    mov al,0f0h

    add 78h

    指令执行后不发生溢出of=0。

标志寄存器在 Debug 中的表示

在寄存器中,标志局存起是按有意义的各个标志位单独表示的。在 Debug 中,我们可以看到:

标志值为1的标记值为0的标记
ofOVNV
sfNGPL
zfZRNZ
pfPEPO
cfCYNC
dfDNUP

免责声明:文章转载自《《汇编语言(第三版)》标志寄存器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用PHP和Python生成短链接服务的字符串ID利用epoll实现异步IO下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux PCI网卡驱动的详细分析

学习应该是一个先把问题简单化,在把问题复杂化的过程。一开始就着手处理复杂的问题,难免让人有心惊胆颤,捉襟见肘的感觉。读Linux网卡驱动也是一 样。那长长的源码夹杂着那些我们陌生的变量和符号,望而生畏便是理所当然的了。不要担心,事情总有解决的办法,先把一些我们管不着的代码切割出去,留下必 须的部分,把框架掌握了,哪其他的事情自然就水到渠成了,这是笔者的心得...

STM32学习笔记——USART串口(向原子哥和火哥学习)

一、USART简介 通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。 STM32 的串口资源相当丰富的,功能也相当强劲。STM32F103ZET6 最多可提供 5 路串口,有分数波特率发生器,支持同步单向通信和半双工单线通信,支持...

ASM

在学习汇编之前,我们要介绍一下常用的函数调用约定,以便我们对于一些指令的理解。 函数调用约定 常见的函数调用约定:stdcall , cdecl, fastcall, thiscall, naked call 1, __cdecl(C调用约定.)C/C++ 缺省调用方式 1)压栈顺序: 函数参数从右到左 2)参数栈维护: 由调用函数把参数弹出栈,传送参数的...

5.2Python数据处理篇之Sympy系列(二)---Sympy的基本操作

目录 目录 目录 前言 (一)符号的初始化与输出设置-symbol() symbols() latex() (1)说明: (2)源代码: (3)输出效果 1.作用: 2.操作: (二)替换符号-subs(old,new) (1)是否改变原表达式 (2)替换多个表达式 1.说明: 2.源代码: 3.输出效果: 4.注意点: (三)将字符串变为s...

不该被忽视的CoreJava细节(三)

一、不该被遗忘的移位位运算 本文主要介绍移位运算(Shift Operation), 适当介绍一下其它相关的位运算。 甭说计算机刚发明那会,就连21世纪初那段日子,计算机内存都是KB/MB计算的。编写的程序需要充分考虑计算机的储存容量,好的程序必须是执行效率高,代码精炼,占用资源尽可能少,不容许任何的浪费。可想而知,那个时候位运算带来的运行性能上的提升和...

X86架构与ARM架构比较(摘录自网络)

引言  CPU是怎样运作的?   CPU的运作与人脑的运作差不多。先谈一下人这个系统的工作方式。眼镜、耳朵、舌头、皮肤等等感觉器官接收到“触觉”,把信息传给大脑,大脑把信息处理后,把处理结果送给手、脚、嘴等执行器官就可以运动了。   人脑的功能就是从某个感觉器官读取信息,处理信息,然后再把结果送给执行器官。   一个完整的系统与人这个系统差不多,传感器接收...