TMS320LF2407A汇编指令(word版1.0)_第1页
TMS320LF2407A汇编指令(word版1.0)_第2页
TMS320LF2407A汇编指令(word版1.0)_第3页
TMS320LF2407A汇编指令(word版1.0)_第4页
TMS320LF2407A汇编指令(word版1.0)_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TMS320LF2407A 汇编指令集汇编指令集 2011 年年 word 版版 临沂大学信息学院 Liuyuli LYL7120 1 目目 录录 第 1 部分 前言 1 1 1 指令集按功能分为六大类 1 1 2 符号定义 1 第 2 部分 TMS320LF240 x 的汇编指令概述 2 2 1 汇编语言源程序的标准格式 2 2 2 在编写汇编语句时 必须遵循以下格式 2 2 3 汇编语言的指令集 2 2 4 汇编指令的语法和说明 2 2 5 存储器寻址方式 3 第 3 部分 汇编指令集 7 1 ABS 累加器取绝对值 7 2 ADD 累加器加 8 3 ADDC 带进位的累加器加 9 4 ADDS 符号扩展抑制的累加器加 9 5 ADDT TREG 指定移位的累加器加 10 6 ADRK 辅助寄存器加短立即数 11 7 AND 和累加器进行与操作 11 8 APAC PREG 加到累加器 12 9 B 无条件跳转 12 10 BACC 跳转到累加器指定的地址 13 11 BANZ 辅助寄存器非 0 跳转 13 12 BCND 条件跳转 14 13 BIT 位测试 14 14 BITT TREG 指定位测试 15 15 BLDD 数据存储器间的块传送 16 16 BLPD 程序区到数据区的块移动 16 17 CALA 累加器指定地址的子程序调用 17 18 CALL 无条件调用 18 19 CC 条件调用 18 20 CLRC 控制位清 0 18 21 CMPL 累加器逻辑取反 19 22 CMPR 辅助寄存器与 AR0 比较 19 23 DMOV 数据移动 20 24 IDLE 等待中断 21 25 IN 从端口读入数据 21 26 INTR 软件中断 21 27 LACC 带移位的累加器装载 21 28 LACL 装载累加器低 16 位 高 16 位清 0 22 29 LACT 由 TREG 指定左移位数的累加器装载 23 30 LAR 辅助寄存器装载 24 31 LDP 数据页指针装载 25 2 32 LPH 乘积寄存器高位装载 26 33 LST 状态寄存器装载 26 34 LT TREG 寄存器装载 27 35 LTA TREG 寄存器装载并累加前一次乘积 28 36 装载 TREG 寄存器指令 LTD 28 37 LTP TREG 寄存器装载并将乘积寄存器内容存入累加器 ACC 中 29 38 LTS TREG 寄存器装载 累加器减去前一次乘积 30 39 MAC 乘累加 30 40 MACD 乘累加并数据移动 31 41 MAR 修改辅助寄存器 31 42 MPY 乘 32 43 MPYA 乘并累加前一次乘积 33 44 MPYS 乘并减去前一次乘积 33 45 MPYU 乘无符号数 34 46 NEG 累加器取补码 34 47 NMI 非屏蔽中断 35 48 NOP 空操作 35 49 NORM 累加器内容归一化 35 50 OR 与累加器进行或操作 36 51 OUT 输出数据到端口 36 52 PAC 乘积寄存器内容装载到累加器 37 53 POP 栈顶内容弹出到累加器低 16 位 37 54 POPD 栈顶内容弹出到数据存储单元 38 55 PSHD 数据存储单元内容压入堆栈 40 56 PUSH 累加器的低 16 位压入堆栈 42 57 RET 子程序返回 43 58 RETC 条件返回 44 59 ROL 累加器循环左移 44 60 ROR 累加器循环右移 45 61 RPT 重复执行下一条指令 45 62 SACH 存储累加器移位后的高 16 位 46 63 SACL 存储累加器移位后的低 16 位 47 64 SAR 存储辅助寄存器 47 65 SBRK 辅助寄存器减去短立即数 48 66 SETC 控制位置位 48 67 SFL 累加器左移 48 68 SFR 累加器右移 49 69 SPAC 累加器减乘积寄存器 49 70 SPH 存储乘积寄存器的高 16 位 49 71 SPL 存储乘积寄存器的低 16 位 50 72 SPLK 长立即数存储到数据存储单元 51 73 SPM 设置 PREG 输出的移位模式 51 74 SQRA 数值平方并累加前一次乘积 52 75 SQRS 数值平方并减去前一次乘积 52 3 76 SST 存储状态寄存器 53 77 SUB 累加器减 54 78 SUBB 带借位的累加器减 55 79 SUBC 条件减 56 80 SUBS 符号扩展抑制的累加器减 57 81 SUBT TREG 确定移位的累加器减 58 82 TBLR 表读 58 83 TBLR 表读指令 58 84 TBLW 表写 59 85 TRAP 软件中断 60 86 XOR 与累加器进行异或操作 60 87 ZALR 累加器低位字 1 清 0 高位字带舍入装载 61 1 第第 1 部分部分 前言前言 1 1 指令集按功能分为六大类 指令集按功能分为六大类 累加器 算术和逻辑指令 辅助寄存器和数据页面指针指令 TREG PREG 和乘法指令 转移指令 控制指令 I O 和存储器操作 1 2 符号定义符号定义 ACC 累加器 ARx LAR 和 SAR 指令中使用的 3 位值 指定被操作的辅助寄存器 CM 2 位数值 CMPR 指令根据 CM 的值进行比较 CM 00 测试是否当前 AR AR0 CM 01 测试是否当前 ARAR0 CM 11 测试是否当前 AR AR0 AR 辅助寄存器 BITX 4 位数值 表示 BIT 指令要测试数据存储器值的哪一位 SHIFT 4 位移位值 TP 条件执行指令的 2 位数值 BIO 引脚为低 TP 00 TC 1 TP 01 TC 0 TP 10 无条件 TP 11 2 第第 2 部分部分 TMS320LF240 x 的汇编指令概的汇编指令概 述述 汇编语言是 DSP 应用软件的基础 使用汇编语言时必须要符合规定的格式 只有这样汇编器才能将源文件转换为机器语言的目标文件 2 1 汇编语言源程序的标准格式 汇编语言源程序的标准格式 汇编语句格式一般包含 4 部分 标号 指令 操作数和注释 以助记符指 令为例 格式如下 标号 指令 操作数 注释 其中 内的内容为可选项 2 2 在编写汇编语句时 必须遵循以下格式 在编写汇编语句时 必须遵循以下格式 1 语句必须以标号 空格 星号或分号开始 2 若使用标号 则必须从第 1 列开始 标号长度最多为 32 个字符 由 A Z a z 0 9 和 等组成 但第 1 个字符不能为数字 标号后可以跟一个冒号 但并不作为标号的一部分 3 每部分必须由 1 个或多个空格分开 4 开始于第 1 列的注释须用星号 或分号 标示 但在其他列开始的 注释前面只能用分号 5 指令一定不能从第 1 列开始 否则将被视为标号 指令包括助记符指 令 汇编伪指令 如 data set 宏伪指令 如 macro 和宏调用 6 操作数可以为列表形式 汇编器允许使用常数 符号或表达式作为地 址 立即数或间接寻址 当操作数为立即数时 使用 号作为前缀 操作数为间 接寻址时 使用 号作为前缀 将操作数的内容作为地址 2 3 汇编语言的指令集汇编语言的指令集 TMS320LF240 x 的汇编语言共 87 条 分为 6 大类 分别是累加器 算术和 逻辑指令 辅助寄存器和数据页指针指令 TREG PREG 和乘法指令 跳转指令 控制指令 I O 和存储器操作指令 2 4 汇编指令的语法和说明汇编指令的语法和说明 在介绍汇编指令之前 先把所用到的操作数做一统一规定 dma 数据存储器地址的低 7 位 LSB 3 shift 左移位数 0 15 n 指定下一次的辅助寄存器 ARP 值 0 7 k 8 位短立即数 1k 16 位长立即数 ind 是一个间接寻址变量 可取 0 0 BR0 BR0 Pma 16 位程序存储器地址 PA 16 位 I O 端口或 I O 映射寄存器地址 2 5 存储器寻址方式存储器寻址方式 立即寻址 直接寻址 间接寻址 1 1 立即寻址 立即寻址 含义 指令中已包含有执行指令所需的操作数 说明 在数值或符号前加 表示立即数 两种形式 短立即数 8 9 13 位 和长立即数 16 位 例如 例如 采用短立即寻址 RPT 指令 P61 后最大 255 RPT 99 将紧跟在后面的语句重复 99 1 次 采用长立即寻址 ADD 指令 ADD 65534 2 将数据 65534 左移两位后 再将结果加至 累加器 2 2 直接寻址 直接寻址 含义 用指令中包含的数据存储器地址的低 7 位 基地址 16 位数据存储器地址 基地址 DP 数据页指针 ST0 低 9 位 指令寄存器的内容 位 15 8 指示指令类型 操作码 和指令所访问的数据值的移位信息 位 7 直接 间接指示符 0 直接寻址 1 间接寻址 位 6 0 指示指令访问的数据存储器的偏移量 16 位地址 步骤 设置数据页面 将适当的值 0 511 加载到 DP 可利用 LDP 或 任何能将数值加载到 ST0 的指令 指定偏移地址 给出 7 位偏移地址作为指令的操作数 注 不必在每条使用直接寻址的指令前都设置数据页面 如果代码快内的 所有指令都访问同一数据页面 128 字 只须在该指令块的前面加载一个 DP 必须保证在访问新的数据页面前改变 DP 例 例 使用直接寻址的 ADD 指令 4 LDP 4 将数据页面设置为 4 ADD 9h 5 数据存储器地址 0209h 中的内容左移 5 位与累 加 器的内容相加 例 例 使用直接寻址的 ADDC 指令 LDP 500 将数据页面设置为 500 ADDC 6h 数据存储器地址 FA06h 中的内容及进位位 C 的值 与累 加器的内容相加 3 3 间接寻址 间接寻址 含义 按辅助寄存器 AR 中的内容寻址数据存储器 用途 主要用在需要存储器地址以步进方式连续变化的场 合 说明 1 当前辅助寄存器 通过向状态寄存器 ST0 中的 3 位辅助寄存器指针 ARP 在装 入 0 7 可选择特定的辅助寄存器 ARP 可由 MAR LST 或任何支持间接寻址的 指令装载 ARP 所指的寄存器被作为当前寄存器 AR 执行指令是 当前 AR 的 内容用作被访问的数据存储器地址 2 间接寻址选项 不加也不减 指令使用当前 AR 的内容作为数据存储器的地址 但当前 AR 的内容既不增加也不减少 加 1 或减 1 指令使用当前 AR 的内容作为数据存储器的地址 但当前 AR 的内容加 1 或减 1 加或减一个变址量 指令使用当前 AR 的内容作为数据存储器的地址 然 后使当前 AR 的内容加或减一个变址量 该变址量为 AR0 中的值 加或减一个变址量且反向进位 指令使用当前 AR 的内容作为数据存储器 的地址 然后使当前 AR 的内容加或减一个变址量 该变址量为 AR0 中的值 采 用反向进位方式 用于 FFT 选项选项操作数操作数例子例子 不增不不增不 减减 LACCLACC 用当前用当前 ARAR 所指的所指的 DMDM 地址中地址中 的内容装载累加器的内容装载累加器 5 增增 1 1 LACCLACC 用当前用当前 ARAR 所指的所指的 DMDM 地址中的内容装载累地址中的内容装载累 加器然后当前加器然后当前 ARAR 加加 1 1 减减 1 1 LACCLACC 用当前用当前 ARAR 所指的所指的 DMDM 地址中的内容装载累地址中的内容装载累 加器然后当前加器然后当前 ARAR 减减 1 1 加变址加变址 量量 0 0 LACCLACC 0 0 用当前用当前 ARAR 所指的所指的 DMDM 地址中的内容装载累地址中的内容装载累 加器然后当前加器然后当前 ARAR 的内容加上的内容加上 AR0AR0 的内容的内容 减变址减变址 量量 0 0 LACCLACC 0 0 用当前用当前 ARAR 所指的所指的 DMDM 地址中的内容装载累地址中的内容装载累 加器然后当前加器然后当前 ARAR 的内容减去的内容减去 AR0AR0 的内容的内容 加变址加变址 量反向量反向 进位进位 BRO BRO LACCLACC BRO BRO 用当前用当前 ARAR 所指的所指的 DMDM 地址中的内容装载地址中的内容装载 累加器然后当前累加器然后当前 ARAR 的内容加上的内容加上 AR0AR0 的内容 采用反转的内容 采用反转 进位进位 减变址减变址 量反向量反向 进位进位 BRO BRO LACCLACC BRO BRO 用当前用当前 ARAR 所指的所指的 DMDM 地址中的内容装载地址中的内容装载 累加器然后当前累加器然后当前 ARAR 的内容减去的内容减去 AR0AR0 的内容 采用反转的内容 采用反转 进位进位 3 辅助寄存器 除了更新当前 AR 内容外 某些指令还可以指明下一个 AR 例 例 MAR AR1 将当前 AR 设为 AR1 LACL AR2 将 AR1 所指向的地址中的内容装载到 ACC 加器的低 16 位 AR1 内容加 1 使 AR2 为当前 AR SACL 将 ACC 的低 16 位存于 AR2 所指向的地址 单元 AR2 内容加 1 4 间接寻址操作码格式 指令寄存器的内容 位 15 8 指定指令类型及与数据移位相关的信息 位 7 直接 间接指示 1 为间接寻址方式 0 为直接寻址方式 位 6 4 AR 更新代码 ARU 确定是否对 AR 进行更新以及将其增加还是减少 将 ACC 的低 16 位存于 AR2 所指向的地址 位 3 下一 AR 指示符 N 指定该指令是否改变 ARP 的值 0 ARP 内容不变 1 NAR 的内容加载到 ARP 原 ARP 的值加载到 ST1 的 ARB 位 2 0 下一 AR 的值 NAR ARUARU 代码代码 6 65 54 4 在当前在当前 ARAR 中完成的运算中完成的运算 0 00 00 0 在当前在当前 ARAR 中无操作中无操作 0 00 01 1 当前当前 AR 1AR 1 当前当前 ARAR 0 01 10 0 当前当前 AR 1AR 1 当前当前 ARAR 0 01 11 1 保留保留 1 10 00 0 前前 AR AR0AR AR0 当前当前 AR AR 反向进位反向进位 1 10 01 1 当前当前 AR AR0AR AR0 当前当前 ARAR 6 1 11 10 0 当前当前 AR AR0AR AR0 当前当前 ARAR 1 11 11 1 当前当前 AR AR0AR AR0 当前当前 AR AR 反向进位反向进位 5 修改辅助寄存器的内容 特定指令 LAR ADRK SBRK 和 MAR LAR 装载 AR ADRK SBRK 从 AR 中加上 减去一个立即数 MAR 使 AR 值增加 减少 1 或增加 减少一个索引量 例 例 不加也不减的间接寻址指令 ADD 8 将当前 AR 指定的 DM 单元的值向左移 8 位后 加到 ACC 中 例 例 加 1 的间接寻址指令 ADD 8 AR4 将当前 AR 指定的 DM 单元的值向左移 8 位后 加到 ACC 中 当前 AR 加 1 且 AR4 变为下一 AR 7 第第 3 部分部分 汇编指令集汇编指令集 1 ABS 累加器取绝对值累加器取绝对值 语法 ABS 说明 计算 ACC 的绝对值 进位位 C 置 0 指令受 OVM 状态标志位的影响 执行结果影响 C 和 OV 如果 ACC 的内容大于或等于 0 执行指令后其内容不变 若累加器内容小于 0 执行指令后用其对 2 的补码数 即它的绝对值 取代原来 的值 ACC 8000 0000h 时为特殊情况 若 OVM 0 对 8000 0000h 取绝对值 执行 ABS 指令 的结果是 8000 0000h 若 OVM 1 对 8000 0000h 取绝对值的结果是 7FFF FFFFh 无论哪种情况下 状态位 OV 都置 1 例如 例如 ABS OVM 0 8 80 00 00 00 00 00 00 0h hA AC CC C C C 执执行行指指令令前前 0 08 80 00 00 00 00 00 00 0h h 执执行行指指令令后后 C C O OV V 1 1 O OV V 1 12 23 34 4h hA AC CC C C C 执执行行指指令令前前 0 01 12 23 34 4h h 执执行行指指令令后后 C C 0 0F FF FF FF FF FF FF FF Fh hA AC CC C C C 执执行行指指令令前前 0 01 1h h 执执行行指指令令后后 C C 8 2 ADD 累加器加累加器加 ADD 指令执行的操作是将数据存储器单元的数或立即数左移后加至累加器 移位时受 SXM 影响 结果存在累加器中 寻址短立即数时 加操作不受 SXM 的影响 且不能重复执行 不支持移位 语法 ADD dma shift shift 0 16 直接寻址 ADD dma 16 左移 16 位直接寻址 ADD ind shift ARn 间接寻址 ADD ind 16 ARn 左移 16 位间接寻址 ADD k 8 位短立即数短立即数寻址 ADD 1k shift 长立即数寻址 说明 被寻址的数据单元的内容或一个立即数左移后加到累加器 在移位 时低位填 0 如果 SXM 1 则高位进行符号扩展 如果 SXM 0 则高位填 0 如果采用间接寻址并更新 ARP 的值 此时必须指定一个 shift 移 位 操作数 如果不希望产生移位 则将 0 作为操作数 例如 ADD 0 AR2 通常 如果相加的结果产生进位时 C 1 不产生进位时 C 0 但是 当左移 16 位进行相加时 如果相加的结果产生进位 则 C 1 不产生进 位时 则 C 不受影响 这样 在把 32 位数加到累加器时 可使累加器产生正确 的符号进位 1 ADD 1 1 DP 6 地址 0300h 037Fh 2 ADD 0 AR0 3 ADD 1h 加短立即数 4 ADD 1111h 2 长立即数 1111h 左移 2 位 1 1h h 2 2h h 数数据据存存储储器器 3 30 01 1h h A AC CC C C C 执执行行指指令令前前执执行行指指令令后后 0 1 1h h 4 4h h C C 数数据据存存储储器器 3 30 01 1h h A AC CC C 2 2h h 2 2h h 数数据据存存储储器器 3 30 02 2h h A AC CC C C C 执执行行指指令令前前执执行行指指令令后后 0 0 2 2h h 0 04 4h h C C 数数据据存存储储器器 3 30 02 2h h A AC CC C 0 03 30 02 2h h 4 40 0 0 03 30 03 3h h A AR RP P A AR R4 4 A AR RP P A AR R4 4 2 2h h C C A AC CC C 执执行行指指令令前前 0 03 3h h C C 执执行行指指令令后后 A AC CC C 9 后与 ACC 相 加 结存在 ACC 执行前执行前执行后执行后 ACCx2hACC04446h CC 3 ADDC 带进位的累加器加带进位的累加器加 语法 ADDC dma 直接寻址 ADDC ind ARn 间接寻址 说明 将数据存储单元的内容和进位位 C 的值加到累加器中 符号不扩展 进位位受正常方式影响 指令受 OVM 位影响 执行指令的结果影响 C 和 OV 1 ADDC 0 DP 6 地址 0300h 037Fh 2 ADDC AR4 OVM 0 4 ADDS 符号扩展抑制的累加器加符号扩展抑制的累加器加 语法 ADDS dma 直接寻址 1 1 0 04 4h h 1 13 3h h 数数据据存存储储器器 3 30 00 0h h A AC CC C C C 执执行行指指令令前前执执行行指指令令后后 0 0 0 04 4h h 1 18 8h h C C 数数据据存存储储器器 3 30 00 0h h A AC CC C 10 ADDS ind ARn 间接寻址 说明 将被寻址的数据单元中的内容加到累加器 抑制符号扩展 无论 SXM 为何值 数据存储单元中的数据均被看作一个无符号的 16 位数 ADDS 指令 产生的结果与 SXM 0 移位数为 0 的 ADD 指令产生的结果相同 若相加结果产 生进位时 C 1 否则 C 0 1 ADDS 0 DP 6 地址 0300h 037Fh 2 ADDS 5 ADDT TREG 指定移位的累加器加指定移位的累加器加 语法 ADDT dma 直接寻址 ADDT ind ARn 间接寻址 说明 将数据存储单元的内容左移后加到累加器中 左移的位数由 TREG 的低 4 位 0 15 确定 数据存储单元中数据的符号扩展受 SXM 控制 指令受制 指令受 SXM和 OVM 位影响 执行结果影响 C 和 OV 1 ADDT 127 DP 4 地址 0200h 027Fh SXM 0 11 2 ADDT AR4 SXM 0 6 ADRK 辅助寄存器加短立即数辅助寄存器加短立即数 语法 ADRK k 短立即数寻址 说明 8 位正整数按右对齐方式加到当前辅助寄存器中 当前辅助寄存器 由 ARP 指定 对辅助寄存器的所有运算都是无符号数运算 例子 例子 ADRK 80h 7 AND 和累加器进行与操作和累加器进行与操作 语法 AND dma 直接寻址 AND ind ARn 间接寻址 AND 1k shift 长立即数寻址 AND 1k 16 左移 16 位的长立即数寻址 说明 如果是直接或间接寻址 数据存储单元中的数和累加器的低 16 位 进行与运算 结构放在累加器的低 16 位 累加器的高 16 位清 0 如果是立即 数寻址 长立即数可以被左移 没有被移位数填满的高位和低位均填 0 移位 结果与累加器的内容逻辑与 指令不受 SXM 位影响 例例 1 1 AND 00FFh 4 12 例例 2 2 AND 16 DP 4 地址 0200h 027Fh 例例 3 3 AND 8 APAC PREG 加到累加器加到累加器 语法 APAC 说明 PREG 寄存器的内容移位后加到累加器 移位的位数由状态寄存器 ST1 中的 PM 位确定 指令不受 SXM 位影响 PREG 总是进行符号扩展 指令受 PM 和 OVM 位影响 结果影响 C 和 OV 例例 3 31 3 31 APAC PM 01 9 B 无条件跳转无条件跳转 语法 B pma ind ARn 间接寻址 说明 程序跳转到 pma 指定的地址 并根据指令修改当前辅助寄存器 AR 和 ARP pma 值既可以是一个符号 也可是一个数字地址 13 例例 3 32 3 32 B 191 AR1 将 191 加载到程序计数器 并且程序从该地址继续执行 当前辅 助寄存器加 1 并且 ARP 被设置为指向辅助寄存器 1 AR1 10 BACC 跳转到累加器指定的地址跳转到累加器指定的地址 语法 BACC 说明 程序跳转到累加器低 16 位所指定的地址 例例 3 33 3 33 BACC ACC 低 16 位为 191 将数值 191 加到程序计数器 并且程序从该地址继续执行 11 BANZ 辅助寄存器非辅助寄存器非 0 跳转跳转 语法 BANZ pma ind ARn 间接寻址 说明 如果当前辅助寄存器的值 AR 不为 0 则程序跳转到 pma 指定的地 址 否则执行下一条指令 根据指令修改当前辅助寄存器 AR 和 ARP 缺省时 当前辅助寄存器减 1 该指令常用于控制循环体的执行 如果要使循环体执行 N 次 则可在循环体执行前将用于计数的辅助寄存器初始化为 N 1 pma 值既可 以是一个符号 也可以是一个数字地址 例例 3 34 3 34 BANZ PGM0 PGM0 为标号 因为 AR0 的内容不为 0 则 PGM0 给定的地址加载到程序计数器 PC 程序从该处运行 对当前 AR 减 1 变为 4h 因为 AR0 的内容为 0 所以不跳转 而是将 PC 加 2 即继续执行 BANZ 后面的指令 当前 AR 减 1 变为 FFFFh 例例 3 353 35 编制一个循环体程序 将数据存储单元 0060h 0063h 的内容 加到累加器中 MAR AR0 设置 ARP 指向 AR0 LAR AR1 3 加载 3 到 AR1 LAR AR0 60h 加载 60h 到 AR0 PGM191 ADD AR1 将 AR0 指向的地址中数据加到 ACC 14 并且 AR0 值加 1 ARP 指向 AR1 BANZ PGM191 AR0 AR1 不为 0 时循环 AR1 值减 1 ARP 指向 AR0 12 BCND 条件跳转条件跳转 语法 BCND pma cond1 cond2 说明 如果指定的条件都满足 则程序跳转到 pma 指定的地址 若条件不 满足 则执行下一条指令 BIO BIO 无条件无条件无条件无条件UNC进进位位被清位位被清0C 0NC 测试测试 控制控制标标志位被置志位被置1TC 1TC累加器的累加器的值值大于或等于大于或等于 0 ACC 0GEQ 测试测试 控制控制标标志位被清志位被清0TC 0NTC累加器的累加器的值值大于大于0ACC 0GT 引脚引脚为为低低电电平平BIO为为0累加器的累加器的值值小于或等于小于或等于 0 ACC 0LEQ 溢出溢出标标志位置志位置1OV 1OV累加器的累加器的值值小于小于0ACC 0LT 溢出溢出标标志位清志位清0OV 0NOV累加器的累加器的值值不等于不等于0ACC 0NEQ 进进位位被置位位被置1C 1C累加器的累加器的值值等于等于0ACC 0EQ 说说 明明条件条件 操作数操作数 符号符号 说说 明明条件条件 操作数操作数 符号符号 例例 3 36 3 36 BCND PGM191 LEQ C 如果累加器的内容小于或等于 0 且进位位为 1 则程序跳转到 PGM191 指 定的地址 若条件不满足 则程序从 PC 2 处继续执行 13 BIT 位测试位测试 语法 BIT dma bit code 直接寻址 BIT ind bit code ARn 间接寻址 说明 将数据存储单元中数的被指定位复制到状态寄存器 ST1 的 TC 位 指定的位号为 15 bit code 结果影响状态标志位 TC 例例 3 37 3 37 BIT 0h 15 DP 6 测试 300h 中数值的最低位 例例 3 383 38 BIT 0 AR1 测试 310h 中数值的最高位 然后设置 ARP 1 15 14 BITT TREG 指定位测试指定位测试 语法 BITT dma 直接寻址 BITT ind ARn 间接寻址 说明 将数据存储单元中数的被指定位复制到状态寄存器 ST1 的 TC 位 指定的位号为 15 TREG 3 0 即 15 减去 TREG 寄存器的低 4 位值 结果影响 状态标志位 TC 例例 3 39 3 39 BITT 00h DP 6 测试数据的第 14 位 例例 3 40 3 40 BITT 测试 310h 地址处数据的第 1 位 16 15 BLDD 数据存储器间的块传送数据存储器间的块传送 把指定的数据存储单元源地址中的字 copy 到指定的数据存储单元目的地 址中 源地址和目的地址可由长立即数地址或数据存储器地址指定 语法 BLDD lk dma BLDD lk ind ARn BLDD dma lk BLDD ind lk ARn 如果源地址为长立即数 则目的地址只能为直接或间接寻址方式 如果源 地址为直接或间接寻址方式 则目的地址只能为长立即数 该指令不能用于存储器映射的寄存器 使用 RPT 指令重复 BLDD 操作期间中断被禁止 当 BLDD 指令重复使用时 由长立即数指定的源 目的 地址被保存在 PC 中 每次重复过程 PC 增 1 因此可以访问一串源 目的 地址 若使用间接寻址 方式指定目的 源 地址 则每次重复时访问一个新目的 源 地址 若使用直接 寻址方式 所指定的源 目的 地址不变 每次重复时不能修改 1 BLDD 300h 20h DP 6 0300h 037Fh 将数据存储单元 0300h 的内 容 复制到数据存储单元 0320h 执执行前行前执执行后行后 数据存数据存储储器器 0300h0h数据存数据存储储器器0300h0h 0320h0Fh0320h0h 2 BLDD 321h AR3 执执行前行前执执行后行后 ARP2ARP3 AR2301hAR2302h 数据存数据存储储器器 0301h01h数据存数据存储储器器0301h01h 0321h0Fh0321h01h 16 BLPD 程序区到数据区的块移动程序区到数据区的块移动 语法 17 说明 长立即数指明源地址 第 2 个数指定目的地址 例如 例如 17 CALA 累加器指定地址的子程序调用累加器指定地址的子程序调用 语法 CALA 说明 当前程序计数器 PC 加 1 后压入堆栈顶 TOS 然后将累加器的低 16 位加载到 PC 程序从该地址执行 18 例例 3 45 3 45 CALA 18 CALL 无条件调用无条件调用 语法 CALL pma ind ARn 带长立即数源的间接寻址 说明 当前程序计数器 PC 加 2 后压入堆栈顶 TOS 然后将 pma 值加载 到 PC 程序从该处执行 并按指定的方式修改当前 AR 和 ARP 19 CC 条件调用条件调用 语法 CC pma cond1 cond2 说明 如果指定的条件都得到满足 则将返回地址压入堆栈顶 把 pma 值 加载到 PC 实现程序调用 若条件不满足 则 PC 加 2 例例 3 47 3 47 CC PGM191 LEQ C PGM191 为 0BFh 191 的标号 若累加器的内容小于或等于 0 且进位位 C 为 1 则将 0BFh 191 装入 PC 程序从该处执行 若这些条件不同时满足 则从 CC 指令后的指令继续执行 20 CLRC 控制位清控制位清 0 语法 CLRC 控制位 19 说明 将指定的控制位清 0 控制位包括 C CNF INTM OVM SXM TC XF 21 CMPL 累加器逻辑取反累加器逻辑取反 语法 CMPL 说明 将累加器逻辑取反 进位位不受影响 例例 3 493 49 CMPL 22 CMPR 辅助寄存器与辅助寄存器与 AR0 比较比较 语法 CMPR CM 说明 根据 CM 值指定的比较条件 比较当前辅助寄存器和 AR0 值的大小 比较结果存入状态寄存器 ST1 的 TC 位 如果比较条件成立 TC 1 否则 TC 0 比较时辅助寄存器的值以无符号操作数形式参与 CM 说 明 0 测试当前 AR 是否等于 AR0 1 测试当前 AR 是否小于 AR0 2 测试当前 AR 是否大于 AR0 3 测试当前 AR 是否不等于 AR0 例例 3 50 3 50 CMPR 2 当前 AR 值大于 AR0 否 20 23 DMOV 数据移动数据移动 语法 说明 将指定的数据存储器单元的内容复制到下一个数据存储单元中 原 单元的内容不变 例如 例如 21 24 IDLE 等待中断等待中断 语法 IDLE 说明 强迫程序执行等待操作直到 CPU 接收到没有屏蔽的硬件中断 NMI 中断或者复位操作 25 IN 从端口读入数据从端口读入数据 该指令从一个 I O 单元读一个 16 位数到指定的数据存储器单元 IS 引脚 变为低电平 表示进行 I O 访问 STRB RD 和 READY 时序与读外部存储器一样 语法 IN dma PA PA 16 位 I O 地址 IN ind PA ARn 举例 举例 1 IN 7 1000h DP 6 从地址为 1000h 的外设读数 并将数据存 于数据存储器单元 0307h 中 2 IN 5h 从口地址为 0005h 的外设读数据 并将数据存至 当前 AR 所指的数据存储器单元中 26 INTR 软件中断软件中断 语法 INTR K 说明 软中断指令 K 0 31 例如 注意 IMR 和 INTM 取值都不影响 INTR 指令 该指令影响 INTM 位 27 LACC 带移位的累加器装载带移位的累加器装载 语法 LACC dma shift 直接寻址 LACC dma 16 左移 16 位直接寻址 LACC ind shift ARn 间接寻址 LACC ind 16 ARn 左移 16 位间接寻址 LACC 1k shift 长立即数寻址 说明 指定的数据存储单元的内容或一个 16 位常数左移并加载到累加器 中 左移位时低位填 0 指令受 SXM 影响 若 SXM 1 高位进行符号扩展 若 22 SXM 0 高位填 0 例例 3 57 3 57 LACC 6 4 DP 8 地址 0400h 047Fh SXM 0 例例 3 58 3 58 LACC 4 SXM 0 例例 3 59 3 59 LACC 0F000h 1 SXM 1 28 LACL 装载累加器低装载累加器低 16 位 高位 高 16 位清位清 0 语法 LACL dma 直接寻址 LACL ind ARn 间接寻址 LACL k 短立即数寻址 说明 指定数据存储单元的内容或一个短立即数加载到累加器的低 16 位 累加器的高位填 0 加载的数据被看作是一个无符号数 无论 SXM 为何值 都 不进行符号扩展 加载数为 8 位短立即数时 高 8 位为 0 因此 装载到 ACC 后 ACC 的高 24 位为 0 例例 3 60 3 60 LACL 1 DP 6 地址 0300h 037Fh 23 例例 3 61 3 61 LACL AR4 例例 3 62 3 62 LACL 10h 29 LACT 由由 TREG 指定左移位数的累加器装载指定左移位数的累加器装载 语法 LACT dma 直接寻址 LACT ind ARn 间接寻址 说明 指定的数据存储单元的内容左移后加载到累加器 左移的次数由 TREG 的低 4 位确定 所以可移动 0 15 位 左移时 低位填 0 指令受 SXM 影 响 若 SXM 1 则累加器高位进行符号扩展 若 SXM 0 则高位填 0 例例 3 63 3 63 LACT 1 DP 6 地址 0300h 037Fh SXM 0 例例 3 64 3 64 LACT AR3 SXM 1 24 30 LAR 辅助寄存器装载辅助寄存器装载 语法 LAR ARx dma 直接寻址 LAR ARx ind ARn 间接寻址 LAR ARx k 短立即数寻址 LAR ARx 1k 长立即数寻址 说明 指定的数据存储单元的内容或 8 16 位立即数加载到指定的辅助寄 存器 ARx 装载时 数据看作无符号数 不受 SXM 的影响 例例 3 653 65 LAR AR0 16 DP 6 地址 0300h 037Fh 例例 3 66 3 66 LAR AR4 例例 3 67 3 67 LAR AR4 01h 25 例例 3 683 68 LAR AR6 3FFFh 31 LDP 数据页指针装载数据页指针装载 语法 LDP dma 直接寻址 LDP ind ARn 间接寻址 LDP k 短立即数寻址 说明 指定数据单元内容的低 9 位或一个 9 位立即数加载到状态寄存器 ST0 中的 DP 位 DP 也可由 LST 指令加载 DP 用于直接寻址 9 位的 DP 和 7 位 的 dma 连接起来形成指令访问的数据存储单元的地址 例例 3 69 3 69 LDP 127 DP 511 地址 FF80h FFFFh 例例 3 70 3 70 LDP 0h 例例 3 71 3 71 LDP AR5 26 32 LPH 乘积寄存器高位装载乘积寄存器高位装载 语法 说明 指定的数据存储单元的内容装载到 PREG 寄存器的高 16 位 PREG 的 低 16 位保存不变 33 LST 状态寄存器装载状态寄存器装载 语法 LST m dma 直接寻址 LST m ind ARn 间接寻址 说明 指定数据存储单元的内容装载到指定的状态寄存器 ST0 或 ST1 当 m 0 时 装载 ST0 当 m 1 时 装载 ST1 指令影响 ARB ARP OV OVM DP CNF TC SXM C XF 和 PM 状态位 但不影响 INTM 位 使用该指令时需注意以下事项 1 LST 0 操作不影响 ST1 中的 ARB 即使加载一个新的 ARP 2 LST 1 操作时 装入到 ARB 的值也同时装入到 ST0 中的 ARP 3 在间接寻址方式时 如果下一个 AR 值被指定为一个操作数 该操作数 被忽略 ARP 用指定数据存储单元中内容的高 3 位加载 例例 3 743 74 LST 0 60h DP 0 27 例例 3 75 3 75 LST 0 AR1 34 LT TREG 寄存器装载寄存器装载 语法 LT dma 直接寻址 LT ind ARn 间接寻址 说明 指定数据存储单元的内容加载到 TREG 中 在乘法运算时 可用 LT 指令加载 TREG 例例 3 76 3 76 LT 24 DP 8 地址 0400h 047Fh 例例 3 77 3 77 LT AR3 28 35 LTA TREG 寄存器装载并累加前一次乘积寄存器装载并累加前一次乘积 语法 说明 指定的数据存储单元的内容装载到 TREG 乘积寄存器中的值根据 PM 状态移位后加到累加器 ACC 结果存在 ACC 中 指令受 PM 何 OVM 影响 结构 影响 C 和 OV 例如 例如 36 装载装载 TREG 寄存器指令寄存器指令 LTD 该指令将指定数据存储单元的内容加载到 TREG 然后按照 PM 状态位 指定的方式对乘积寄存器的内容进行移位 再与 ACC 的内容相加 结果存放在 ACC 中 指定数据存储单元的内容复制到地址加 1 的数据存储单元 29 语法 LTD dma LTD ind ARn 注意 若将该指令用于外部数据存储器 其作用同 LTA 指令 即累加先前 的乘积 并从外部数据存储器加载 TREG 但不作数据移动 举例 举例 1 LTD 126 DP 7 0380h 03FFh PM 0 乘积不移位 执执行前行前执执行后行后 数据存数据存储储器器 3FEh 62h数据存数据存储储器器3FEh62h 3FFh 0h3FFh62h TREG3hTREG62h PREG0FhPREG0Fh ACCx5hACC014h CC 37 LTP TREG 寄存器装载并将乘积寄存器内容存入累寄存器装载并将乘积寄存器内容存入累 加器加器 ACC 中 中 语法 30 说明 指定的数据存储单元的内容装载到 TREG 乘积寄存器的值根据 PM 状态移位后存入 ACC 中 38 LTS TREG 寄存器装载 累加器减去前一次乘积寄存器装载 累加器减去前一次乘积 语法 说明 指定的数据存储单元的内容装载到 TREG 寄存器 乘积寄存器中的 值根据 PM 状态移位后被累加器 ACC 减 用法同 LTA 指令 39 MAC 乘累加乘累加 语法 说明 该指令实现乘累加运算 指令 pma 是程序存储器的地址 具体功能 如下 ACC 与乘积寄存器内容移位后的值相加 移位由 PM 控制 结果存入 ACC 中 指定的数据存储单元的内容装载到 TREG TREG 寄存器与指定的程序存储单元内容相乘 指令中的程序和数据存储单元可以是片内或片外 如果程序区为片内的 B0 块 注意必须将 CNF 位置为 1 例如 例如 31 40 MACD 乘累加并数据移动乘累加并数据移动 语法 说明 该指令除了实现 MAC 的功能外 增加了片内数据移动功能 即将指 定的数据存储单元的内容复制到下一个高地址单元 即 DMOV 的功能 需要注 意的是 数据移动功能仅对片内 RAM 起作用 例如 41 MAR 修改辅助寄存器修改辅助寄存器 语法 MAR dma 直接寻址 MAR ind ARn 间接寻址 32 说明 在直接寻址方式下 MAR 指令的作用等同 NOP 指令 在间接寻址方 式下 指令可修改辅助寄存器的值和 ARP 的值 当 MAR 修改 ARP 时 原来的 ARP 值复制到 ST1 的 ARB 中 例例 3 90 3 90 MAR AR1 加载 1 到 ARP 例例 3 91 3 91 MAR AR5 42 MPY 乘乘 语法 MPY dma 直接寻址 MPY ind ARn 间接寻址 MPY k 短立即数寻址 说明 在直接或间接寻址时 TREG 寄存器与指定的数据存储单元的内容相 乘 结果存入 PREG 中 在使用短立即数寻址时 TREG 的内容乘以有符号的 13 位常数 结果存入 PREG 中 这里的 13 位常数是右对齐的 且无论 SXM 为何值 该常数都将进行符号扩展 例例 3 92 3 92 MPY 13 DP 8 地址 0400h 047Fh 例例 3 94 3 94 MPY 031h 33 例例 3 93 3 93 MPY AR2 43 MPYA 乘并累加前一次乘积乘并累加前一次乘积 语法 说明 首先 ACC 与 PREG 内容移位后的值相加 移位由 PM 控制 结果存 入 ACC 中 然后 TREG 与指定的数据存储单元的内容相乘 乘积存入 PREG 44 MPYS 乘并减去前一次乘积乘并减去前一次乘积 语法和用法与 MPYA 相似 只是把加变为减 例 34 45 MPYU 乘无符号数乘无符号数 语法 MPYU dma 直接寻址 MPYU ind ARn 间接寻址 说明 TREG 中的无符号数与指定的数据存储单元中的无符号数相乘 结果 存入 PREG 指令受 PM 和 OVM 影响 指令执行结果影响 C 和 OV 语法与其他 PMY 指令相似 只是操作数都当作是无符号数 例例 3 103 3 103 MPYU 16 DP 4 地址 0200h 027Fh 例例 3 104 3 104 MPYU AR6 46 NEG 累加器取补码累加器取补码 语法 NEG 说明 计算 ACC 的二进制补码即变反加 1 结果存回 ACC 中 例如 35 47 NMI 非屏蔽中断非屏蔽中断 语法 NMI 说明 执行该指令时 首先将 PC 1 压入堆栈 然后将程序计数器强制置 为不可屏蔽中断向量地址 24h 该指令与硬件不可屏蔽中断 NMI 的效果相同 指令不受 INTM 的影响 执行后置 INTM 1 48 NOP 空操作空操作 语法 NOP 说明 该指令除了执行 PC 值加 1 外不执行任何操作 在建立流水线和执 行延时情况下 该指令很有用 49 NORM 累加器内容归一化累加器内容归一化 语法 说明 该指令用于对 ACC 中有符号数归一化 通过寻找符号扩展数的最高 位 并将数分为尾数和指数两部分来对定点数进行归一化 对 ACC 的第 31 位 最高位 和第 30 位进行异或 来确定第 30 位是数的一部分还是扩展符号的 一部分 如果两者相同 说明两者都是符号位 对 ACC 左移一位 以去

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论