gpp0603
靜水無為
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 250 個
工控威望: 331 點(diǎn)
下載積分: 10274 分
在線時間: 217(小時)
注冊時間: 2009-11-12
最后登錄: 2024-12-26
查看gpp0603的 主題 / 回貼
樓主  發(fā)表于: 2013-03-28 07:13
MOV  K8192 D0
MOV  K4         D1
MUL D0    D1    D2
SUB  D2   K1    D10
DIV    D10  K4   D12

監(jiān)視發(fā)現(xiàn)到D2值是—32768  D12的值是0,是否運(yùn)算錯誤,還是值超出范圍
請高手幫忙解釋一下,期待你的回復(fù)。
dongguansae
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 25 個
工控威望: 146 點(diǎn)
下載積分: 2218 分
在線時間: 25(小時)
注冊時間: 2012-12-11
最后登錄: 2020-07-14
查看dongguansae的 主題 / 回貼
1樓  發(fā)表于: 2013-03-29 11:59
這樣改就對了:
MOV K8192 D0
MOV K1 D1
MUL D0 D1 D2
DSUB D2 K1 D10
DDIV D10 K4 D12

MUL后的值是32位的,保存在D2和D3中,所以想用這個值去代入運(yùn)算,必須加D,DSUB D2 K1 D10 等于(D3,D2)--1 =D10
這樣才對,另外D10也是32位的,所以下面應(yīng)該是DDIV 才能計算正確。這個比較特殊,一個帶符號的16位顯示的范圍是+/-32767,所以32768在D3,D2中是這樣的:
00000000 00000000 100000000 00000000 (0為正,1為負(fù)),如果沒有加D,那只是D2代入,D3被忽略,默認(rèn)為1,所以此時D2會顯示 -32768,再減個1,為-32769,超出了范圍,所以,D10的值此時為0。說了這么多,總之加D就對啦!
[ 此帖被dongguansae在2013-03-29 12:09重新編輯 ]