小蜜蜂
你讓我滾,我滾了。你讓我回來,對不起,滾遠(yuǎn)了...
級別: 論壇先鋒
|
三菱程序疑問 MUL D10 K80 D20 DIV D20 D30 D40 MOV D40 D50 求助大家,第一行的乘法中D10乘以K80是生成D20還是D20 D21兩個?第二行的要用DIV還是DDIV?第三行要用MOV還是DMOV呢?拜托大家了,謝謝!還有從書上看是MUL D0 D2 D4,(D0)乘以(D2)等于(D5 D4),比如D0=8,D2=9,(D5 D4)=72,雖然72遠(yuǎn)遠(yuǎn)小于32767,但是也要存到(D5 D4)中,那上面我的程序是MUL D10 K80 D20 也就是(D21 D20)中了? |
---|---|
|
yeyhx
愛雖沒有說出口, 但并不代表不愛!!!
級別: 略有小成
|
第一行的乘法中D10乘以D80是生成D20還是D20 D21兩個? 答:乘法不管你D10和D80里面的數(shù)據(jù)是多大,其結(jié)果都會占用兩個寄存器,即D21 D20 如果用DMUL D10 D80 D20則占用(D23 D22 D21 D20) 第二行的要用DIV還是DDIV 答:兩個都可以用,不過如果用DIV則是低8位參與運(yùn)算。不過在這里用DIV就可以了 第三行要用MOV還是DMOV呢 答:MOV DMOV是傳送指令,如果第二行用DDIV那么第三行就要用DMOV了。 DMOV是運(yùn)算結(jié)果以32位輸出的。 結(jié)論: MUL D10 K80 D20 占用(D21 D20) 第二行DIV D20 D30 D40 占用(D41 D40) 第三行MOV D40 D50 D40=D50 以上GOOD LUCK |
|
---|---|---|
|
小蜜蜂
你讓我滾,我滾了。你讓我回來,對不起,滾遠(yuǎn)了...
級別: 論壇先鋒
|
太愛1樓的朋友了,不過第二行的,我還是有疑問,因為D20經(jīng)過第一行的乘法后是(D20 D21),到第二行D20(D20 D21)是32位的,D30是16位的,D20除以D30為什么可以用16位的DIV呢?難道說只有當(dāng)D20和D30都是32位的時候才要用DDIV?D20或D30有一個是16位的就不要用DDIV? |
---|---|
|
小蜜蜂
你讓我滾,我滾了。你讓我回來,對不起,滾遠(yuǎn)了...
級別: 論壇先鋒
|
還有如果第二行的D40是32位的(D41 D40),那么第三行為什么不要用DMOV呢?你不是說DMOV是運(yùn)算結(jié)果以32位輸出的。D40就是32位的啊。還有當(dāng)D40是64位的(D43 D42 D41 D40)那第三行又該用哪個MOV呢? |
---|---|
|
向夢飛
級別: *
|
如果第二行用DIV那么結(jié)果就不是你想要的結(jié)果了,因為源本來是32位你用16位的話只進(jìn)行了低16位運(yùn)算,用DIV只能運(yùn)算16位數(shù)據(jù)結(jié)果是32位低16位存商高16位存余數(shù). 用DDIV的話源1數(shù)據(jù)和源2數(shù)據(jù)都是32位.目標(biāo)就64位其中商占低32位余數(shù)占高32位 至于第3行用DMOV還是用MOV就看你要商還是要余數(shù)了 請多指教 |
---|---|
|
小蜜蜂
你讓我滾,我滾了。你讓我回來,對不起,滾遠(yuǎn)了...
級別: 論壇先鋒
|
6樓朋友,謝謝你了,第三行我商和余數(shù)都要用呢,我應(yīng)該用哪個MOV呢?或者如果我只要用商,用哪個MOV,又如果我只要用余數(shù),那么我應(yīng)該用哪個MOV?希望大家?guī)蛶臀疫@個菜鳥,謝謝大家了! |
---|---|
|