gpp0603
靜水無(wú)為
級(jí)別: 略有小成
![]() |
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)算錯(cuò)誤,還是值超出范圍 請(qǐng)高手幫忙解釋一下,期待你的回復(fù)。 |
---|---|
|
tkggtdkjpl
工欲善其事,必先利其器!
級(jí)別: 網(wǎng)絡(luò)英雄
![]() ![]() |
MUL D0 D1 D2 占用D2 D3 SUB D2 K1 D10 DIV D10 K4 D12 地址重疊! |
|
---|---|---|
|
木皮
學(xué)海無(wú)涯
級(jí)別: 家園常客
![]() |
超出范圍了,你改用32位,并把存儲(chǔ)器地址間隔兩位以上 |
|
---|---|---|
|
天空流星
SZ-CL
級(jí)別: 網(wǎng)絡(luò)英雄
![]() |
同意5樓 8192*4的結(jié)果超范圍了,結(jié)果是個(gè)32位的把最后一步改成32位的運(yùn)算 |
---|---|
|
ymr78419972
宿命的輪回注定了要讓我們?nèi)プ分鹉切╇y以企及卻又十分向往的美麗
級(jí)別: 工控俠客
![]() |
兩D相MUL,那存結(jié)果一定是32位的,D1,D2全都是16位的啊,所以: DMOV K8192 D0 (D1被占用) DMOV K4 D2(D3被占用) DMUL D0 D2 D4 (D5被占用) DSUB D4 K1 D10 (D11被占用) DDIV D10 K4 D12 (D13被占用) 8192*4 = 32768 D16位的最大值是32767 |
|
---|---|---|
|
lplvpeng
專業(yè)制造橡膠射出成型機(jī)
級(jí)別: 略有小成
![]() |
樓主沒(méi)意識(shí)到32位指令用D前綴 |
|
---|---|---|
|
dongguansae
級(jí)別: 探索解密
![]() |
這樣改就對(duì)了: MOV K8192 D0 MOV K1 D1 MUL D0 D1 D2 DSUB D2 K1 D10 DDIV D10 K4 D12 MUL后的值是32位的,保存在D2和D3中,所以想用這個(gè)值去代入運(yùn)算,必須加D,DSUB D2 K1 D10 等于(D3,D2)--1 =D10 這樣才對(duì),另外D10也是32位的,所以下面應(yīng)該是DDIV 才能計(jì)算正確。這個(gè)比較特殊,一個(gè)帶符號(hào)的16位顯示的范圍是+/-32767,所以32768在D3,D2中是這樣的: 00000000 00000000 100000000 00000000 (0為正,1為負(fù)),如果沒(méi)有加D,那只是D2代入,D3被忽略,默認(rèn)為1,所以此時(shí)D2會(huì)顯示 -32768,再減個(gè)1,為-32769,超出了范圍,所以,D10的值此時(shí)為0。說(shuō)了這么多,總之加D就對(duì)啦! [ 此帖被dongguansae在2013-03-29 12:09重新編輯 ] |
---|---|
|