博客
关于我
有符号和无符号的运算--标志寄存器(8086)
阅读量:517 次
发布时间:2019-03-07

本文共 2329 字,大约阅读时间需要 7 分钟。

《汇编原理》---王爽

CPU内部有一个16位标志寄存器,但只有个别位有意义:

1)用来存储相关指令的某些执行结果;

2)用来为CPU执行相关指令提供依据;

3)用来控制CPU的相关工作方式;

 

1.ZF标志位------0标志位

记录相关指令执行之后,其结果是否为0。为0,则ZF=1;不为0,则ZF=0。

 

2.PF标志位-----奇偶标志位

如果有奇数个1,则PF=0;如果有偶数个1,则PF=1;

 

3.SF标志位----符号标志位。

这个标志位对我理解有无符号起了至关重要的作用。如果结果为负,则SF=1;如果结果为正,则SF=0。

计算机中通常用补码表示有符号数据。计算机中的一个数据既可以看做有符号数,也可以看做无符号数。

比如00000001B,可以看做无符号数1,也可以看做有符号数+1;

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

计算机在执行加减运算的时候,不区分有符号数和无符号数,但是会在标志位上有所体现。CPU在执行add等指令的时候就已经包含了两层含义:1)你看做是无符号数,我就是无符号加法;2)你看做是有符号数,我就是有符号加法。至于你想要哪种运算结果,还需要关注    进位标志位CF  和  溢出标志位。会在后面进行介绍

1)如果进行的是无符号运算,SF标志位无意义;

2)有符号运算。如果SF=1,表示结果为负;如果SF=0,表示结果为正。

 

4.CF标志位-----进位,仅针对无符号运算,记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值。

本来是没有办法保存最高位的进位值的,但是他可以把最高位的进位值保存在这里。对于N位数据来讲,最高位是第N-1位,但是现在标志位相当于假想的第N位。

例如:8位数据,98h+98h,产生进位,CF=1。这个进位值在8位数据中无法保存,但CPU并不会丢弃,可以在标志位保存。在后面相关计算时会用到这个标志位。

当两个数据做减法时,有可能向更高位借位。

比如:8位数据,97h-98h,产生借位,相当于计算197H-98h,而CF会标记这个借位值。

 

5.OF标志位-------溢出,仅针对有符号数的运算。

例如对于8位有符号数据,他的数据范围是-128~127。如果计算98+99应该是197,但是因为数据溢出,导致98+99=-59。(本来如果作为无符号数,它是可以放得下的;但是作为有符号数,它是放不下的。)

因此CPU需要对指令执行之后是否溢出进行记录。如果发生溢出,则OF=1;如果没有发生溢出,则OF=0。

至此为止,有/无符号的运算就直接涉及到3个寄存器了SF(符号位)、CF(进位)、OF(溢出)。

前面讲到add指令在执行的时候有两层含义。然后用各标志位区分。

1)有符号运算。SF记录正负,OF关心溢出,CF无意义。

2)无符号运算。SF无意义,OF无意义,关心CF的溢出。

例如:mov  al,0F0H        ;-16的补码

          add   al,88H          ;-120的补码

指令结束以后al=120,CF=1,OF=1,SF=0  对于无符号数运算,关心CF有进位;对于有符号数运算,关心OF有溢出。现有的结果为120是错误的。

CF和OF所表示的进位和溢出,是分别对无符号数和有符号数运算而言的,他们两个没有任何关系。

--------------------------------------------------------------------------------------------------------------------------------------------------------

相关指令     adc---借位加法;sbb---借位减法;cmp---比较;je....---条件转移指令;DF标志和串传送指令

--------------------------------------------------------------------------------------------------------------------------------------------------------

1.adc指令

格式: adc   操作对象1,操作对象2

功能:操作对象1=操作对象1+操作对象2+CF;

【例如】:adc   ax,bx  实现的功能是:(ax)=(ax)+(bx)+CF;

在执行adc指令的时候加上的CF值含义,是由adc前面的指令决定的。即,如果CF的值是被sub指令设置的,那么他就是借位值;如果是被add指令设置的,那么它的含义就是进位值。

adc指令和add指令相配合就可以对更大的数据进行计算。

【例如】1EF000H+201000H。结果放在ax(高16位)和bx(低16位)中。

因为数据大于16位,无法用add计算;因此我们可以分两步走,首先将低16位相加,然后将高16位和进位值相加。

程序如下:

                mov    ax,001EH

                mov    bx,F000H

                add    bx,1000H

                adc    ax,0020H

这样就可以对任意大的的数据进行加法运算。

2.sbb指令

sbb是带借位减法指令,它利用了CF位上的借位值

格式: sbb    操作对象1,操作对象2

功能:操作对象1=操作对象1-操作对象2-CF;

3.cmp指令

cmp是比较指令,指令结束后对标志寄存器产生影响。

cmp:cmp    操作对象1,操作对象2

功能:计算操作对象1-操作对象2但并不保存结果,仅仅根据计算结果对标志寄存器进行设置。

后面的详见《汇编原理》P223--王爽

转载地址:http://apwnz.baihongyu.com/

你可能感兴趣的文章
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
NIFI同步MySql数据源数据_到原始库hbase_同时对数据进行实时分析处理_同步到清洗库_实际操作06---大数据之Nifi工作笔记0046
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_实际操作---大数据之Nifi工作笔记0020
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_实际操作_02---大数据之Nifi工作笔记0032
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_使用NIFI表达式语言_来获取自定义属性中的数据_NIFI表达式使用体验---大数据之Nifi工作笔记0024
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_内嵌ZK模式集群2_实际操作搭建NIFI内嵌模式集群---大数据之Nifi工作笔记0016
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>