PIC16F8X
1998 微芯 技术 公司 ds30430c-页 19
4.5 间接的 寻址; indf 和 fsr
寄存器
这 indf 寄存器 是 不 一个 物理的 寄存器. 地址-
ing indf 的确 地址 这 寄存器 谁的
地址 是 包含 在 这 fsr 寄存器 (fsr 是 一个
pointer
).这个 是 间接的 寻址.
例子 4-1: 间接的 寻址
• 寄存器 file 05 包含 这 值 10h
• 寄存器 file 06 包含 这 值 0ah
• 加载 这 值 05 在 这 fsr 寄存器
• 一个 读 的 这 indf 寄存器 将 返回 这 值 的
10h
• increment 这 值 的 这 fsr 寄存器 用 一个
(fsr = 06)
• 一个 读 的 这 indf 寄存器 now 将 返回 这
值 的 0ah.
读 indf 它自己 indirectly (fsr = 0) 将 生产
00h. writing 至 这 indf 寄存器 indirectly 结果 在 一个
非-operation (虽然 状态 位 将 是 影响).
一个简单的 程序 至 clear 内存 locations 20h-2fh
使用 间接的 寻址 是 显示 在 例子 4-2.
例子 4-2: 如何 至 clear 内存
使用 间接的
寻址
movlw 0x20 ;initialize pointer
movwf fsr ; 至 内存
next clrf indf ;clear indf 寄存器
incf fsr ;inc pointer
btfss fsr,4 ;所有 完毕?
goto next ;非, clear next
CONTINUE
: ;yes, continue
一个 有效的 9-位 地址 是 得到 用 concatenating
这 8-位 fsr 寄存器 和 这 irp 位 (状态<7>), 作
shown 在 图示 4-1. 不管怎样, irp 是 不 使用 在 这
pic16f8x.
图示 4-1: 直接/间接的 寻址
直接 寻址
RP1 RP0 6
从 opcode
0 IRP 7 (fsr) 0
间接的 寻址
bank 选择 location 选择
bank 选择 location 选择
00 01 10 11
00h
7Fh
00h
0Bh
0Ch
2Fh
(1)
30h
(1)
7Fh
不 使用
bank 0 bank 1 bank 2 bank 3
便条 1: pic16f83 和 pic16cr83 设备.
2: pic16f84 和 pic16cr84 设备
3: 为 记忆 编排 detail 看 图示 4-1.
4Fh
(2)
50h
(2)
地址
编排 后面的
至 bank 0
数据
记忆
(3)
不 使用