项羽姓秦 发表于 2020-3-13 00:51:21

检测点11.2作业练习

CF 标志(第0位)
进位标志位;
当两个无符号数据相加需要进位时,即CF为1;
当两个无符号数据相减需要借位时,即CF为1;

OF 标志(第11位)
溢出标志位,指定数据范围:8位有符号数据(-128~127),16位有符号数据(-32768~32767)
当两个有符号数据相加溢出时,即OF为1;
当两个有符号数据相减溢出时,即OF为1;

SF 标志(第7位)
结果为负,SF=1;结果为正,SF=0;

ZF 标志(第6位)
如果0,ZF=1;如果1,ZF=0;

PF 标志(第2位)
结果偶数1,PF=1;结果基数1,PF=0;

写出下面每条指令执行后,ZF、PF、SF、CF、OF 等标志位的值。
                                CF                OF                SF                ZF                PF
sub al,al                        0                0                0                1                1
mov al,10h                0                0                0                1                0
add al,90h                0                0                1                0                1               
mov al,80h                0                0                1                0                1               
add al,80h                1                1                0                1                0
mov al,0fch                1                1                0                1                1               
add al,05h                1                0                0                0                0               
mov al,7dh                1                0                0                0                0               
add al,0bh                0                1                1                0                1               

sibsophia 发表于 2020-4-8 17:24:20

mov不是计算指令吧?应该不改变标志寄存器的呀

文小诗 发表于 2020-4-11 12:54:25

怎么判断是有符号还是无符号运算呢

何足道 发表于 2020-4-12 11:07:24

文小诗 发表于 2020-4-11 12:54
怎么判断是有符号还是无符号运算呢

对同一个二进制数据,计算机可以把它当作有符号数来计算,也可以当作无符号数来计算。如果不发生进位和溢出,那么计算结果就是统一的。不管我们如何看待,CPU在计算的时候就自动包含了这两种含义。所以关键在于我们的程序需要哪种结果。
页: [1]
查看完整版本: 检测点11.2作业练习