記憶體種類
type | SDCC | instruction | size | addressing |
(A) program | __code | MOVC | 64K | index direct |
(B) external | __xdata | MOVX | 64K | indirect |
(C) internal(80~FF) | __idata | MOV | 128 | indirect |
(C) SFR(80~FF) | __sfr | MOV | 128 | direct |
(C) internal(0~7F) | __data | MOV | 128 | direct/indirect |
記憶體定址
type | read | write | register |
direct | MOV Rn,direct MOV direct,direct | MOV direct,Rn MOV direct,@DPTR MOV direct,#data | R0~R7,A |
indirect | MOV direct,@Ri MOVX A,@DPTR | MOV @Ri,direct MOVX @DPTR,A MOV @Ri,#data | R0,R1,DPTR,A |
index direct | MOV A,#30h MOV DPTR,#300H MOVC A,@A+DPTR | X | A,DPTR |
- Ri=R0,R1,Rn=R0~R7。
- 索引定址法 (index direct) 只能用在程式記憶體,而且不能寫入,只能讀取到 A。
- 外部記憶體只能使用間接定址法 (indirect),而且只能透過 Ri/DPTR/A 三者傳遞數值,如果要寫入數值,只能把值先存入 A,再由 A 寫入 DPTR/Ri。
- 內部記憶體不論間接或直接都可以直接把數值寫入,不需要透過 A,當然要經由 A 也是可以。
張貼留言