|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
關(guān)于查表程序(匯編),請(qǐng)指教 |
| 作者:zkchen 欄目:單片機(jī) |
R2R3放輸入值,查表后的值仍放在R2R3中 程序段如下: LTB2 : MOV DPTR , #TAB2 MOV A , R3 CLR C RCL A ; R3*2 MOV R3 , A XCH A , R2 RCL A R2*2 XCH R2 , A ADD A , DPL ;(R2R3)+(DPTR) 送 DPTR MOV DPL , A MOV A , DPH ADDC A , R2 MOV DPH , A CLR A MOVC A ,@A+DPTR MOV R2 , A CLR A INC DPTR MOVC A ,@A+DPTR MOV R3 , A RET TAB2:DW.... 請(qǐng)問(wèn)其中R2R3為什么要先乘以2 ???? 感激不盡!!! |
| 2樓: | >>參與討論 |
| 作者: guanyaoshu 于 2006/9/14 0:31:00 發(fā)布:
是不是因?yàn)檫@樣? 是不是因?yàn)楸淼闹凳嵌x為DW,占兩個(gè)單元的。所以輸入值要乘2才能指到相應(yīng)的表值。就是說(shuō)一個(gè)輸入值,對(duì)應(yīng)兩個(gè)字節(jié)的表值,所以輸入值要乘2。 程序中可以看到,它是把R2R3當(dāng)作一個(gè)數(shù),然后整個(gè)乘了2。然后與DPTR相加,得到一個(gè)新指針,然后利用這個(gè)指針取兩個(gè)連續(xù)的數(shù)。 這個(gè)程序是不是因?yàn)楸淼臄?shù)據(jù)大,超出了256的范圍,所以要用R2R3來(lái)做偏移量的呀? 我是菜鳥,說(shuō)錯(cuò)了大家不要笑 * - 本貼最后修改時(shí)間:2006-9-14 0:42:39 修改者:guanyaoshu |
|
| 3樓: | >>參與討論 |
| 作者: dengm 于 2006/9/14 7:51:00 發(fā)布:
* 2 用 + 法,就不用 CLR C, 可少1CY, 1 byte. MOV A, R3 ADD A, R3 XCH A, R2 RLC A ;====== === === ==== ==== MOV A , R3 CLR C RLC A ; R3*2 MOV R3 , A XCH A , R2 RLC A R2*2 |
|
| 4樓: | >>參與討論 |
| 作者: zkchen 于 2006/9/14 12:09:00 發(fā)布:
to dengm 問(wèn)題就是為什么要乘以2呢??? to guanyaoshu:MOVC A , @A+DPTR 指令表格可以設(shè)在64k程序存儲(chǔ)器空間的任何地方,MOV A , @A+PC 才只能設(shè)在PC下256各單元里 |
|
| 5樓: | >>參與討論 |
| 作者: maychang 于 2006/9/14 12:24:00 發(fā)布:
guanyaoshu 已經(jīng)說(shuō)得足夠清楚 R2R3中是數(shù)據(jù)序號(hào),每個(gè)數(shù)據(jù)占兩個(gè)字節(jié),指針指向的是表首地址加偏移字節(jié)數(shù),所以R2R3要乘2。 |
|
| 6樓: | >>參與討論 |
| 作者: zkchen 于 2006/9/14 14:59:00 發(fā)布:
謝謝 哦,謝謝! |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào) |