Memory 图10F322从db表读取数据
我使用mpasm为pic 10f322构建了一个汇编程序,我希望该程序能够读取表中的所有字符:将这些值放回我的WREG。当我的代码执行时,假设它读取存储在寄存器FSR中的值,并获取存储在指向的地址处的值。然后,该FSR值递增以获得下一个字符。但是,当我运行程序时,指针正确递增,但代码捕获的是垃圾值,因为内存中似乎没有存储任何值。为什么我的指令不起作用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
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指令进行手动操作。因此,无法使用汇编指令进行此操作?这让人失望。谢谢你迄今为止的帮助!