Memory 图10F322从db表读取数据

Memory 图10F322从db表读取数据,memory,assembly,pic,memory-address,Memory,Assembly,Pic,Memory Address,我使用mpasm为pic 10f322构建了一个汇编程序,我希望该程序能够读取表中的所有字符:将这些值放回我的WREG。当我的代码执行时,假设它读取存储在寄存器FSR中的值,并获取存储在指向的地址处的值。然后,该FSR值递增以获得下一个字符。但是,当我运行程序时,指针正确递增,但代码捕获的是垃圾值,因为内存中似乎没有存储任何值。为什么我的指令不起作用 org 0x0000 FSR Equ 0x04 I

我使用mpasm为pic 10f322构建了一个汇编程序,我希望该程序能够读取表中的所有字符:将这些值放回我的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。

您不能通过
FSR
INDF
寄存器访问代码内存,这两个寄存器用于访问数据内存。 改用查找表:

        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
        ...

我想用存取数据存储器,而不是程序存储器来存储数据。您能告诉我如何通过像DB@Mr.Student这样的汇编指令来实现这一点吗?DB用于代码字节声明,而不是数据RAM。如果您想读取数据RAM,必须先设置数据RAM的内容。这就是我要问的,我如何设置数据RAM的内容?@Mr.Student:您可以通过movlw和movwf指令进行手动操作。因此,无法使用汇编指令进行此操作?这让人失望。谢谢你迄今为止的帮助!