风扫地 发表于 2011-11-4 00:47:46

疑问:关于SF标志位

本帖最后由 风扫地 于 2011-11-22 18:10 编辑

检测点11.2

mov al,10h   ;(al)=10h
add al,90h      ;(al)=a0h   当成有符号计算的话   90h 是-122的补码。10h是自身的补码相加为负sf=1、最高位为1
mov al,80h    ;(al)=80h   
add al,80h   ;(al)=00h    当成有符号数 80h是    -128的补码。。-128+(-128)为负数。sf不是应该等于1 为什么等于0还是说SF的值只取决与最高位符号位的值?
mov al,0fch    ;(al)=0fch      
add al,05h      ;(al)=01h      当成有有符号数0fch是 -4的补码。。-4+5=1为正。。sf =0   同时最高位为0
mov al,7dh   ;(al)=7dh
add al,0bh      ;(al)=88h      当成有符号数   7d 和0b 都是正数。结果为正数。但答案sf =1




sf的取值可以由结果的最高位来确定。而不是用看有符号数运算的正负。是这么一回事么?希望各位大大解答下。。

ever.g 发表于 2011-11-4 09:14:13

7d+0b=88h=136 是补码 所以结果为负数 最高位为1    sf=1
80h+80h=100h 进位了,8位寄存器里结果为0,自然sf=0
页: [1]
查看完整版本: 疑问:关于SF标志位