因為:MD4由MB4,MB5,MB6,MB7組成,其中MB6,MB7是他的低字
MD6由MB6,MB7,MB8,MB9組成,其中MB6,MB7是他的高字。
你給MD4賦值為6,其寫入最低字中,也就是MB7中的值為6,其16進(jìn)制代碼為:16#0000 0006
由于MD4,與MD6存在交叉地址空間,因此此時的MD6的16進(jìn)制代碼為:16#0006 0000
接下來,你給MD6賦值4,因此4寫入低字空間,MD6的16進(jìn)制代碼為 16#0000 0004,看見了沒有,這個操作將MD4的低字MB6,MB7同時清零了。
因此,此時MD4的值為0,而MD6的值為4.
又由于你使用CMP >=R 指令,而MD4的值為0,因此其浮點數(shù)也為0,而MD6的值為4,其浮點數(shù)必定不為0,16進(jìn)制4的浮點數(shù)應(yīng)該為:5.60519e-045)因此,MD6的值始終大于MD4的值,能流不導(dǎo)通。
在此段程序中,樓主做了兩個初學(xué)者極大的錯誤:
1、使用地址重疊,一般不是特殊需求應(yīng)避免使用重疊地址,這可能導(dǎo)致正常數(shù)據(jù)被意外修改。
2、使用了浮點數(shù)比較,因為浮點數(shù)是近似值,因此使用浮點數(shù)比較可能導(dǎo)致一些意外情況。
Good Luck~