进击的小灰灰 发表于 2014-8-23 00:43:36

监测点11.2

写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值。

            al               CF    OF    SF    ZF    PF

sub al,al   0h/0000 0000b      0   0   0   1   1

mov al,10h    10h/0010 0000b   0   0   0   1   1

add al,90h    a0h/1010 0000b   0   0   1   0   1

mov al,80h    80h/1000 0000b   0   0   1   0   1

add al,80h    0h/0000 0000b      1   1   0   1   1

mov al,0fch   0fch/1111 1100b    1   1   0   1   1

add al,05h    1h/0000 0001b    1   0   0   0   0

mov al,7dh    7dh/1111 1101b   1   0   0   0   0

add al,0bh    88h/1000 1000b    0   1   1   0   1

其中
add al,80h   
mov al,0fchadd al,0bh
这三条指令后SF的值不太明白

小靚同学Leon 发表于 2014-8-23 01:09:10

1. SF是记录有符号运算的标志位,结果为负则置1,为正则置0.
2. 汇编里面最高位是符号位,最高位为1代表负数,为0表示整数。

进击的小灰灰 发表于 2014-8-23 09:58:41

小靚同学Leon 发表于 2014-8-23 01:09
1. SF是记录有符号运算的标志位,结果为负则置1,为正则置0.
2. 汇编里面最高位是符号位,最高位为1代表负 ...

是啊,我知道,可是
mov al,80h
add al,80h
有符号运算,80h为-128,再加上-128,就等于-256,溢出而且为负值,sf应该为1啊,下面最后一个语句也是不懂

小靚同学Leon 发表于 2014-8-23 14:17:57

1. mov al,80h add al,80h,有符号运算时结果是溢出了,没错,而且OF也置1了。
2. 但是在计算机里面存储的都是无符号运算的结果,所以存储的结果是00H,产生了进位1,进位标志位置1。结果为正,SF置0。
3. 对于有符号运算和无符号运算你可以参考一下我以前写的一篇帖子。
http://bbs.fishc.com/thread-50833-1-1.html
页: [1]
查看完整版本: 监测点11.2