汇编语言$什么意思_汇编语言中CF和OF的区别

在学习汇编语言的时候,状态标志位中CF和OF的区别让我头疼,说实话一直不太明白CF和OF是什么意思,但后来看了王爽的汇编语言就懂了。

CF是进位标志位,CF=1表示进位或者借位,CF=0没有进位或者借位。举个例子一个数是8位,那么他的最高有效位就是7位,这里懂得,计算机中是从0开始计数的,,那么比最高有效位更高的就是下一个8位的第0位,画一个图

e922813f299ebbbecdf4a8de115acadf.png

还需要注意的是,CF是进行无符号数运算时记录最高有效位向更高为进位值,或者借位值。这里你可以这样理解,当第七位也就是最高有效位还向图中假想的更高为进位(借位)时,这是将这个进位(借位)(也就是1)让CF保存。首先是要理解什么是无符号数,以8位为例,无符号位最大为11111111,没错8个1,转化为十进制也就是最大值是256。有符号数就是最高位是用来表示符号的,1表示负,0表示正。例如1111 1111,最高位是1,表示负,最小值-128,01111111最高位是0,表示正,最大是127,也就是说,一个字节(8位)表示有符号数时,范围是-128到127。

在运算有符号数(以一个字节为例)时溢出时用OF表示,OF=1是溢出,OF=0表示没有溢出。首相要明白溢出是什么意思,溢出白话就是说最终的结果超出了-128或者127,以致于一个字节存不下)

讲了这么多,举个例子,

MOV AL,7EH

ADD AL,5BH

结果AL=D9,AL是AX的低8位

那么这两条指令执行后,状态标志位的状态CF和OF是什么

首先你要想D9是有符号数还是无符号数,因为计算机中的数值是以补码存储的,不知道是有符号还是无符号,当D9是无符号数时,AL能否存得下D9?可以这样想,AL最大存的无符号数是FF,这时D9<FF,说明没有向上图中的假想的更高位进位,所以CF=0

当D9是表示有符号位时,因为AL能存的最大的有符号数是7F,而D9>7F,说明溢出了,OF=1

好了,就说这么多,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值