550374389
!。
級別: 論壇先鋒
|
長豐實業大哥,貌似你的解釋有點問題,DMUL指令出來的結果是64位的,不管這個結果大小如何,都是按64位來存放的,所以應該是存放在D130 D131 D132 D133中去的吧?? |
---|---|
|
路在何方
路漫漫其修遠兮,吾將上下而求索。
級別: 工控俠客
|
不論是16位32位64位那都是數據的長度,只是看你轉換的大小而決定的,一個16位數據寄存器處理數值的范圍是-32767--+32767超過這個范圍就要使用兩個寄存器了所以有D*** 而32位四則運算里面包含的兩個16位寄存器,這兩個寄存器的數值處理范圍是-2147483648--+2147483647,DMUL DSUB DADD DDIV==用的地方太多了我就不舉了 回樓上 你說樓主程序里面的DMUL是包括D130 D131 D132 D133是片面的 畢竟我們不知道他程序里面數值的大小。 以上純屬個人觀點,欲求證實還需加倍瀏覽官方資料。也希望大家和諧,批評指正。 [ 此帖被長豐實業在2012-02-14 23:10重新編輯 ] |
---|---|
|
路在何方
路漫漫其修遠兮,吾將上下而求索。
級別: 工控俠客
|
DMUL K3000 D130 D130 如果是MUL K3000 D130 D130 那不是也要占用兩個寄存器D130 D131 ,可這是MUL樓主樓上解析下 |
---|---|
|
550374389
。!
級別: 論壇先鋒
|
如果是MUL K3000 D130 D130 那不是也要占用兩個寄存器D130 D131 ,可這是MUL樓主樓上解析下 回長豐實業大哥: MUL k3000 D130 D130 這條指令出來的結果肯定是要占用D130和D131 兩個寄存器的,舉兩種情況,當D130里的數值為+32767時,這時結果大于32767 那肯定要占用D131的,但當K3000 乘以D130 的結果小于+32767 時,用D130就能裝得下運算結果了,這時監視D131的值為0,不過這并不表示得出來的結果沒有占用D131,你再對D131寫入其他數值的話,這時監視會發現MUL k3000 d130 d130 中D130的數值會有變化~~~ 這也是我個人的看法。如果有什么不對的地方,請長豐實業大哥指正,大家共同討論,共同進步!! 和氣生財 |
---|---|
本帖最近評分記錄: |
550374389
!!!
級別: 論壇先鋒
|
更正一下,不是D130的數值有變化,是MUL k3000 d130 D130 的運算結果有變化 |
---|---|
|