监测点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的值不太明白
1. SF是记录有符号运算的标志位,结果为负则置1,为正则置0.
2. 汇编里面最高位是符号位,最高位为1代表负数,为0表示整数。 小靚同学Leon 发表于 2014-8-23 01:09
1. SF是记录有符号运算的标志位,结果为负则置1,为正则置0.
2. 汇编里面最高位是符号位,最高位为1代表负 ...
是啊,我知道,可是
mov al,80h
add al,80h
有符号运算,80h为-128,再加上-128,就等于-256,溢出而且为负值,sf应该为1啊,下面最后一个语句也是不懂 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]