检测点11.1
1. 检测点 11.1
写出下面每条指令执行后, ZF、PF、SF 等标志位的值。
指令 ZF PF SF
sub al,al 1 1 0 al = 0000 0000B
ZF:结果是0, ZF=1, 表示真值
PF:结果是0, 1 的个数是 0, PF=1, 表示偶数
SF: 结果是0, SF=0, 表示非负数, 非真
mov al,1 1 1 0 al = 0000 0001B
push ax 1 1 0
pop bx 1 1 0 bl = 0000 0001B
移动指令 不影响标志位
add al,bl 0 0 0 al = 0000 0010B
ZF:结果不是0
PF:结果有一个1, 不是偶数
SF: 不是负数
add al,10 0 1 0 al = 0000 1100
ZF: 结果不是0
PF: 结果有两个1, 偶数
SF: 不是负数
mul al 0 1 0 al = 0000 0000 1001 0000
mul,div 不影响标志位
2. 检测点 11.2
al 范围:-128(80H) => 127 ax 范围:-32768 => 32762 CF: 标志位, 把结果当做 无符号 运算 1111 1111 = 255
写出下面每条指令后, ZF、PF、SF、CF、OF 等标志位的值。
指令 CF OF SF ZF PF
sub al,al 0 0 0 1 1 al = 0B
减法运算, 结果为零。无进位 / 借位, 无溢出
CF: 不进位
OF: 不溢出
SF: 不是负
ZF: 是0
PF: 偶数
mov al,10H 0 0 0 1 1 al = 0001 0000B
移动指令 不影响标志位
add al,90H 0 0 1 0 1 al = 1010 0000B
加法运算, 10H + 90H = 0A0H。结果 AL 的最高位为 1, 表示负数。
CF: 无符号运算, 不进位
OF: 无溢出
SF: 负数
ZF: 不是0
PF: 2个1, 是偶数
mov al,80H 0 0 1 0 1 al = 1000 0000B
移动指令 不影响标志位
add al,80H 1 1 0 1 1 al = (0001) 0000 0000B
加法运算, 80H + 80H。
对于有符号数的计算而言, (-128) + (-128) = -256, 超出了 8 位有符号数的范围, 有溢出
对于无符号数的计算而言, 80H + 80H = 100H, 有向更高位进位, 且 AL 只能存储 00H 部分
CF: 进位
OF: 溢出
SF: 不是负
ZF: 是0
PF: 0个1, 是偶数
mov al,0FCH 1 1 0 1 1 al = 1111 1100
移动指令 不影响标志位
add al,05H 1 0 0 0 0 al = -4 + 5 = 0000 0001
加法运算, 0FCH + 05H。对于有符号数的计算而言, (-4) + (5) = 01H, 无溢出
对于有符号数的计算而言, FCH + 05H = 101H, 有向更高位进位, 且 AL 只能存储 01H 部分
CF: 进位
OF: 不溢出
SF: 不是负
ZF: 不是0
PF: 1个1, 不是偶数
mov al,7DH 1 0 0 0 0 al = 1101
移动指令 不影响标志位
add al,0BH 0 1 1 0 1 al = 1000 1000
加法运算, 7DH + 0BH。对于有符号数的计算而言, (125) + (11) = 136,
超出了 8 位有符号数的范围, 有溢出;
对于无符号数的计算而言, 7DH + 0BH = 88H, 无向更高位的进位。
结果 AL 的最高位为 1, 表示负数。
CF: 不进位
OF: 溢出
SF: 是负
ZF: 不是0
PF: 2个1, 偶数