复习-第十一章标志寄存器

标志寄存器的功能

在这里插入图片描述
在这里插入图片描述

11.1ZF标志

振奋人心的“结果”

在这里插入图片描述
在这里插入图片描述

11.2 PF标志

泡芙的个数是“偶数”个吗?

在这里插入图片描述

在这里插入图片描述

11.3 SF标志

这个算法最终结果是“负数”吗?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

姐欧服,姐姐把你殴打你到服气为止。

结果,偶数,负数。

在这里插入图片描述

其一:在看奇偶标志位时,0是被当做偶数的。就像第一条指令sub al,al的结果是0,它有0个1,是偶数个1,所以pf=1

其二:有的指令的执行对标志寄存器没有影响,就像上面的mov,push、pop指令等,它们是传送指令。所以从mov al,1

11.4CF标志

无符号数,加法进位或者减法进位。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.5OF标志

这里所讲的溢出,只是对有符号数运算

什么是溢出。

在这里插入图片描述
在这里插入图片描述

原理

在这里插入图片描述
98+98=196
62+62=C4没有进位。
在这里插入图片描述

提示楼主bai一下,cpu处理时是不会分有符号和无符号数du的,只会在SF,OF,CF中做记录zhi(很久没看汇编了,dao记得不太清楚是不是只与这三个标志位有关,楼主自己好好看看书哦,看还有没有其他的标志位于此有关),将数据看做是有符号还是无符号数是有写程序的人决定的,如果在做了相关的运算后,你使用SF,OF中的值来处理,那么这个数就被你当做了有符号数在使用,如果你使用的CF中的值来处理,

那么这个数就被你当做了无符号数使用。78h为120的补码,-136大于-128,其补码不是8位能表示的

再看你的题目:
无符号时:0f0h为240,,78h为120,相加,结果大于255,溢出,所以CF为1

有符号时:0f0h为-16,78h为120,相加,结果为104,没溢出,OF=0,SF=0

把这个弄清楚了楼主就可以去深入的思考下以前学C语言时有符号和无符号数运算结果的那些问题了,
为什么会溢出之类的,从汇编的角度很容易就能想清楚C语言中一些比较复杂的问题

在这里插入图片描述
在这里插入图片描述

检测11.2

CF 进位 无符号 carryflag
OF 溢出 有符号 overflow
SF 负号 有符号
ZF 结果
PF 1的偶数


				   CF OF SF ZF PF
1、sub al,al       0  0  0  1   1
2、mov al,10H      0  0  0  1   1
3、add al,90H      0  0  1  0	1
4、mov al,80H      0  0  1  0	1
5、add al,80H	   1  1  0  1   1
6、mov al,0FCH     1  1  0  1   1
7、add al,05H	   1  0  0  0   0
8、mov al,7DH 	   1  0  0  0   0
9、add al,0BH      0  1  1  0   1
2、
al=10H

3、al+90H=10H+90H=0A0H
CF:16进制上来看,没有进位。还是两位。A0H。
没有进位。

0F: 128=2^8次方,有符号
10H对应10进制为16, 小于127,对应有符号数是10H
90H对应10进制为144,大于127,对应有符号数是144-256=-112
90H的二进制是有符号数-112的补码。

对于有符号数运算,
16-112=-96

溢出考虑的问题:
1、al,8位,-128~127
2、ax,16位,-32768~32727
3、我们要转换为10进制。

-96 -128,没有溢出。
SF:
算有符号,-961

ZF=0

PF 
A0H=1010 0000 偶数个
-96=0110 0000偶数个

4、al=80H



5、add al,80H
80H+80H=100H
al=00H
CF=1
进位了,16进制上来看。

OF=1
100H=256>127,溢出了

SF=0
al=00H,所以还是0,和下面的计算无关了。
80H=128=128-256=-128
80H+80H=-128+(-128)=-256

ZF=1,这里一定要注意!
100H,这里是al寄存器。
al寄存器中是00H。
所以是1。

PF=1,这里一定要注意!
100H,这里是al寄存器。
100h=1 0000 0000
8位中没有16、mov al,0FCH

7、add al,05H

0FCH+05H=101H

CF=1
进位了。

OF=0
错误:溢出不看无符号。
101H=257>127
溢出了

溢出看有符号运算。
求负数:
0FCH=252=252-256=-4

05H=5=5-256=-251,这个是错的。
-4-251=-255 -127溢出,这个是错的。

05H=5=5
-4+5=1-128~127没有溢出


SF=0
-4+5=1

ZF=0
-4+5=1

PF=0
101H=1 0000 0001

8、mov al,7DH 	   

9、add al,0BH
7DH+0BH=88H

CF=016进制上来看,没有进位。还是两位。A0H。

OF=1
7DH=125<127=125
0BH=11<127=11
7DH+0BH=125+11=136>127
溢出

SF=1
136这个数的二进制对应着一个负数
136=136-256=-120
ZF=0

PF=1
88H=1000 1000

11.6 adc指令

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值