我使用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。
答案 0 :(得分:3)
您无法通过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
...