PIC 10F322从db表读取

时间:2013-06-07 21:48:51

标签: memory assembly pic memory-address

我使用mpasm为pic 10f322构建了一个汇编程序,我希望程序读取我的TABLE中的所有字符:将这些值放回我的WREG中。当我的代码执行时,假设读取存储在寄存器FSR中的值并获取存储在指向的地址的值。然后,此FSR值递增以获得下一个字符。但是,当我运行程序时,指针正在递增,但代码正在抓取垃圾值,因为似乎没有任何值存储在内存中。为什么我的指令不起作用?

            org     0x0000
            FSR     Equ     0x04
            INDF    Equ     0x00
    START
            movlw   TABLE
            movwf   FSR     ; move w value int address FSR
    Loop:   movf    INDF, 0 ; move character pointed in table back to w reg
            incf    FSR     ; increment incfg
            goto    Loop
    TABLE:
            db    "HELLO"
            db    "Man"

    END

我不希望数据存储在程序存储器中。相反,我想把数据放在数据存储器中。是否有汇编指令允许我像DB一样轻松地执行此操作?我的汇编程序是MPASM。

1 个答案:

答案 0 :(得分:3)

您无法通过FSRINDF寄存器访问代码内存,这两个寄存器用于访问数据内存。 改为使用查找表:

        movlw  1                ;Read second byte in Table
        movwf  TableIndex       ;Store index
        call   ReadLookupTable  ;Perform table read
        ...


ReadLookupTable   
        movlw  high Table
        movwf  PCLATH
        movlw  low Table
        addwf  TableIndex, w       ;Add index to table pointer           
        movwf  PCL                 ;Perform computed jmp
Table   
        retlw 10 
        retlw 11
        ...