文件名称:数据寻址模式-利用pytorch实现对cifar-10数据集的分类
文件大小:4.81MB
文件格式:PDF
更新时间:2024-07-10 01:45:27
datasheet
6.4 数据寻址模式 程序存储器只能用一种方式寻址 (通过程序计数器), 而数据存储空间可用多种方式寻址。大部分指令的寻址 模式都是固定的。其他指令可能使用 多三种模式,根 据它们所使用的操作数和是否使能了扩展指令集而定。 这些寻址模式为: • 固有寻址 • 立即数寻址 • 直接寻址 • 间接寻址 当使能了扩展指令集(XINST 配置位 = 1)时,还可使 用另外一种寻址模式,即立即数变址寻址模式。关于该 模式操作的详细信息,请参见第 6.6.1 节 “ 使用立即数 偏移量进行变址寻址 ”。 6.4.1 固有寻址和立即数寻址 很多 PIC18 控制指令根本不需要任何参数。执行这些指 令要么对整个器件造成影响,要么仅隐式地针对一个寄 存器进行操作。此寻址模式就是固有寻址。该模式的示 例包括指令 SLEEP、 RESET和 DAW。 其他指令的工作方式与此类似,但需要操作码中有其他 显式的参数。由于指令需要一些立即数作为参数,该方 法被称为立即数寻址模式。该模式的示例包括指令 ADDLW和 MOVLW,它们分别向 W 寄存器加或移入立即 数值。其他立即数寻址指令,例如 CALL 和 GOTO,它 们包括一个 20 位的程序存储器地址。 6.4.2 直接寻址 直接寻址在操作码中指定操作的全部或部分源地址和/ 或目标地址。这些选项由指令附带的参数指定。 在核心 PIC18 指令集中,针对位和针对字节的指令默认 情况下使用直接寻址。所有这些指令都包含某个 8 位的 立即数地址作为其 低有效字节。此地址指定数据RAM 的某个存储区中寄存器的地址 (第 6.3.3 节 “ 通用寄存 器文件 ”)或快速操作存储区 (第 6.3.2 节 “ 快速操作 存储区 ”)中作为指令数据源的单元地址。 快速操作 RAM 位 “a” 决定地址的解析方式。当 “a” 为 1 时, BSR (第 6.3.1 节 “ 存储区选择寄存器 ”)的内容 将和指令中的直接地址一起用于确定寄存器的完整 12 位地址。当 “a” 为 0 时,此直接地址将被解析为快速操 作存储区中的一个寄存器。使用快速操作 RAM 的寻址 模式有时也被称为直接强制寻址模式。 有几条指令,例如 MOVFF,在操作码中包含完整的 12 位 地址(源地址或目标地址)。在这些情况下,BSR 被完 全忽略。 保存操作结果的目标寄存器由目标位 “d” 确定。当 “d” 为 1时,结果被存回源寄存器并覆盖原来的内容。当 “d” 为 0时,结果被存储在 W 寄存器中。没有 “d” 参数的指令 的目标寄存器隐含在指令中,这些指令的目标寄存器是 正在操作的目标寄存器或 W 寄存器。 6.4.3 间接寻址 间接寻址允许用户访问数据存储器中的单元而无需在指 令中给出一个固定的地址。这种寻址模式是通过使用文 件选择寄存器(File Select Register, FSR)作为指向 要读写单元的指针实现的。由于FSR本身作为特殊功能 寄存器位于 RAM 中,因此也可在程序控制中对其直接 操作。这使得FSR对于在数据存储器中实现诸如表和数 组等数据结构时非常有用。 也可以使用间接文件操作数(Indirect File Operand, INDF)进行寄存器间接寻址。这种操作允许自动递增、 递减或偏移指针,从而自动操作指针的值。它通过使用 循环提高代码执行效率,如例 6-5 所示的清零整个RAM 存储区的操作。它还允许用户在数据存储器中执行变址 寻址和其他针对程序存储器的堆栈指针操作。 例 6-5: 如何使用间接寻址清零 RAM (BANK 1) 注: 当使能 PIC18 扩展指令集时,核心 PIC18 指令集中某些指令的执行方式会发生改 变。更多信息,请参见第 6.6 节 “ 数据存储 器和扩展指令集 ”。 LFSR FSR0, 100h ; NEXT CLRF POSTINC0 ; Clear INDF ; register then ; inc pointer BTFSS FSR0H, 1 ; All done with ; Bank1? BRA NEXT ; NO, clear next CONTINUE ; YES, continueDS39977C_CN 第 128 页 初稿 2011 Microchip Technology Inc.