xiaosawanjava 发表于 2014-5-23 21:04:50

标志寄存器sf的问题

本帖最后由 xiaosawanjava 于 2014-5-23 21:10 编辑


按照我所想的最后一条指令 mul al   应该是12*12=144 = 1001 0000,ZF =0   PF = 1 SF = 1


但是答案 SF = 0 ,这里我怎么想也没想明白??


还有就是 SF 是根据结果的最高位来设置的吗,那到底是根据第8位还是根据第16位来判断的,
比如我进行的是16 位运算 add ax,bx   ,还是说如果8位运算就看第8位,16位运算就看16位啊?

oggplay 发表于 2014-5-23 21:04:51

SF标志是符号标志,什么意思,就是SF=0意思就是说这个数是正,SF=1表示的是负数,这是CPU设计它的根本原因,如add sub指令需要,但是前提是你的了解无符号数和有符号数(补码)的区别。无符号数加减的时候就不用判断SF了,无意义,只看CF ZF OF !

xiaosawanjava 发表于 2014-5-23 21:42:43

本帖最后由 xiaosawanjava 于 2014-5-23 21:44 编辑

看来这分也就自己拿了,已经解决了,SF=0 是因为 mul 结果是放在ax中,ax最高位是为0,所以sf 是为0,然后这个问题也说明,结果如果是存放在8位的寄存器或者存储器,那SF 就看第8位,否则就看第16位是多少。

xiaosawanjava 发表于 2014-5-23 22:47:23

oggplay 发表于 2014-5-23 22:44 static/image/common/back.gif
SF标志是符号标志,什么意思,就是SF=0意思就是说这个数是正,SF=1表示的是负数,这是CPU设计它的根本原因, ...

反正也就你一个人来帮我,反正分是要给的。
页: [1]
查看完整版本: 标志寄存器sf的问题