这里写自定义目录标题
标志寄存器的功能
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:
算有符号,-96,1
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位中没有1。
6、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=0
从16进制上来看,没有进位。还是两位。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