3986.net
小网站 大容量 大智慧
赞助商链接
当前位置:首页 >> 信息与通信 >>

《DSP原理与应用》寻址方式和指令系统


原理与应用》 《DSP 原理与应用》寻址方式和指令系统
三、TMS320LF240x 寻址方式和指令系统
3.1 寻址方式 TMS320LF240x 指令集采用 3 种基本的存储器寻址方式:立即寻址方式、直接寻址方式和间接寻址 方式。 在立即寻址方式中,指令中所需要的常数作为指令的操作数直接给出。立即寻址方式包括短立即寻 址和长立即寻址。 在短立即寻址中,指令字包含一个 8 位、9 位或 13 位的操作数,而长立即寻址采用 16 位的操作数。 当需要访问数据存储器时,用户可采用直接或间接寻址方式。 直接寻址方式将指令字的 7 位与数据存储器页指针(DP)的 9 位连接起来,形成 16 位数据存储器 地址。 间接寻址通过 8 个 16 位辅助寄存器访问数据存储器。 3.1.1 立即寻址方式 立即寻址方式 在立即寻址方式中,指令字中包含指令所需的一个常数。对于短立即寻址,采用短立即寻址的指令 将一个 8 位、9 位或 13 位的常数作为操作数。短立即寻址指令为一个单指令字,并且有一个常数嵌在该 指令中。长立即寻址的指令将一个 16 位常数作为操作数,从而需要两条指令字。该常数作为第 2 条指 令字被发送,该 16 位值可以是绝对常数或二进制补码。 如 1:RPT #49 ;将紧跟 RPT 指令后的那条指令执行 50 次。 代码是:10111011 00110001 ;前面是 RPT 指令代码,后面是 8 位常数=49。 如 2:ADD #65534,2 ;将数据 65534 左移两位后,再将结果加到累加器。 代码是:101111111001 0010 ;前面 12 位是立即寻址的 ADD 代码,后面是移位数。 11111111 11111110 ;是 16 位常数=65534=FFFEh。 3.1.2 直接寻址方式 直接寻址方式 在直接寻址方式中,数据存储器地址以 128 为单位被分成若干块,这些块被称为数据页。64K 的数 据存储器总共包含 512 个数据页,标号为 0~511,如下表 3-1 所列。当前数据页由状态寄存器 ST0 中的 9 位数据页指针(DP)值决定。 除数据页之外,处理器还必须知道该页上被访问的特定单元,这取决于 7 位偏移量,见表 3-1。偏 移量由指令寄存器的 7 位最低有效位提供,指令寄存器中包含将被执行的下一条指令。在直接寻址方式 中,指令寄存器的内容为: 位 15~8 用于指示指令类型(例如 ADD)和指令所访问的数据值的移位信息。 位7 直接/间接指示符。0 表示直接寻址,1 表示间接寻址。 位 6~0 指示该指令所访问的数据存储器地址的偏移量。 为了得到一个 16 位地址,处理器将页指针 DP 值和指令寄存器中的 7 位最低有效位连接起来,即页 指针 DP 提供地址的 9 位高有效位,即页码数;指令寄存器中的 7 位最低有效位提供地址的 7 位最低有 效位,即偏移量。 例如:为访问数据地址 0050h,用户须指定 DP=0 0000 0000 和偏移量为 101 0000,这样将得到 16 位地址 0000 0000 0101 0000 即 0050h。因此,用户必须注意,在程序中初始化 DP。
表 3-1 数据存储器页

DP 值 0000 00000 0000 00001

偏移量 000 0000 | 111 1111 000 0000 |

数据存储器 第 0 页:0000h~007Fh 第 1 页:0080h~00FFh

0000 00010 | 1111 11111

111 1111 000 0000 | 111 1111 | 000 0000 | 111 1111

第 2 页:0100h~017Fh | 第 511 页:FF80h~FFFFh

1、使用直接寻址方式 、 使用直接寻址方式时,处理器用页指针(DP)来寻找数据页,用指令寄存器的低 7 位有效位来寻址 该页上的特定地址。通常做法是: (1)设置数据页 将合适的值 (0~511) 装入 DP。 可由 LDP 指令装载, DP 也可由向 ST0 装载的任何指令来装载。 LDP 指令直接装载 DP,并且不影响 ST0 的其他位。 如:LDP #32 ;设置当前数据页为 32(1000h~107Fh) 。 (2)指明偏移量 7 位偏移量由指令的操作数提供。例如,如果希望 ADD 指令取当前数据页的第 5 个地址处的数据, 则应使用如下指令: ;将当前数据页中偏移量为 5h 处的数据加到累加器。 ADD 5h 采用直接寻址时,不必每条指令前都要设置数据页。如果一段代码的所有直接寻址指令都访问同一 个数据页,则只需在该段代码的最前面装载一次 DP 值。总之,必须保证在访问新数据页之前改变 DP。 2、直接寻址示例 、直接寻址示例 例 1、采用直接寻址的 ADD 指令(移位 0~15 位) ;数据页设为 4(0200h~027Fh) LDP #4 ADD 9h,5 ;将数据地址 0209h 处的内容左移 5 位后加到累加器。 例 2、采用直接寻址的 ADDC 指令 ;数据页设为 500(FA00h~FA7Fh) LDP #500 ADDC 8h ;数据地址 FA08h 处的内容和进位值(C)被加到累加器。 3.1.3 间接寻址方式 间接寻址方式 8 个辅助寄存器(AR0~AR7)为处理器提供了强大而灵活的寻址能力,提供间接寻址的 16 位地址, 可以访问 64K 数据存储器空间的任意单元。 1、当前辅助寄存器 、 通过向状态寄存器 ST0 中的 3 位辅助寄存器指针 (ARP) 装入 0~7, 可选择特定的辅助寄存器。 ARP 可由 MAR 指令、LST 指令或任何支持间接寻址的指令来装载。辅助寄存器指针 ARP 所指的寄存器作为 当前辅助寄存器 (或简称为当前 AR) 执行指令过程中, 。 当前 AR 的内容用做被访问的数据存储器地址。 2、间接寻址选项 、 TMS320LF240x 提供 4 种间接寻址选项:不增不减、增 1 或减 1、增加或减去索引量、增加或减去 索引量且反向进位。表 3-2 给出了与每种选项相应的指令操作数及其示例。
表 3-2 间接寻址选项及操作数示例 选 项 操作数 * *+ *LACC * LACC *+ 示 例 ;用当前 AR 所指的数据存储器地址中内容装载累加器 ;用当前 AR 所指的数据存储器地址中内容装载累加器, ;然后当前 AR 内容加 1

不增不减 增1 减1

LACC *- ;用当前 AR 所指的数据存储器地址中内容装载累加器 ;然后当前 AR 内容减 1

加上索引量

*0+ *0-

LACC *0+ ;用当前 AR 所指的数据存储器地址中内容装载累加器 ;然后当前 AR 内容加上 AR0 的内容 LACC *0- ;用当前 AR 所指的数据存储器地址中内容装载累加器 ;然后当前 AR 内容减去 AR0 的内容 LACC * BRO+ ;用当前 AR 所指的数据存储器地址中内容装载累加器 ;然后当前 AR 内容加上 AR0 的内容,该加法采用反向进位传送 LACC * BRO- ;用当前 AR 所指的数据存储器地址中内容装载累加器 ;然后当前 AR 内容减去 AR0 的内容,该减法采用反向进位传送

减去索引量

加上索引量, *BRO+ 反向进位 减去索引量, *BRO反向进位

3、辅助寄存器 、 除了更新当前辅助寄存器的内容以外,某些指令还可以指明下一个辅助寄存器。当本指令执行完之 后,下一个辅助寄存器便成为当前辅助寄存器。 例如:选择一个当前的辅助寄存器 MAR *,AR1 ;将当前辅助寄存器设为 AR1 LACL *+,AR2 ;用辅助寄存器 AR1 所指向的地址中内容装载累加器的低 16 位, ;AR1 内容加 1,使得 AR2 为当前辅助寄存器 SACL *+ ;将累加器的低 16 位存于 AR2 所指的地址单元,AR2 内容加 1 4、间接寻址操作码格式 、 在间接寻址中,指令寄存器的内容为: 位 15~8 用于指示指令类型(例如 ADD)和指令所访问的数据值的移位信息 位7 直接/间接指示符。0 表示直接寻址,1 表示间接寻址。 位 6~4 辅助寄存器更新代码 ARU。该 3 位决定当前辅助寄存器是否以及如何进行 增或减。 位3 下一辅助寄存器指示符 N。该位说明该指令是否改变辅助寄存器指针 ARP 的值。N=0,辅助寄存器指针 ARP 内容保持不变;N=1,下一个辅助寄存 器 ARN 的内容被装入辅助寄存器指针 ARP。 位 2~0 下一个辅助寄存器的值。该 3 位包括下一辅助寄存器的值。若 N=1,则 ARN 被装入 ARP。 5、间接寻址示例 、 例 1、不增不减 ADD *,8 ;把当前辅助寄存器所指向的数据存储器地址的内容左移 8 位之后 ;加到累加器 例 2、减 1 ADD *-,8 ;把当前辅助寄存器所指向的数据存储器地址的内容左移 8 位之后 ;加到累加器,然后将当前辅助寄存器内容减 1 6、修改辅助寄存器内容 、 用于修改辅助寄存器内容的特定指令有:LAR、ADRK、SBRK 和 MAR。 LAR 指令装载 AR; ADRK 和 SBRK 分别用来从 AR 中加上或减去一个立即数; MAR 指令可使 AR 值增加/减少 1 或增加/减少一个索引量。 另外,任何支持间接寻址操作数的指令都可修改辅助寄存器。 3.2 指令集 TMS320LF240x 的指令系统可以分成累加器、算数和逻辑指令;辅助寄存器和数据页指针指令; TREG、PREG 和乘法指令;转移指令;控制指令;存储器指令类型。 1、累加器、算数和逻辑指令 、累加器、 ABS 该指令操作码是:1011 1110 0000 0000,无操作数。

执行:PC+1→PC;|(ACC)|→ACC;0→C 影响状态位:受 OVM 影响;不受 SXM;影响 C 和 OV。 例 1、ABS
执行前 ACC C 1234H ACC 0 C 执行后 ACC 0 C 1H 执行后 1234H

例 2、ABS
执行前 ACC C 0FFFFFFFFH

例 3、ABS ;(OVM=1)
执行前 ACC C 80000000H ACC 0 C 1 OV 执行后 7FFFFFFFH

OV

例 4、ABS ;(OVM=0)
执行前 ACC C 80000000H ACC 0 C 1 OV 执行后 80000000H

OV

ADD 操作码: 操作码 ADD dma[,shift] 直接寻址。

15 0 0 1

11 0 shift

7 6 0

0 dma

15 11 ADD dma,16 左移 16 位,直接寻址。 0 1 1 0 0 0 0 1

7 6 0

0 dma

ADD ind[,shift[,ARn]] 间接寻址。

15 0 0 1 15

11 0 11 0 shift

0 4 3 2 7 6 NAR ARU N 1 0 4 3 2 7 6 NAR ARU N 1

ADD ind,16[,ARn]] 0 1 1 0 左移 16 位,间接寻址。

0 0

1

ARU:辅助寄存器更新码,当前辅助寄存器是否和如何更新值; N:下一个辅助寄存器指示,表明是否是指令改变 ARP 的值; NAR:下一个辅助寄存器值,如果 N=1,则装载到 ARP。 ADD #k 短立即数寻址。 ADD #lk [,shift] 长立即数寻址。
15 1 0 1 15 1 0 1 1 11 1 11 1 7 0 0 0 7 1 lk k 4 3 1 0 shift 0

1

1 1

1

0 0

执行:PC+1→PC; 执行 Event: (ACC) + ((data-memory address) ×2shift ) →ACC (ACC) + ((data-memory address) ×216 ) →ACC (ACC) + k→ACC (ACC) + lk ×2shift 影响状态位: 影响状态位 Affected by: SXM and OVM OVM SXM and OVM 例 1、ADD 1,1
0301H ACC C

→ACC Affects: C and OV C and OV C and OV Addressing mode: Direct or indirect Short immediate Long immediate

Addressing mode: Direct or indirect Direct or indirect (shift of 16) Short immediate Long immediate

;(DP=6:0300h~037Fh)
执行前 01H 02H 0301H ACC 0 C 执行后 01H 04H

例 2、ADD *+,0,AR0
执行前 ARP AR4 0302H ACC C 04H 0302H 02H 02H ARP AR4 0302H ACC 0 C 执行后 00H 0303H 02H 04H

例 3、ADD #1h

;加短立即数
执行前 执行后 02H ACC 0 C 03H

ACC C

例 4、ADD #1111h,1

;加长立即数并左移 1 位
执行后 02H ACC 0 C 2224H

执行前 ACC C

ADDC 操作码: 操作码 ADDC dma 直接寻址。 ADDC ind [,ARn]] 间接寻址。

15 0 1 1

0

11 0

0 0

0

7 6 0

0 dma

15 0 1 1

0

11 0

0 0

0

0 4 3 2 7 6 NAR ARU N 1

执行:PC+1→PC;(ACC) + (data-memory address) + (C) →ACC 执行

影响状态位: 影响状态位 Affected by: Affects: OVM C and OV This instruction is not affected by SXM. 例 1、ADDC
0300H ACC 1 C

DAT300

;(DP=6:0300h~037Fh) ,DAT300 是 300h 的标号
执行前 04H 13H 0300H ACC 0 C 执行后 04H 18H

例 2、ADDC *-,AR4
ARP AR0 0300H ACC 1 C OV

;(OVM=0)
执行前 0H 0300H 00H 0FFFFFFFFH ARP AR0 0300H ACC 1 C 0 OV 执行后 4H 02FFH 00H 00H

ADDS ADDS dma 直接寻址。 ADDS ind [,ARn]]

15 0 1 1

0

11 0

0 1

0

7 6 0

0 dma

15 0 1 1

0

11 0

0 1

0

0 4 3 2 7 6 NAR ARU N 1

间接寻址。 执行:PC+1→PC;(ACC) + (data-memory address)→ACC 执行 影响状态位: 影响状态位 Affected by: Affects: OVM C and OV This instruction is not affected by SXM. 例 1、ADDS
0300H ACC C

0

;(DP=6:0300h~037Fh)
执行前 0F006H 00000003H 0300H ACC 0 C 执行后 0F006H 0000F009H

例 2、ADDS
ARP AR0

*-,AR2
执行前 0H 0300H ARP AR0 执行后 2H 02FFH

0300H ACC C

0FFFFH 7FFF0000H

0300H ACC 0 C

0FFFFH 7FFFFFFFH

ADDT ADDT dma 直接寻址。 ADDT ind [,ARn]]

15 0 1 1

0

11 0

0 1

1

7 6 0

0 dma

15 0 1 1

0

11 0

0 1

1

0 4 3 2 7 6 NAR ARU N 1

间接寻址。 执行:PC+1→PC;(ACC) + [(data-memory address)×2(TREG(3:0))] →(ACC) 执行 影响状态位: 影响状态位 Affected by: SXM and OVM 例 1、ADDT 127
027FH TREG ACC C C

Affects: C and OV ;(DP=4:0200h~027Fh) ,SXM=0
执行前 09H 0FF94H 0F715H 027FH TREG ACC 0 C 执行后 09H 0FF94H 0F7A5H

例 2、ADDT *-,AR4
ARP AR0 027FH TREG ACC C C

;(SXM=0)
执行后 0H 027FH 09H 0FF94H 0F715H ARP AR0 027FH TREG ACC 0 C 4H 027EH 09H 0FF94H 0F7A5H

执行前

AND 操作码: 操作码 AND dma 直接寻址。 AND ind[,ARn] 间接寻址。 AND #lk[,shift] 长立即数寻址。

15 0 1 1 15 0 1 1 15 1 0 1

0

11 1 11 1 11 1

1 1

0

7 6 0

4 3 2 dma

0

0

1 1

0

0 4 3 2 7 6 NAR ARU N 1 7 1 lk 4 3 1 0 shift

1

1 1

1

0 1

AND #lk,16 1 0 1 1 16 位移位的长立即数寻址。

15

11 1

1 1

0 lk

7 1

0 0

4 3 0 0

0 0 0 1

执行:PC+1→PC; 执行 Event(s): Addressing mode: Direct or indirect (ACC(15:0)) AND (data-memory address)→ACC(15:0) 0→ACC(31:16) (ACC(31:0)) AND lk×2shift →ACC Long immediate 16 (ACC(31:0)) AND lk×2 →ACC Long immediate with left shift of 16

影响状态位: 影响状态位 None This instruction is not affected by SXM. 例 1、AND 16
0210H ACC

;(DP=4:0200h~027Fh)
执行前 00FFH 12345678H 0210H ACC 执行后 00FFH 00000078H

例 2、AND *
执行前 ARP AR0 0301H ACC 0H 0301H 0FF00H 12345678H ARP AR0 0301H ACC 执行后 0H 0301H 0FF00H 00005600H

例 3、AND #00FFh,4
执行前 ACC 12345678H ACC 执行后 00000670H

CMPL 操作码: 操作码 CMPL 执行:PC+1→PC; 执行 影响状态位: 影响状态位 None 例 1、CMPL

15 1 0 1

1

11 1

1 1

0

7 0

0 0

4 3 0 0

0 0 0 1

执行前 ACC C 0F7982513H ACC C

执行后 0867DAECH

LACC 操作码: 操作码 LACC dma[,shift]

15 0 0 0

11 1 shift

7 6 0

0 dma

直接寻址。 LACC dma,16 左移 16 位,直接寻址。
15 0 1 1 11 1 7 6 0 0 dma

0

0 1

0

LACC ind[,shift[,ARn]] 间接寻址。 LACC ind,16[,ARn]] 左移 16 位,间接寻址。 LACC #lk [,shift] 长立即数寻址。

15 0 0 0 15 0 1 1 15 1 0 1

11 1 11 1 11 1 shift

0 4 3 2 7 6 NAR ARU N 1 0 4 3 2 7 6 NAR ARU N 1 7 1 lk 4 3 0 0 shift

0

0 1

0

1

1 1

1

0 0

执行:PC+1→PC; 执行 Event: (data-memory address)×2shift →ACC (data-memory address)×216→ACC lk×2shift →ACC 影响状态位: 影响状态位 Affected by: SXM 例 1、LACC
0406H ACC C

Addressing mode: Direct or indirect Direct or indirect (shift of 16) Long immediate

6,4

;(DP=8:0400h~047Fh) ,SXM=0
执行前 01H 12345678H 0406H ACC C 执行后 01H 10H

例 2、LACC
ARP AR2 0300H ACC

*,4

;(SXM=0)
执行前 2H 0300H 0FFH 12345678H ARP AR2 0300H ACC C 执行后 2H 0300H 0FFH 0FF0H

C

例 3、LACC
ACC

#0F000h,1

;(SXM=1)
执行前 12345678H ACC C 执行后 0FFFFE000H

C

符号位扩展。 LACL 操作码: 操作码 LACL dma 直接寻址。

15 0 1 1

0

11 1

0 0

1

7 6 0

0 dma

LACL ind[,ARn] 间接寻址。 LACL #k 短立即数寻址。

15 0 1 1

0

11 1

0 0

1

0 4 3 2 7 6 NAR ARU N 1

15 1 0 1

1

11 1

7 6 0 0 1 k

0

执行:PC+1→PC; 执行 Events: 0→ACC(31:16) (data-emory address)→ACC(15:0) 0→ACC(31:8) k→ACC(7:0) 影响状态位: 影响状态位 This instruction is not affected by SXM. 例 1、LACL 1
0301H ACC C

Addressing mode: Direct or indirect Short immediate

;(DP=6:0300h~037Fh)
执行前 0H 7FFFFFFFH 0301H ACC C 执行后 0H 0H

例 2、LACL *-,AR4
执行前 ARP AR0 0401H ACC C 0H 0401H 0FFH 7FFFFFFFH ARP AR0 0401H ACC C 执行后 ACC C 10H 执行后 4H 0400H 0FFH 0FFH

例 3、LACL #10h
执行前 ACC C 7FFFFFFFH

LACT 操作码: 操作码 LACT dma 直接寻址。 LACT ind[,shift[,ARn]] 间接寻址。

15 0 1 1 15 0 1 1

0

11 1 11 1

0 1

1

7 6 0

0 dma

0

0 1

1

0 4 3 2 7 6 NAR ARU N 1

执行:PC+1→PC; 执行 (data-emory address)×2(TREG(3:0)) →ACC If SXM = 1: Then (data-memory address) is sign extended. If SXM = 0: Then (data-memory address) is not sign extended.

影响状态位: 影响状态位 Affected by: SXM 例 1、LACT 1
0301H TREG ACC C

;(DP=6:0300h~037Fh) , SXM=0
执行前 1376H 14H 98F7EC83H 0301H TREG ACC C 执行后 1376H 14H 13760H

例 2、LACT *-,AR3
ARP AR1 0310H TREG ACC C

;SXM=1
执行前 1H 310H 0FF00H 11H 98F7EC83H ARP AR0 0310H TREG ACC C 执行后 3H 30FH 0FF00H 11H 0FFFFFE00H

NEG 操作码: 操作码 NEG 执行:PC+1→PC; 执行 (ACC)×-1→ACC 影响状态位: 影响状态位 Affected by: OVM 例 1、NEG

15 1 0 1

1

11 1

1 1

0

7 6 0 0

0 0 0 0 0 1 0

Affects: C and OV ;(OVM=X) , 转换-3544 到+3544
执行前 执行后 ACC 0 C OV 0DD8H

ACC C OV

0FFFFF228H

例 2、NEG

;(OVM=0)
执行前 执行后 ACC 0 C 1 OV OV 80000000H

ACC C

80000000H

例 3、NEG

;(OVM=1)
执行前 执行后 ACC 0 C 7FFFFFFFH

ACC C

80000000H

1 OV OV

NORM 操作码: 操作码 NORM ind

15 1 0 1

0

11 0

0 0

0

0 4 3 2 7 6 NAR ARU N 1

执行:PC+1→PC; 执行 If (ACC) = 0: Then TC→1; Else, if (ACC(31)) XOR (ACC(30)) = 0: Then TC→0, (ACC)×2→ACC Modify (current AR) as specified; Else TC→1. 影响状态位: 影响状态位 Affects: TC 例 1、NORM
ARP AR2 ACC C TC

*+
执行前 2H 00H 0FFFFF001H ARP AR2 ACC C 0 TC 执行后 2H 01H 0FFFE002H

例 2、31-Bit 格式化 MAR *,AR1 LAR AR1,#0h LOOP NORM *+ BCND LOOP,NTC 例 2、15-Bit 格式化 MAR *,AR1 LAR AR1,#0Fh RPT #14

;Use AR1 to store the exponent. ;Clear out exponent counter. ;One bit is normalized. ;If TC = 0, magnitude not found yet.

;Use AR1 to store the exponent. ;Initialize exponent counter. ;15-bit normalization specified (yielding ;a 4-bit exponent and 16-bit mantissa). NORM *;NORM automatically stops shifting when first ;significant magnitude bit is found, ;performing NOPs for the remainder of the ;repeat loops. The method used in Example 2 normalizes a 32-bit number and yields a 5-bit exponent magnitude. The method used in Example 3 normalizes a 16-bit number and yields a 4-bit magnitude. If the number requires only a small amount of normalization, the Example 2 method may be preferable to the Example 3 method because the loop in Example 2 runs only until normalization is complete. Example 3 always executes all 15 cycles of the repeat loop. Specifically, Example 2 is more efficient if the number requires three or fewer shifts. If the number requires six or more shifts, Example 3 is more efficient.

OR 操作码: 操作码 OR dma 直接寻址。 OR ind [,ARn] 间接寻址。 OR #lk [,shift] 长立即数寻址。

15 0 1 1 15 0 1 1 15 1 0 1

0

11 1 11 1 11 1

1 0

1

7 6 0

0 dma

0

1 0

1

0 4 3 2 7 6 NAR ARU N 1 7 1 lk 4 3 0 0 shift

1

1 1

1

1 0

OR #lk [,16] 16 位移位的长立即数寻址。

15 1 0 1

1

11 1

1 1

0 lk

7 1

1 0

4 3 0 0

0 0 1 0

执行:PC+1→PC; 执行 Event(s): (ACC(15:0)) OR (data-memory address) →ACC(15:0) (ACC(31:16))→ACC(31:16) (ACC) OR lk×2shift→ACC (ACC) OR lk×216→ACC

Addressing mode: Direct or indirect Long immediate Long immediate with left shift of 16

影响状态位: 影响状态位 None This instruction is not affected by SXM. 例 1、OR DAT8 ;(DP=8:0400h~047Fh)
执行前 0408h ACC C 0F000H 100002H 0408h ACC C 执行后 0F000H 10F002H

例 2、OR
ARP AR1 0300h ACC

*,AR0
执行前 1H 300H 1111H 222H C ARP AR1 0300h ACC C 执行后 0H 300H 1111H 1333H

例 3、OR
0408h ACC

#8111h,8
执行前 0F000H 100002H C 0408h ACC C 执行后 0F000H 911102H

ROL 操作码: 操作码

15 1 0 1

1

11 1

1 1

0

7 6 0 0

0 0 0 1 1 0 0

ROL 执行:PC+1→PC; 执行 C→ACC(0) (ACC(31))→C (ACC(30:0))→ACC(31:1) 影响状态位: 影响状态位 Affects: C This instruction is not affected by SXM. 例 1、ROL
执行前 ACC 0 C B0001234H ACC 1 C 执行后 60002468H

ROR 操作码: 操作码 ROR

15 1 0 1

1

11 1

1 1

0

7 6 0 0

0 0 0 1 1 0 1

执行:PC+1→PC; 执行 C→ACC(31) (ACC(0))→C (ACC(31:1))→ACC(30:0) 影响状态位: 影响状态位 Affects: C This instruction is not affected by SXM. 例 1、ROR
执行前 ACC 0 C B0001235H ACC 1 C 执行后 5800091AH

SACH 操作码: 操作码 SACH dma[,shift] 直接寻址。 SACH ind[,shift[,ARn]] 间接寻址。
15 1 0 0 15 1 0 0 11 1 11 1 7 6 0 0 dma

1

shift2

1

Shift2

0 4 3 2 7 6 NAR ARU N 1

执行:PC+1→PC; 执行 16 MSBs of ((ACC)×2shift2 )→data-memory address 影响状态位: 影响状态位 This instruction is not affected by SXM 例 1、SACH DAT10,1
ACC 020Ah C

;(DP=4:0200h~027Fh) ,左移 1 位
执行后 ACC 020Ah C 4208001H 8410H 4208001H 0H

执行前

例 2、SACH *+,0,AR2
ARP AR1 ACC 0300h C

;不移位
执行后 1H 300H 4208001H 0H ARP AR1 ACC 0300h C 2H 301H 4208001H 0420H

执行前

SACL 操作码: 操作码 SACL dma[,shift] 直接寻址。 SACL ind[,shift[,ARn]] 间接寻址。

15 1 0 0 15 1 0 0

1

11 0 11 0

shift2

7 6 0

0 dma

1

Shift2

0 4 3 2 7 6 NAR ARU N 1

执行:PC+1→PC; 执行 16 LSBs of ((ACC)×2shift2 )→data-memory address 影响状态位: 影响状态位 This instruction is not affected by SXM 例 1、SACL DAT11,1
ACC 020Bh C

;(DP=4:0200h~027Fh) ,左移 1 位
执行后 ACC 020Bh C 7C63 8421H 0842H 7C63 8421H 05H

执行前

例 2、SACL *,0,AR7
ARP AR6 ACC 0300h C

;不移位
执行前 6H 300H 00FF 8421H 05H ARP AR6 ACC 0300h C 执行后 7H 301H 00FF 8421H 8421H

SFL 操作码: 操作码 SFL

15 1 0 1

1

11 1

1 1

0

7 6 0 0

0 0 0 1 0 0 1

执行:PC+1→PC; 执行 ACC(31) →C ACC(30:0)→(ACC(31:1)) 0→(ACC(0)) 影响状态位: 影响状态位

Affects: C This instruction is not affected by SXM. 例 1、SFL
执行前 ACC C B000 1234H ACC 1 C 执行后 6000 2468H

SFR 操作码: 操作码 SFR

15 1 0 1

1

11 1

1 1

0

7 6 0 0

0 0 0 1 0 1 0

执行:PC+1→PC; 执行 If SXM = 0 Then 0→ACC(31). If SXM = 1 Then (ACC(31)) →ACC(31) (ACC(31:1)) →ACC(30:0) (ACC(0)) →C 影响状态位: 影响状态位 Affected by: SXM 例 1、SFR
ACC C

Affects: C ;(SXM = 0: no sign extension)
执行前 B000 1234H ACC 0 C 执行后 5800 091AH

例 2、SFR
ACC

;(SXM = 1: sign extend)
执行前 B000 1234H C ACC 0 C 执行后 D800 091AH

SUB 操作码: 操作码 SUB dma[,shift] 直接寻址。

15 0 0 1

11 1 shift

7 6 0 7 6 0

0 dma 0 dma

15 11 SUB dma,16 0 1 0 1 0 1 1 0 左移 16 位,直接寻址。

SUB ind[,shift[,ARn]] 间接寻址。

15 0 0 1

11 1 shift

0 4 3 2 7 6 NAR ARU N 1 0 4 3 2 7 6 NAR ARU N 1

15 11 SUB ind,16[,ARn]] 左移 16 位,间接寻址。 0 1 1 0 0 1 0 1

ARU:辅助寄存器更新码,当前辅助寄存器是否和如何更新值; N:下一个辅助寄存器指示,表明是否是指令改变 ARP 的值; NAR:下一个辅助寄存器值,如果 N=1,则装载到 ARP。
15 1 0 1 1 11 1 7 0 1 0 k 0

SUB #k 短立即数寻址。 SUB #lk [,shift] 长立即数寻址。
15 1 0 1 1 11 1 1 1 1 lk 7 1 0 1 4 3 0 0 shift

执行:PC+1→PC; 执行 Event (ACC) - ((data-memory address)×2shift )→ACC (ACC) - ((data-memory address)×216 )→ACC (ACC) - k→ACC (ACC) - lk×2shift→ACC 影响状态位: 影响状态位 Affected by: OVM and SXM OVM OVM and SXM 例 1、SUB DAT80
0450H ACC C

Addressing mode Direct or indirect Direct or indirect (shift of 16) Short immediate Long immediate

Affects: OV and C OV and C OV and C ;(DP=8:0400h~047Fh)
执行前 11H 24H 0450H ACC 1 C

Addressing mode: Direct or indirect Short immediate Long immediate

执行后 11H 13H

例 2、SUB *-,1,AR0
ARP AR7 0301H ACC 例 3、SUB #8h C

;(左移 1 位,SXM=0)
执行后 07H 0301H 04H ARP AR7 0301H ACC 0 C 执行后 07H ACC 0 C 0FFFFFFFFH 0H 0300H 04H 01H

执行前

;加短立即数09H
执行前

ACC C

例 4、ADD #0FFFh,4

;左移 4 位,SXM=0
执行后 0FFFFH ACC 1 C 0FH

执行前 ACC C

SUBB 操作码: 操作码 SUBB dma 直接寻址。 SUBB ind[,ARn]]

15 0 1 1 15 0 1 1

0

11 0 11 0

1 0

0

7 6 0

0 dma

0

1 0

0

0 4 3 2 7 6 NAR ARU N 1

间接寻址。 ARU:辅助寄存器更新码,当前辅助寄存器是否和如何更新值; N:下一个辅助寄存器指示,表明是否是指令改变 ARP 的值; NAR:下一个辅助寄存器值,如果 N=1,则装载到 ARP。 执行:PC+1→PC; 执行 (ACC) - (data-memory address) - (logical inversion of C) →ACC 影响状态位: 影响状态位 Affected by: Affects: OVM OV and C This instruction is not affected by SXM. 例 1、SUBB
0405H ACC 0 C

DAT5

;(DP=8:0400h~047Fh)
执行前 06H 06H 0405H ACC 0 C 执行后 06H 0FFFFFFFFH

例 2、SUBB *
执行前 ARP AR6 0301H ACC 1 C 6H 0301H 02H 04H ARP AR6 0301H ACC 1 C 执行后 6H 0301H 02H 02H

In the first example, C is originally zeroed, presumably from the result of a previous subtract instruction that performed a borrow. The effective operation performed was 6 - 6 - (0-) = -1, generating another borrow (resetting carry) in the process. In the second example, no borrow was previously generated (C = 1), and the result from the subtract instruction does not generate a borrow. SUBC 操作码: 操作码 SUBC dma 直接寻址。 SUBC ind[,ARn]] 间接寻址。

15 0 0 0 15 0 0 0

0

11 1 11 1

0 1

0

7 6 0

0 dma

0

0 1

0

0 4 3 2 7 6 NAR ARU N 1

ARU:辅助寄存器更新码,当前辅助寄存器是否和如何更新值; N:下一个辅助寄存器指示,表明是否是指令改变 ARP 的值; NAR:下一个辅助寄存器值,如果 N=1,则装载到 ARP。 执行: 执行 For (ACC)≥0 and (data-memory address)≥0: Increment PC, then ... (ACC) - [(data-memory address)×215]→ALU output

If ALU output≥0 Then (ALU output)×2 + 1→ACC Else (ACC)×2→ACC 影响状态位: 影响状态位 Affects: OV and C 例 1、SUBC
0302H ACC C

DAT2

;(DP=6:0300h~037Fh)
执行前 01H 04H 0302H ACC 0 C 执行后 01H 08H

例 2、

RPT SUBC
ARP AR6 1000H ACC C

#15 *
执行前 3H 1000H 07H 041H ARP AR6 1000H ACC 1 C 执行后 3H 1000H 07H 20009H

SUBS 操作码: 操作码 SUBS dma 直接寻址。 SUBS ind[,ARn]] 间接寻址。

15 0 1 1 15 0 1 1

0

11 0 11 0

1 1

0

7 6 0

0 dma

0

1 1

0

0 4 3 2 7 6 NAR ARU N 1

ARU:辅助寄存器更新码,当前辅助寄存器是否和如何更新值; N:下一个辅助寄存器指示,表明是否是指令改变 ARP 的值; NAR:下一个辅助寄存器值,如果 N=1,则装载到 ARP。 执行:Increment PC, then ... 执行 (ACC) - (data-memory address)→ACC 影响状态位: 影响状态位 Affected by: Affects: OVM OV and C This instruction is not affected by SXM.

例 1、SUBS

DAT2

;(DP=16:0800h~087Fh ,SXM=1
执行前

)
执行后

0802H ACC C

0F003H 0F105H

0302H ACC 1 C

0F003H 102H

例 2、

SUBS
ARP AR0 301H ACC C

*

; (SXM=1)
执行前 0H 301H 0F003H 0FFFF105H ARP AR0 301H ACC 1 C 执行后 0H 301H 0F003H 0FFF0102H

SUBT 操作码: 操作码 SUBT dma 直接寻址。 SUBT ind[,ARn]] 间接寻址。

15 0 1 1 15 0 1 1

0

11 0 11 0

1 1

1

7 6 0

0 dma

0

1 1

1

0 4 3 2 7 6 NAR ARU N 1

ARU:辅助寄存器更新码,当前辅助寄存器是否和如何更新值; N:下一个辅助寄存器指示,表明是否是指令改变 ARP 的值; NAR:下一个辅助寄存器值,如果 N=1,则装载到 ARP。 执行:Increment PC, then ... 执行 (ACC) - [(data-memory address)×2(TREG(3:0))]→(ACC) If SXM = 1 Then (data-memory address) is sign-extended. If SXM = 0 Then (data-memory address) is not sign-extended. 影响状态位: 影响状态位 Affected by: OVM and SXM 例 1、SUBT DAT127
02FFH TREG ACC C

Affects: OV and C ;(DP=5:0280h~02FFh )
执行前 06H 08H 0FDA5H 02FFH TREG ACC 1 C 执行后 06H 08H 0F7A5H

例 2、

SUBT
ARP AR1

*
执行前 1H 800H ARP AR1 执行后 1H 800H

800H TREG ACC C

01H 08H 0H

800H TREG ACC 0 C

01H 08H FFFFFF00H

XOR 操作码: 操作码 XOR dma 直接寻址。 XOR ind [,ARn] 间接寻址。 XOR #lk [,shift] 长立即数寻址。 XOR #lk [,16] 16 位移位的长立即数寻址。

15 0 1 1 15 0 1 1 15 1 0 1

0

11 1 11 1 11 1

1 0

0

7 6 0

0 dma

0

1 0

0

0 4 3 2 7 6 NAR ARU N 1 7 1 lk 4 3 1 0 shift

1

1 1

1

1 0

15 1 0 1

1

11 1

1 1

0 lk

7 1

0 0

4 3 0 0

0 0 1 1

执行:PC+1→PC; 执行 Event(s): (ACC(15:0)) XOR (data-memory address) →ACC(15:0) (ACC(31:16))→ACC(31:16) (ACC) XOR lk×2shift→ACC (ACC) XOR lk×216→ACC

Addressing mode: Direct or indirect Long immediate Long immediate with left shift of 16

影响状态位: 影响状态位 None 例 1、XOR DAT127 ;(DP=511: FF80h~FFFFh)
执行前 0FFFFh ACC C 0F0F0H 12345678H 0FFFFh ACC C 执行后 0F0F0H 1234A688H

例 2、XOR
ARP AR7 0300h ACC

*+,AR0
执行前 7H 300H 0FFFFH 1234F0F0H C ARP AR1 0300h ACC C 执行后 0H 301H 0FFFFH 12340F0FH

例 3、XOR

#0F0F0h,4

;(First shift data value left by four)
执行后 ACC C 111E 1F10H

执行前 ACC C 1111 1010H

ZALR ZALR dma 直接寻址。 ZALR ind[,ARn]] 间接寻址。

15 0 1 1 15 0 1 1

0

11 1 11 1

0 0

0

7 6 0

0 dma

0

0 0

0

0 4 3 2 7 6 NAR ARU N 1

ARU:辅助寄存器更新码,当前辅助寄存器是否和如何更新值; N:下一个辅助寄存器指示,表明是否是指令改变 ARP 的值; NAR:下一个辅助寄存器值,如果 N=1,则装载到 ARP。 执行:Increment PC, then ... 执行 (data-memory address)→ACC(31:16) 8000h→ACC(15:0) 影响状态位: 影响状态位 None 例 1、ZALR
1003H ACC C

DAT3

;(DP=32:1000h~107Fh )
执行前 3F01H 77FFFFH 1003H ACC C 执行后 3F01H 3F018000H

例 2、 ZALR
ARP AR7 0FF00H ACC C

*-,AR4
执行前 7H 0FF00H 0E0E0H 10 7777H ARP AR7 0FF00H ACC 0 C 执行后 4H 0FEFFH 0E0E0H 0E0E0 8000H

2、辅助寄存器和数据页指针指令 、 ADRK 操作码: 操作码 15 11 ADRK #k 1 0 0 0 0 1 1 1 8 位短立即寻址。 执行:PC+1→PC; 执行 (current AR) + 8-bit positive constant → current AR 影响状态位: 影响状态位 None 例 1、ADRK #80h
执行前

7 k

0

执行后

ARP AR5

5H 4321H

ARP AR5

5H 43A1H

BANZ 操作码: 操作码 BANZ pma[,ind[,ARn]] 间接寻址。

15 0 1 1

1

11 1

0 1

1 pma

0 4 3 2 7 6 NAR ARU N 1

执行:PC+1→PC; 执行 If (current AR)≠0 Then pma →PC Else (PC) + 2 →PC Modify (current AR) and (ARP) as specified 影响状态位: 影响状态位 None 例 1、BANZ PGM0
ARP AR0

; (PGM0 指程序地址 0 )
执行前 0H 5H ARP AR0 执行后 0H 4H

Because the content of AR0 is not zero, the program address denoted by PGM0 is loaded into the program counter (PC), and the program continues executing from that location. The default auxiliary register operation is a decrement of the current auxiliary register content; thus, AR0 contains 4h at the end of the execution. 或者
执行前 ARP AR0 0H 0H ARP AR0 执行后 0H FFFFH

Because the content of AR0 is zero, the branch is not executed; instead, the PC is incremented by 2, and execution continues with the instruction following the BANZ instruction. Because of the default decrement, AR0 is decremented by 1, becoming -1. 例 2、 ;Set ARP to point to AR0. ;Load AR1 with 3. ;Load AR0 with 60h. ;Loop: While AR1 not zero, ;add data referenced by AR0 ;to accumulator and increment ;AR0 value. The contents of data-memory locations 60h-63h are added to the accumulator. MAR *,AR0 LAR AR1,#3 LAR AR0,#60h PGM191 ADD *+,AR1 BANZ PGM191,*-AR0

CMPR 操作码: 操作码 CMPR CM CM 的值为 0~3。

15 1 0 1

1

11 1

1 1

1

7 0

1 1 0 0 0 1

0 CM

执行:PC+1→PC; 执行 Compare (current AR) to (AR0) and place the result in the TC bit of status register ST1. The CMPR instruction performs a comparison specified by the value of CM: If CM = 00, test whether (current AR) = (AR0) If CM = 01, test whether (current AR) < (AR0) If CM = 10, test whether (current AR) > (AR0) If CM = 11, test whether (current AR)≠(AR0) If the condition is true, the TC bit is set to 1. If the condition is false, the TC bit is cleared to 0. Note that the auxiliary register values are treated as unsigned integers in the comparisons. 影响状态位: 影响状态位 Affects: TC This instruction is not affected by SXM, and it 例 1、 CMPR
ARP AR0 AR4 TC

does not affect SXM.

2

; (当前的 AR)>(AR0)?
执行前 4H 0FFFFH 0E0E0H 1H ARP AR0 AR4 TC 执行后 4H 0FFFFH 0E0E0H 0H

LAR 操作码: 操作码 LAR ARx,dma 直接寻址。 LAR ARx,ind [,ARn] 间接寻址。 LAR ARx,#k 短立即数寻址。 LAR ARx,#lk 长立即数寻址。

15 0 0 0 15 0 0 0 15 1 0 1 15 1 0 1

11 10 0 0 11 10 0 0 11 10 1 0

x

7 6 0

0 dma

x

0 4 3 2 7 6 NAR ARU N 1 7 0 k 7 0 0 lk 3 1 2 x 0

x

1

11 1 1 1 1

0 0

执行:PC+1→PC; 执行 Event: (data-memory address) →ARx k→ARx lk→ARx

Addressing mode: Direct or indirect Short immediate Long immediate

影响状态位: 影响状态位 None

例 1、LAR
310h AR0

AR0,16

; (DP=6:0300h~037Fh )
执行前 18H 6H 310h AR0 执行后 18H 18H

例 2、LAR
ARP 300h AR4

AR4,*执行前 4H 32H 300H ARP 300h AR4 执行后 4 32H 32H

Note: LAR in the indirect addressing mode ignores any AR modifications if the AR specified by the instruction is the same as that pointed to by the ARP. Therefore, in Example 2, AR4 is not decremented after the LAR instruction. 例 3、LAR
AR4

AR4,#01h
执行前 0FF09H AR4 执行后 01H

例 4、LAR
AR6

AR6,#3FFFh
0H AR6 3FFFH

MAR 操作码: 操作码 MAR dma 直接寻址。 MAR ind [,ARn] 间接寻址。

15 1 0 0 15 1 0 0

11 10 0 1 0 11 10 0 1 0

1 1

7 6 0

0 dma

1 1

0 4 3 2 7 6 NAR ARU N 1

执行: 执行 Event(s): Addressing mode: Increment PC Direct Increment PC Indirect Modify (current AR) and (ARP) as specified 影响状态位: 影响状态位 Affects: None ARP and ARB

Addressing mode: Direct Indirect

例 1、 MAR
ARP ARB

*,AR1

;用 1 装载 ARP。
执行前 0H 7H ARP ARB 执行后 1H 0H

例 2、 MAR
AR1 ARP ARB

*+,AR5

;增加当前的辅助寄存器(AR1)和用 5 装载 ARP。
执行前 34H 1H 0H AR1 ARP ARB 执行后 35H 5H 1H

SAR 操作码: 操作码 SAR ARx,dma 直接寻址。 SAR ARx,ind [,ARn] 间接寻址。

15 1 0 0 15 1 0 0

11 10 0 0 11 10 0 0

x

7 6 0

0 dma

x

0 4 3 2 7 6 NAR ARU N 0

执行:PC+1→PC; 执行 (ARx) → data-memory address 影响状态位: 影响状态位 None 例 1、 SAR
AR0 31Eh

AR0,DAT30
执行前

; (DP=6:0300h~037Fh)
执行后 37H 18H AR0 31Eh 37H 37H

例 2、 SAR
ARP AR0 401h

AR0,*+
执行前 0H 401H 0H ARP AR0 401h 执行后 0H 402H 401H

SBRK

操作码: 操作码 SBRK #k 8 位短立即寻址。

15 0 1 1

1

11 1

7 1 0 0 k

0

执行:PC+1→PC; 执行 (current AR) – k → current AR Note that k is an 8-bit positive constant. 影响状态位: 影响状态位 None 例 1、 SBRK
ARP AR7

#0FFh
执行前 7H 0H ARP AR7 执行后 7H FF01H

3、TREG、PREG 和乘法指令 、 、 APAC 操作码: 操作码 15 11 APAC 1 1 1 0 1 0 1 1 执行:PC+1→PC; 执行 (ACC) + shifted (PREG) →ACC 影响状态位: 影响状态位 Affected by: Affects: PM and OVM C and OV This instruction is not affected by SXM. 乘积移位模式: 乘积移位模式: PM Bits Bit 1 Bit 0 Resulting Shift 0 0 No shift 0 1 Left shift of 1 bit 1 0 Left shift of 4 bits 1 1 Right shift of 6 bits 例 1、 APAC
PREG ACC C

7 0

0 0 0 0 0 1 0 0

; PM=01 ) (
执行前 40H 20H PREG ACC 0 C 执行后 40H A0H

LPH 操作码: 操作码 LPH dma 直接寻址。

15 0 1 1

11 10 1 0 1

0 1

7 6 0

0 dma

LPH ind [,ARn] 间接寻址。

15 0 1 1

11 10 1 0 1 0 1

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (data-memory address) → PREG (31:16) 影响状态位: 影响状态位 None 例 1、 LPH DAT0 ; DP=4: 0200h~027Fh ) (
执行前 200h PREG 0F79CH 3007 9844H 200h PREG 执行后 0F79CH 0F79C 9844H

例 2、 LPH *,AR6
执行前 ARP AR5 200h PREG 5H 200H 0F79CH 3007 9844H ARP AR5 200h PREG 执行后 6H 200H 0F79CH 0F79C 9844H

LT 操作码: 操作码 LT dma 直接寻址。 LT ind [,ARn] 间接寻址。

15 0 1 1 15 0 1 1

11 10 1 0 0

1 1

7 6 0

0 dma

11 10 1 0 0 1 1

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (data-memory address) → TREG 影响状态位: 影响状态位 None

例 1、 LT 24 ; DP=8: 0400h~047Fh ) (
执行前 418h TREG 62H 3H 418h TREG 执行后 62H 62H

例 2、 LT *,AR3
ARP 执行前 2H ARP 执行后 3H

AR2 418h TREG

418H 62H 3H

AR2 418h TREG

418H 62H 62H

LTA 操作码: 操作码 LTA dma 直接寻址。 LTA ind [,ARn] 间接寻址。

15 0 1 1 15 0 1 1

11 10 1 0 0

0 0

7 6 0

0 dma

11 10 1 0 0 0 0

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (data-memory address) → TREG (ACC) + shifted (PREG) → ACC 影响状态位: 影响状态位 Affected by: PM and OVM

Affects: C and OV

例 1、 LTA 36 ; DP=6: 0300h~037Fh ,PM=00:乘积不移位) (
执行前 324h TREG PREG ACC C 62H 3H 0FH 5H 324h TREG PREG ACC 0 C 执行后 62H 62H 0FH 14H

例 2、 LTA *,AR5
ARP AR4 418h TREG PREG ACC C

; (PM=0)
执行前 4H 324H 62H 3H 0FH 5H ARP AR4 418h TREG PREG ACC 0 C 执行后 5H 324H 62H 62H 0FH 14H

LTD 操作码: 操作码 LTD dma 直接寻址。

15 0 1 1 15 0 1 1

11 10 1 0 0

1 0

7 6 0

0 dma

LTD ind [,ARn] 间接寻址。

11 10 1 0 0 1 0

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (data-memory address) → TREG

(data-memory address) → data-memory address + 1 (ACC) + shifted (PREG) → ACC 影响状态位: 影响状态位 Affected by: PM and OVM

Affects: C and OV

例 1、 LTD 126 ; DP=7: 0380h~03FFh ,PM=00:乘积不移位) (
执行前 3FEh 3FFh TREG PREG ACC C 62H 0H 3H 0FH 5H 3FEh 3FFh TREG PREG ACC 0 C 执行后 62H 62H 62H 0FH 14H

例 2、 LTD *,AR3 ; PM=00:乘积不移位) (
执行前 ARP AR1 3FEh 3FFh TREG PREG ACC C 1H 3FEH 62H 0H 3H 0FH 5H ARP AR1 3FEh 3FFh TREG PREG ACC 0 C 执行后 3H 3FEH 62H 62H 62H 0FH 14H

Note: The data move function for LTD can occur only within on-chip data memory RAM blocks.

LTP 操作码: 操作码 LTP dma 直接寻址。 LTP ind [,ARn] 间接寻址。

15 0 1 1

11 10 1 0 0 0 1

7 6 0 dma

0

15 0 1 1

11 10 1 0 0 0 1

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (data-memory address) → TREG shifted (PREG) → ACC 影响状态位: 影响状态位 Affected by: PM

例 1、 LTP 36 ; DP=6: 0300h~037Fh ,PM=00:乘积不移位) (
执行前 324h TREG PREG ACC C 62H 3H 0FH 5H 324h TREG PREG ACC C 执行后 62H 62H 0FH 0FH

例 2、 LTP *,AR5 ; PM=00:乘积不移位) (
执行前 ARP AR2 324h TREG PREG ACC C 2H 324H 62H 3H 0FH 5H ARP AR2 324h TREG PREG ACC C 执行后 5H 324H 62H 62H 0FH 0FH

LTS 操作码: 操作码 LTS dma 直接寻址。 LTS ind [,ARn] 间接寻址。

15 0 1 1

11 10 1 0 1 0 0

7 6 0 dma

0

15 0 1 1

11 10 1 0 1 0 0

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (data-memory address) → TREG ACC - shifted (PREG) → ACC 影响状态位: 影响状态位 Affected by: PM and OVM 例 1、LTS
324h TREG PREG ACC C

Affects: C and OV

DAT36 ;(DP = 6:0300h-037Fh;PM = 0:no shift of product)
执行前 62H 3H 0FH 5H 324h TREG PREG ACC 0 C 执行后 62H 62H 0FH 0FFFF FFF6H

例 2、 LTS
ARP AR1

*,AR2 ; PM=00:乘积不移位) (
执行前 1H 324H ARP AR1 执行后 2H 324H

324h TREG PREG ACC C

62H 3H 0FH 5H

324h TREG PREG ACC 0 C

62H 62H 0FH 0FFFF FFF6H

MAC 操作码: 操作码 MAC pma,dma 直接寻址。 MAC pma,ind [,ARn] 间接寻址。

15 1 0 1

11 10 0 0 0

7 6 1 0 0 pma dma

0

15 1 0 1

0 11 10 4 3 2 7 6 NAR ARU 1 N 0 0 0 1 0 pma

执行:PC+1→PC; 执行 (PC) → MSTACK pma → PC (ACC) + shifted (PREG) → ACC (data-memory address) → TREG (data-memory address)×(pma) → PREG For indirect, modify (current AR) and (ARP) as specified (PC) + 1 → PC While (repeat counter) ≠ 0: (ACC) + shifted (PREG) → ACC (data-memory address) → TREG (data-memory address)×(pma) → PREG For indirect, modify (current AR) and (ARP) as specified (PC) + 1 → PC (repeat counter) – 1 → repeat counter (MSTACK) → PC 影响状态位: 影响状态位 Affected by: PM and OVM 例 1、MAC
302h FF00h TREG PREG ACC C

Affects: C and OV 0FF00h,02h
执行前 23H 4H 45H 458972H 723 EC41H 302h FF00h TREG PREG ACC 0 C

;( DP = 6:0300h-037Fh;PM = 0,CNF=1 )
执行后 23H 4H 23H 08CH 769 75B3H

例 2、 MAC
ARP

0FF00h,*,AR5 ; PM=00,CNF=1 ) (
执行前 4H ARP 执行后 5H

AR4 302h FF00h TREG PREG ACC C

302H 23H 4H 45H 45 8972H 723 EC41H

AR4 302h FF00h TREG PREG ACC 0 C

302H 23H 4H 23H 8CH 769 75B3H

MACD 操作码: 操作码 MACD pma,dma 直接寻址。 MACD pma,ind [,ARn] 间接寻址。

15 1 0 1

11 10 0 0 0

7 6 1 1 0 pma dma

0

15 1 0 1

0 11 10 4 3 2 7 6 NAR ARU 1 N 0 0 0 1 1 pma

执行:PC+1→PC; 执行 (PC) → MSTACK pma → PC (ACC) + shifted (PREG) → ACC (data-memory address) → TREG (data-memory address)×(pma) → PREG For indirect, modify (current AR) and (ARP) as specified (PC) + 1 → PC While (repeat counter) ≠ 0: (ACC) + shifted (PREG) → ACC (data-memory address) → TREG (data-memory address)×(pma) → PREG For indirect, modify (current AR) and (ARP) as specified (PC) + 1 → PC (data-memory address) → data-memory address + 1 (repeat counter) – 1 → repeat counter (MSTACK) → PC 影响状态位: 影响状态位 Affected by: PM and OVM

Affects: C and OV ;( DP = 6:0300h-037Fh;PM = 0 ) ;CNF=1,RAM B0 构造为程序存储器。
执行后 23H 18H 4H 45H 458972H 723 EC41H 308h 309h FF00h TREG PREG ACC C 23H 23H 4H 23H 08CH 769 75B3H

例 1、MACD 0FF00h,08h

执行前 308h 309h FF00h TREG PREG ACC

0

例 2、 MACD 0FF00h,*,AR6 ; PM=00,CNF=1 ) (
执行前 ARP AR5 308h 309h FF00h TREG PREG ACC C 5H 308H 23H 18H 4H 45H 45 8972H 723 EC41H ARP AR4 308h 309h FF00h TREG PREG ACC 0 C 执行后 6H 308H 23H 23H 4H 23H 8CH 769 75B3H

Note: The data move function for MACD can occur only within on-chip data memory RAM blocks.

MPY 操作码: 操作码 MPY dma 直接寻址。 MPY ind [,ARn] 间接寻址。 MPY #k 短立即寻址。

15 0 1 0

11 10 1 0 1 0 0

7 6 0 dma

0

15 0 1 0

11 10 1 0 1 0 0

0 4 3 2 7 6 NAR ARU 1 N 0 k

15 14 13 12 1 1 0

执行:PC+1→PC; 执行 Event: (TREG)×(data - memory address) → PREG (TREG)×k → PREG 影响状态位: 影响状态位 None 例 1、MPY DAT13
40Dh TREG PREG

Addressing mode: Direct or indirect Short immediate

;( DP = 8:0400h-047Fh
执行前 7H 6H 36H 40Dh TREG PREG

)
执行后 7H 6H 2AH

例 2、 MPY *,AR2
执行前 ARP 1H ARP 执行后 2H

AR1 40Dh TREG PREG

40DH 7H 6H 36H

AR1 40Dh TREG PREG

40DH 7H 6H 2AH

例 3、MPY #031h
执行前 TREG PREG 2H 36H TREG PREG 执行后 2H 62H

MPYA 操作码: 操作码 MPYA dma 直接寻址。 MPYA ind [,ARn] 间接寻址。

15 0 1 0

11 10 1 0 0 0 0

7 6 0 dma

0

15 0 1 0

11 10 1 0 0 0 0

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (ACC) + shifted (PREG) → ACC (TREG)×(data-memory address) → PREG 影响状态位: 影响状态位 Affected by: PM and OVM

Affects: C and OV )
执行后 7H 6H 36H 54H C 30Dh TREG PREG ACC 0 C 7H 6H 2AH 8AH

例 1、MPYA DAT13 ;( DP = 6:0300h-037Fh;PM = 0
执行前 30Dh TREG PREG ACC

例 2、MPYA *,AR4

;( PM = 0
执行前

)
执行后

ARP AR3 30Dh TREG PREG

3H 30DH 7H 6H 36H

ARP AR3 30Dh TREG PREG

4H 30DH 7H 6H 2AH

0

MPYS 操作码: 操作码 MPYS dma 直接寻址。 MPYS ind [,ARn] 间接寻址。

15 0 1 0

11 10 1 0 0 0 1

7 6 0 dma

0

15 0 1 0

11 10 1 0 0 0 1

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (ACC) - shifted (PREG) → ACC (TREG)×(data-memory address) → PREG 影响状态位: 影响状态位 Affected by: PM and OVM 例 1、MPYS
30Dh TREG PREG ACC C

Affects: C and OV DAT13 ;( DP = 6:0300h-037Fh;PM = 0
执行前 7H 6H 36H 54H 30Dh TREG PREG ACC 1 C

)
执行后 7H 6H 2AH 1EH

例 2、MPYS

*,AR5

;( PM = 0
执行前

)
执行后

ARP AR4 30Dh TREG PREG ACC C

4H 30DH 7H 6H 36H 54H

ARP AR4 30Dh TREG PREG ACC 1 C

5H 30DH 7H 6H 2AH 1EH

MPYU 操作码: 操作码 MPYU dma 直接寻址。 MPYU ind [,ARn] 间接寻址。

15 0 1 0

11 10 1 0 1 0 1

7 6 0 dma

0

15 0 1 0

11 10 1 0 1 0 1

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 Unsigned (TREG)×unsigned (data-memory address) → PREG 影响状态位: 影响状态位 None:This instruction is not affected by SXM.

例 1、MPYU DAT16 ;( DP = 4:0200h-027Fh;PM = 0
执行前 210h TREG PREG 0FFFFH 0FFFFH 1H 210h TREG PREG

)
执行后 0FFFFH 0FFFFH 0FFFE 0001H

例 2、MPYU *,AR6
执行前 ARP AR5 210h TREG PREG 5H 210H 0FFFFH 0FFFFH 1H ARP AR5 210h TREG PREG 执行后 6H 210H 0FFFFH 0FFFFH 0FFFE 0001H

PAC 操作码: 操作码 PAC 执行:PC+1→PC; 执行 shifted (PREG) → ACC 影响状态位: 影响状态位 Affected by:PM 例 1、PAC ;( PM = 0

15 1 0 1 1

11 10 1 1 1 0

7

6 0 0

0 0 0 1 1

0 0

)
执行后 144H 23H PREG ACC C 144H 144H

执行前 PREG ACC C

SPAC 操作码: 操作码 SPAC

15 1 0 1 1

11 10 1 1 1 0

7 6 0 0 0 0

0 0 1 0 1

执行:PC+1→PC; 执行 (ACC) - shifted (PREG) → ACC 影响状态位: 影响状态位 Affected by: Affects: PM and OVM C and OV This instruction is not affected by SXM. 例 1、SPAC ;( PM = 0 )
执行后 PREG ACC 1 C 1000 0000H 6000 0000H

执行前 PREG ACC C 1000 0000H 7000 0000H

SPH 操作码: 操作码 SPH dma 直接寻址。 SPH ind [,ARn] 间接寻址。

15 1 0 0

11 10 0 1 1 0 1

7 6 0 dma

0

15 1 0 0

11 10 0 1 1 0 1

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 16 MSBs of shifted (PREG) → data-memory address 影响状态位: 影响状态位 Affected by:PM 例 1、SPH DAT3
PREG 203h

;( DP = 4:0200h-027Fh;PM = 0
执行前 0FE07 9844H 4567H PREG 203h

)
执行后 0FE07 9844H 0FE07H

例 2、SPH *,AR7

;( PM=2:左移 4 位 )
执行前 执行后 6H 203H 0FE07 9844H 4567H ARP AR6 PREG 203h 7H 203H 0FE07 9844H 0E079H

ARP AR6 PREG 203h

SPL 操作码: 操作码 SPL dma 直接寻址。 SPL ind [,ARn]

15 1 0 0

11 10 0 1 1 0 0

7 6 0 dma

0

15 1 0 0

11 10 0 1 1 0 0

0 4 3 2 7 6 NAR ARU 1 N

间接寻址。 执行:PC+1→PC; 执行 16 LSBs of shifted (PREG) → data-memory address 影响状态位: 影响状态位 Affected by:PM 例 1、SPL DAT5 ;( DP = 4:0200h-027Fh;PM = 2:左移 4 位
执行前 PREG 205h 0FE07 9844H 4567H PREG 205h

)

执行后 0FE07 9844H 08440H

例 2、SPL *,AR3

;( PM=0:不移位 )
执行前 执行后 2H 205H 0FE07 9844H 4567H ARP AR6 PREG 203h 3H 205H 0FE07 9844H 9844H

ARP AR6 PREG 203h

SPM 操作码: 操作码 SPM constant

15 1 0 1 1

11 10 1 1 1 1

7

6 0 0

0 0

2 0 0

1 0 const

执行:PC+1→PC; 执行 constant → product shift mode (PM) bits 影响状态位: 影响状态位 Affects:PM This instruction is not affected by SXM. 乘积移位模式: PM Field 00 01 10 11

Specified Product Shift No shift of PREG output PREG output to be left shifted 1 place PREG output to be left shifted 4 places PREG output to be right shifted 6 places and sign extended

The left shifts allow the product to be justified for fractional arithmetic. The right-shift-by-six mode allows up to 128 multiply accumulate processes without the possibility of overflow occurring. PM may also be loaded by an LST #1 instruction. 例 1、 SPM 3

;Product register shift mode 3 (PM = 11) ;is selected causing all subsequent ;transfers from the product register (PREG)

;to be shifted to the right six places. SQRA 操作码: 操作码 SQRA dma 直接寻址。 SQRA ind [,ARn] 间接寻址。

15 0 1 0

11 10 1 0 0 1 0

7 6 0 dma

0

15 0 1 0

11 10 1 0 0 1 0

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (ACC) + shifted (PREG) → ACC (data-memory address) → TREG (TREG)×(data-memory address) → PREG 影响状态位: 影响状态位 Affected by: PM and OVM

Affects: C and OV )
执行后 0FH 3H 12CH 1F4H C 31Eh TREG PREG ACC 0 C 0FH 0FH 0E1H 320H

例 1、SQRA DAT30 ;( DP = 6:0300h-037Fh;PM = 0
执行前 31Eh TREG PREG ACC

例 2、SQRA *,AR4

;( PM = 0
执行前

)
执行后

ARP AR4 31Eh TREG PREG ACC C

3H 31EH 0FH 3H 12CH 1F4H

ARP AR4 31Eh TREG PREG ACC 0 C

4H 31EH 0FH 0FH 0E1H 320H

SQRS 操作码: 操作码 SQRS dma 直接寻址。 SQRS ind [,ARn] 间接寻址。

15 0 1 0

11 10 1 0 0 1 1

7 6 0 dma

0

15 0 1 0

11 10 1 0 0 1 1

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (ACC) - shifted (PREG) → ACC

(data-memory address) → TREG (TREG)×(data-memory address) → PREG 影响状态位: 影响状态位 Affected by: PM and OVM 例 1、SQRS
309h TREG PREG ACC C

Affects: C and OV DAT9 ;( DP = 6:0300h-037Fh;PM = 0
执行前 08H 1124H 190H 1450H 309h TREG PREG ACC 1 C

)
执行后 08H 08H 40H 12C0H

例 2、SQRS

*,AR5 ;( PM = 0
执行前

)
执行后

ARP AR3 309h TREG PREG ACC C

3H 309H 08H 1124H 190H 1450H

ARP AR3 309h TREG PREG ACC 0 C

5H 309H 08H 08H 40H 12C0H

4、转移指令 、 B 操作码: 操作码 B pma,ind [,ARn] 间接寻址。

15 0 1 1

0 11 10 4 3 2 7 6 NAR ARU 1 N 1 1 0 0 1 pma

执行: 执行 pma → PC Modify (current AR) and (ARP) as specified. 影响状态位: 影响状态位 None 例 1、B 191,*+,AR1 The value 191 is loaded into the program counter, and the program continues to execute from that location. The current auxiliary register is incremented by 1, and ARP is set to point to auxiliary register 1 (AR1). BACC 操作码: 操作码 BACC

15 1 0 1 1

11 10 1 1 1 0

7 6 0 0 1 0

0 0 0 0 0

执行:ACC(15:0)→PC 执行 影响状态位: 影响状态位 None 例 1、BACC ; ( ACC contains the value 191 ) The value 191 is loaded into the program counter, and the program continues to execute from that location. BANZ 操作码: 操作码 BANZ pma,ind [,ARn] 间接寻址。

15 0 1 1

0 11 10 4 3 2 7 6 NAR ARU 1 N 1 1 0 1 1 pma

执行: 执行 If (current AR) ≠ 0 Then pma → PC Else (PC) + 2 → PC Modify (current AR) and (ARP) as specified. 影响状态位: 影响状态位 None 例 1、BANZ PGM0
ARP AR0

;( PGM0 表示程序地址 0
执行前 0H 5H ARP AR0

)
执行后 0H 4H

Because the content of AR0 is not zero, the program address denoted by PGM0 is loaded into the program counter (PC), and the program continues executing from that location. The default auxiliary register operation is a decrement of the current auxiliary register content; thus, AR0 contains 4h at the end of the execution. 或者:
执行前 ARP AR0 0H 0H ARP AR0 执行后 0H FFFFH

Because the content of AR0 is zero, the branch is not executed; instead, the PC is incremented by 2, and execution continues with the instruction following the BANZ instruction. Because of the default decrement, AR0 is decremented by 1, becoming -1. 例 2、 ;Set ARP to point to AR0. ;Load AR1 with 3. ;Load AR0 with 60h. PGM191 ;Loop: While AR1 not zero, ;add data referenced by AR0 ;to accumulator and increment ;AR0 value. The contents of data-memory locations 60h-63h are added to the accumulator. BCND
1

MAR *,AR0 LAR AR1,#3 LAR AR0,#60h ADD *+,AR1 BANZ PGM191,*-AR0

操作码: 操作码 BCND pma,cond [,cond2][,…] 间接寻址。 Cond EQ NEQ LT LEQ GT GEQ NC C NOV OV BIO NTC TC UNC 执行: 执行 Condition ACC = 0 ACC ≠0 ACC < 0 ACC ≤0 ACC > 0 ACC≥0 C=0 C=1 OV = 0 OV = 1 BIO_ low TC = 0 TC = 1 Unconditionally

15 1 1 1

11 10 0 0 0

7 6 TP pma ZLVC

4 3

2 0 ZLVC

If cond 1 AND cond 2 AND ... Then pma → PC Else increment PC 影响状态位: 影响状态位 None 例 1、BCND PGM191, LEQ, C

If the accumulator contents are less than or equal to zero and the carry bit is set, program address 191 is loaded into the program counter, and the program continues to execute from that location. If these conditions do not hold, execution continues from location PC + 2.

CALA 操作码: 操作码 CALA 执行: 执行 PC + 1 → TOS ACC(15:0) → PC 影响状态位: 影响状态位 None 例1、 CALA

15 1 0 1 1

11 10 1 1 1 0

7 6 0 0 1 1

0 0 0 0 0

执行前 PC 25H PC

执行后 83H

ACC TOS

83H 100H

ACC TOS

83H 26H

CALL 操作码: 操作码 CALL pma[,ind [,ARn]] 间接寻址。

15 0 1 1

11 10 9 8 1 1 0 1 0

7 6 1 pma

4 3 2 ARU

1 0 NAR

执行: 执行 PC + 2 → TOS pma → PC Modify (current AR) and (ARP) as specified. 影响状态位: 影响状态位 None 例 1、CALL
ARP AR1 PC TOS

191, *+, AR0
执行前

;0BFh (191)
执行后 1H 05H 30H 100H ARP AR1 PC TOS 0H 06H 0BFH 32H

Program address 0BFh (191) is loaded into the program counter, and the program continues executing from that location.

CC 操作码: 操作码 CC pma,cond [,cond2][,…] 间接寻址。 Cond EQ NEQ LT LEQ GT GEQ NC C NOV OV BIO Condition ACC = 0 ACC ≠0 ACC < 0 ACC ≤0 ACC > 0 ACC≥0 C=0 C=1 OV = 0 OV = 1 BIO_ low

15 1 1 1

11 10 0 1 0

7 6 TP pma ZLVC

4 3

2 0 ZLVC

NTC TC UNC

TC = 0 TC = 1 Unconditionally

执行: 执行 If cond 1 AND cond 2 AND ... Then PC + 2→ TOS pma → PC Else Increment PC 影响状态位: 响状态位 None 例 1、CC PGM191, LEQ, C If the accumulator contents are less than or equal to zero and the carry bit is set, 0BFh (191) is loaded into the program counter, and the program continues to execute from that location. If the conditions are not met, execution continues at the instruction following the CC instruction. INTR 15 操作码: 操作码 1 0 1 1 INTR k k:为 0~31 的值,表示中断向量。

11 10 1 1 1 0

7 6 0 1 1

4 k

0

执行: 执行 (PC) + 1 → stack corresponding interrupt vector location → PC 影响状态位: 影响状态位 Affects:INTM This instruction is not affected by INTM. 例 1、INTR 3 ;PC + 1 is pushed onto the stack. ;Then control is passed to program ;memory location 6h.

NMI 操作码: 操作码 NMI 执行: 执行 PC + 1 → stack 24h → PC 1 → INTM

15 1 0 1 1

11 10 1 1 1 0

7

6 0 1

0 0 0 1 0

0 1

影响状态位: 影响状态位 Affects:INTM This instruction is not affected by INTM.

例 1、NMI

;PC + 1 is pushed onto the stack, and then ;control is passed to program memory location ;24h.

RET 操作码: 操作码 RET 执行: 执行 ( TOS ) → PC Pop stack one level. 影响状态位: 影响状态位 None 例 1、 RET

15 1 1 1 0

11 10 1 1 1 1

7

6 0 0

0 0 0 0 0

0 0

执行前 PC Stack 96H 37H 45H 75H 21H 3FH PC Stack

执行后 37H 45H 75H 21H 3FH 45H

45H 6EH 6EH

6EH 6EH 6EH

RETC 操作码: 操作码 RETC cond [,cond2][,…] 间接寻址。 Cond EQ NEQ LT LEQ GT GEQ NC C NOV OV BIO Condition ACC = 0 ACC ≠0 ACC < 0 ACC ≤0 ACC > 0 ACC≥0 C=0 C=1 OV = 0 OV = 1 BIO_ low

15 1 1 1

11 10 0 1 1

7 6 TP ZLVC

4 3

2 0 ZLVC

NTC TC UNC

TC = 0 TC = 1 Unconditionally

执行: 执行 If cond 1 AND cond 2 AND ... (TOS) → PC Pop stack one level Else, continue 影响状态位: 影响状态位 None 例 1、RETC GEQ, NOV ;A return is executed if the ;accumulator content is positive ;or zero and if the OV (overflow) bit ;is zero.

TRAP 操作码: 操作码 RET

15 1 0 1 1

11 10 1 1 1 0

7

6 0 1

0 0 0 0 1

0 1

执行: 执行 (PC) + 1 → stack 22h → PC 影响状态位: 影响状态位 Not affected by INTM; does not affect INTM. 例 1、TRAP ;PC + 1 is pushed onto the stack, and then ;control is passed to program memory location ;22h.

5、控制指令 、 BIT 操作码: 操作码 BIT dma, bit code 直接寻址。 BIT ind, bit code [,ARn] 间接寻址。

15 0 1 0

12 11 0 bit code

7 6 0 dma

0

12 11 15 0 1 0 0 bit code

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (data bit number (15 - bit code)) → TC 影响状态位: 影响状态位 Affects:TC Bit Numbers and Their Corresponding Bit Codes for BIT Instruction

Bit code Bit num

0 15

5 6 7 1 2 3 4 14 13 12 11 10 9 8

8 9 10 11 12 7 6 5 4 3

13 14 15 2 1 0

MSB

Data-memory value

LSB

例 1、 BIT 0h, 15
300h TC

;(DP=6:0300h~037Fh),测试 300h 单元的最低有效位。
执行前 4DC8H 0H 300h TC 执行后 4DC8H 0H

例 2、 BIT *, 0, AR1

;测试 310h 单元的最高有效位,置 ARP=1。
执行前 执行后 0H 310H 45H 0H 15 0 12 11 1 1 0 1 ARP AR0 310h TC 7 6 1 1 1 0 dma 1H 310H 6EH 1H

ARP AR0 310h TC

BITT 操作码: 操作码 BITT dma 直接寻址。 BITT ind [,ARn] 间接寻址。

0

12 11 15 1 0 1 1 0

1 1

1

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (data bit number (15 -TREG(3:0))) → TC 影响状态位: 影响状态位 Affects:TC Bit Numbers and Their Corresponding Bit Codes for BIT Instruction
Bit code (TREG 的低 4 位) 0 Bit num 15 5 6 7 1 2 3 4 14 13 12 11 10 9 8 8 9 10 11 12 7 6 5 4 3 13 14 15 2 1 0

MSB

Data-memory value

LSB

例 1、 BITT 00h
300h TREG TC

;(DP=6:0300h~037Fh),测试 300h 单元的位 14。
执行前 4DC8H 1H 0H 300h TREG TC 执行后 4DC8H 1H 1H

例 2、 BIT *

;测试 310h 单元的位 1。
执行前 执行后 1H 310H ARP 1H 310H

ARP

AR1 310h TREG TC 8000H 0EH 0H

AR1 310h TREG TC 8000H 0EH 0H

CLRC 操作码: 操作码 CLRC C CLRC CLRC CNF INTM

15 1 15 1 15 1 0 1 1 0 1 1 0 1 1

11 10 1 1 1 0 11 10 1 1 1 0 11 10 1 1 1 0

7 7 7

6 0 0 0 0 0 0 6 6

0 1 1 1 0 0 0 1 0 0 0 0 0 0 0

0 1 0 1 0 1

15

11 10 0 1 0 1 1 1 1 1 1 0 11 10 1 1 1 0 11 10 0 1 0 1 1 1 1 1 1 0 11 10 1 1 1 0

7 6 0 1 7 6 0 0 0 1 7 6 0 1 7 6 0 0 0 1 0 0 0 0

0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0

CLRC CLRC

OVM SXM

1 15 1 15

CLRC CLRC

TC XF

1 15 1

执行:PC+1→PC; 执行 0 → control bit 影响状态位: 影响状态位 None 例 1、CLRC
ST1

TC

;( TC 是 ST1 的位 11 )
执行前 x9xxH ST1 执行后 x1xxH

IDLE 操作码: 操作码 IDLE

15 1 0 1 1

11 10 1 1 1 0

7

6 1 0

0 0 0 1 0

0 0

执行:PC+1→PC; 执行 then wait for unmasked or nonmaskable hardware interrupt. 影响状态位: 影响状态位 Affected by:INTM 例 1、IDLE ;The processor idles until a hardware reset,

;a hardware NMI, or an unmasked interrupt ;occurs. LDP 操作码: 操作码 LDP dma 直接寻址。 LDP ind [,ARn] 间接寻址。 LDP #k 短立即寻址。

15 0 0 0

11 10 0 1 1 0 1

7 6 0 dma

0

15 0 0 0

11 10 0 1 1 0 1 9 8

0 4 3 2 7 6 NAR ARU 1 N 0 k

15 14 13 12 1 0 1

1 1 1 0

执行:PC+1→PC; 执行 Event: Nine LSBs of (data-memory address) →DP k → DP 影响状态位: 影响状态位 Affects:DP 例 1、 LDP 127
FFFFh DP

Addressing mode: Direct or indirect Short immediate

;( DP=511:0FF80h~0FFFFh )。
执行前 0FEDCH 1FFH FFFFh DP 执行后 0FEDCH 0DCH

例 2、 LDP #0h
执行前 DP 1FFH DP 执行后 0H

例 3、 LDP *, AR5
执行前 ARP AR4 300h DP 4H 300H 06H 06H ARP AR4 300h DP 执行后 5H 300H 06H 06H

LST 操作码: 操作码 LST #0, dma 直接寻址。 LST #0, ind [,ARn] 间接寻址。 LST #1, dma 直接寻址。

15 0 0 0

11 10 0 1 1 1 0

7 6 0 dma

0

15 0 0 0 15 0 0 0

11 10 0 1 1 1 0 11 10 0 1 1 1 1

0 4 3 2 7 6 NAR ARU 1 N 7 6 0 dma 0

LST #1, ind [,ARn] 间接寻址。

15 0 0 0

11 10 0 1 1 1 1

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (data-memory address) → status register STm

LST #0 Operation
15 Data 15 ST0 14 13 12 ARP OV 11
OVM

14 13 12

11

10

9 8

7

6

5 4

3

2

1

0

10 1

9 8

7

6

5 4 DP

3

2

1

0

INTM

LST #1 Operation
15 ST0 15 Data 15 ST1 14 13 12 ARB
CNF

14 13 12 ARP OV

11
OVM

10 1

9 8

7

6

5 4 DP

3

2

1

0

INTM

14 13 12

11

10

9 8

7

6

5 4

3

2

1

0

11
TC

10
SXM

9 8
C

7 1 1

6 1

5 4 XF

3 1 1

2

1 PM

0

1

影响状态位: 影响状态位 Affects:ARB, ARP, OV, OVM, DP, CNF, TC, SXM, C, XF, and PM This instruction does not affect INTM. 例 1、 MAR *, AR0 LST #0,*,AR1

;The data memory word addressed by the ;contents of auxiliary register AR0 is ;loaded into status register ST0,except ;for the INTM bit. Note that even ;though a next ARP value is specified, ;that value is ignored. Also note that ;the old ARP is not loaded into the ;ARB. ;(DP=0:0000h~007Fh)。
执行前 执行后 2404H 6E00H 05ECH 60h ST0 ST1 2404H 2604H 05ECH

例 2、 LST #0, 60h
60h ST0 ST1

例 3、 LST #0, *-, AR1

执行前 ARP AR4 3FFh TREG TC 4H 3FFH 0EE04H 0EE00H 0F7ECH ARP AR4 3FFh TREG TC

执行后 1H 3FEH 0EE04H 0EE04H 0F7ECH

例 4、 LST #1, 00h

;( DP=6 ) ;注意,ARB 用新的 ARP 值装载。
执行前 执行后 0E1BCH 0E406H 0E1FCH

300h ST0 ST1

0E1BCH 406H 9ECH

300h ST0 ST1

NOP 操作码: 操作码 NOP 执行:PC+1→PC; 执行 影响状态位: 影响状态位 None 例 1、 POP 操作码: 操作码 POP 执行:PC+1→PC; 执行 (TOS) → ACC(15:0) 0 → ACC(31:16) Pop stack one level 影响状态位: 影响状态位 None 例 1、 POP NOP

15 1 0 0 0

11 10 1 0 1 1

7

6 0 0

0 0 0 0 0

0 0

;No operation is performed.

15 1 0 1 1

11 10 1 1 1 0

7

6 1 1

0 0 0 1 0

0 0

执行前 ACC C Stack 45H 16H 7H 33H 42H Stack 82H ACC C

执行后 45H 16H 7H 33H 42H 56H

56H 37H 61H

37H 61H 61H

POPD 操作码: 操作码 POPD dma 直接寻址。 POPD ind [,ARn] 间接寻址。

15 1 0 0

11 10 0 1 0 1 0

7 6 0 dma

0

15 1 0 0

11 10 0 1 0 1 0

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (TOS) → data-memory address Pop stack one level 影响状态位: 影响状态位 None 例1、 POPD
40Ah Stack

DAT10

;( DP=8 )
执行前 55H 92H 72H 8H 44H 81H 75H 32H 0AAH 40Ah Stack 执行后 92H 72H 8H 44H 81H 75H 32H 0AAH 0AAH

例2、 POPD
ARP AR0 300h Stack

*+, AR1
执行前 0H 300H 55H 92H 72H 8H 44H 81H 75H 32H 0AAH ARP AR0 300h Stack 执行后 1H 301H 92H 72H 8H 44H 81H 75H 32H 0AAH 0AAH

PSHD 操作码: 操作码 PSHD dma 直接寻址。 PSHD ind [,ARn] 间接寻址。

15 0 1 1

11 10 1 0 1 1 0

7 6 0 dma

0

15 0 1 1

11 10 1 0 1 1 0

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 data-memory address → (TOS) Push all stack locations down one level 影响状态位: 影响状态位 None 例1、 PSHD
1FFh Stack

127

;( DP=3:0180h~01FFh )
执行前 65H 2H 33H 78H 99H 42H 50H 0H 0H 1FFh Stack 执行后 65H 65H 2H 33H 78H 99H 42H 50H 0H

例2、 PSHD
ARP AR0 1FFh Stack

*, AR1
执行前 0H 1FFH 12H 2H 33H 78H 99H 42H 50H 0H 0H ARP AR0 1FFh Stack 执行后 1H 1FFH 12H 12H 2H 33H 78H 99H 42H 50H 0H

PUSH
15 1 0 1 1 11 10 1 1 1 0 7 6 1 1 0 1 1 0 0 0 0

操作码: 操作码 PUSH 执行:PC+1→PC; 执行 Push all stack locations down one level ACC(15:0) → TOS 影响状态位: 影响状态位 None 例 1、 PUSH
执行前 ACC C Stack 2H 5H 3H 0H 12H 86H 54H 3FH Stack 7H ACC C 7H 2H 5H 3H 0H 12H 86H 54H 执行后 7H

RPT 操作码: 操作码 RPT dma 直接寻址。 RPT ind [,ARn] 间接寻址。 RPT #k 短立即寻址。

15 0 0 0

11 10 0 1 0 1 1

7 6 0 dma

0

15 0 0 0

11 10 0 1 0 1 1 9 8 1 7

0 4 3 2 7 6 NAR ARU 1 N 0 k

15 14 13 12 1 0 1

1 1 0 1

执行:PC+1→PC; 执行 Event: (data-memory address) → RPTC k → RPTC 影响状态位: 影响状态位 None

Addressing mode: Direct or indirect Short immediate

例 1、 RPT DAT127

;(DP=31:0F80h~0FFFh )。 ;重复下一条指令 13 次。
执行前 执行后 0CH 0H 0FFFh RPTC 0CH 0CH

0FFFh RPTC

例 2、 RPT *, AR1

;重复下一条指令 4096 次。
执行前 执行后 0H 300H 0FFFH 0H ARP AR0 300h RPTC 1H 300H 0FFFH 0FFFH

ARP AR0 300h RPTC

例 3、 RPT #1

;重复下一条指令 2 次。
执行前 执行后 0H 15 1 15 1 15 1 15 0 1 0 1 0 1 1 1 1 11 10 1 1 1 0 11 10 1 1 1 0 11 10 1 1 1 0 11 10 0 1 0 1 1 1 1 1 1 0 11 10 1 1 1 0 11 10 0 1 0 1 1 1 1 1 1 0 11 10 1 1 1 0 RPTC 7 7 7 6 0 0 0 0 0 0 6 6 1H 0 1 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1

RPTC

SETC 操作码: 操作码 SETC C SETC SETC CNF INTM

0 1 0 1 0 1 7 6 0 1 7 6 0 1 7 6 0 1 7 6 0 1

SETC SETC

OVM SXM

1 15 1 15

SETC SETC

TC XF

1 15 1

执行:PC+1→PC; 执行 control bit → 0 影响状态位: 影响状态位 None 例 1、SETC
ST1

TC

;( TC 是 ST1 的位 11 )
执行前 执行后 x1xxH 15 1 0 1 1 11 10 1 1 1 1 ST1 7 6 0 0 x9xxH 2 0 0 1 0 const

SPM 操作码: 操作码 SPM constant

0 0

执行:PC+1→PC; 执行 constant → product shift mode (PM) bits 影响状态位: 影响状态位

Affects:PM This instruction is not affected by SXM. 乘积移位模式: PM Field 00 01 10 11

Specified Product Shift No shift of PREG output PREG output to be left shifted 1 place PREG output to be left shifted 4 places PREG output to be right shifted 6 places and sign extended

The left shifts allow the product to be justified for fractional arithmetic. The right-shift-by-six mode allows up to 128 multiply accumulate processes without the possibility of overflow occurring. PM may also be loaded by an LST #1 instruction. 例 1、 SPM 3

;Product register shift mode 3 (PM = 11) ;is selected causing all subsequent ;transfers from the product register (PREG) ;to be shifted to the right six places.

SST 操作码: 操作码 SST #0, dma 直接寻址。 SST #0, ind [,ARn] 间接寻址。 SST #1, dma 直接寻址。 SST #1, ind [,ARn] 间接寻址。

15 1 0 0

11 10 0 1 1 1 0

7 6 0 dma

0

15 1 0 0 15 1 0 0

11 10 0 1 1 1 0 11 10 0 1 1 1 1

0 4 3 2 7 6 NAR ARU 1 N 7 6 0 dma 0

15 1 0 0

11 10 0 1 1 1 1

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 status register STm → (data-memory address) 影响状态位: 影响状态位 None 例 1、 SST #0, 96

;直接寻址:数据页 0
执行前 ST0 60h

自动访问。
执行后 0A408H 0A408H

ST0 60h

0A408H 0AH

例 2、 SST #1, *, AR7

;间接寻址
执行前 执行后 0H 300H ARP AR0 7H 300H

ARP AR0

ST1 300h

2580H 0H

ST1 300h

2580H 2580H

6、I/O 和存储器指令 、 BLDD 操作码: 操作码 BLDD #lk, dma 直接寻址。 BLDD #lk, ind [,ARn] 间接寻址。 BLDD dma, #lk 直接寻址。 BLDD ind,#lk [,ARn] 间接寻址。

15 1 0 1

11 10 0 1 0 0 0 lk

7 6 0 dma

0

15 1 0 1 15 1 0 1

11 10 0 1 0 0 0 lk 11 10 0 1 0 0 1 lk

0 4 3 2 7 6 NAR ARU 1 N 7 6 0 dma 0

15 1 0 1

11 10 0 1 0 0 1 lk

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (PC) → MSTACK lk → PC (source) → destination For indirect, modify (current AR) and (ARP) as specified (PC) + 1 → PC While (repeat counter)≠0:(source) → destination For indirect, modify (current AR) and (ARP) as specified (PC) + 1→ PC (repeat counter) -1 → repeat counter (MSTACK) → PC 影响状态位: 影响状态位 None

例 1、 BLDD #300, 20h
执行前 300h 320h

;( DP=6:0300h~037Fh )
执行后 0H 0FH 300h 320h 0H 0H

例 2、 BLDD *+, #321h, AR3
执行前 ARP AR2 301h 321h 2H 301H 01H 0FH ARP AR2 301h 321h 执行后 3H 302H 01H 01H

BLPD 操作码: 操作码 BLPD #pma, dma 直接寻址。 BLPD #pma, ind [,ARn] 间接寻址。

15 1 0 1

11 10 0 0 1

7 6 0 1 0 pma dma

0

15 1 0 1

0 11 10 4 3 2 7 6 NAR ARU 1 N 0 0 1 0 1 pma

执行:PC+1→PC; 执行 (PC) → MSTACK pma → PC (source) → destination For indirect, modify (current AR) and (ARP) as specified (PC) + 1 → PC While (repeat counter)≠0: (source) → destination For indirect, modify (current AR) and (ARP) as specified (PC) + 1 → PC (repeat counter) -1→ repeat counter (MSTACK) → PC 影响状态位: 影响状态位 None 例 1、 BLPD #800h, 00h
执行前 800h 300h 0FH 0H 800h 300h

;( DP=6:0300h~037Fh )
执行后 0FH 0FH

例 2、 BLDD

#800h, *, AR7
执行前 执行后 0H 310H 1111H 0100H ARP AR0 800h 310h 7H 310H 1111H 1111H

ARP AR0 800h 310h

DMOV 操作码: 操作码 DMOV dma 直接寻址。 DMOV ind [,ARn] 间接寻址。

15 0 1 1

11 10 1 0 1 1 1

7 6 0 dma

0

15 0 1 1

11 10 1 0 1 1 1

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (data-memory address) → data-memory address + 1 影响状态位: 影响状态位 Affected by:CNF 例 1、 DMOV DAT8 ;( DP=6:0300h~037Fh )
执行前 308h 309h 43H 2H 308h 309h 执行后 43H 43H

例 2、 DMOV

*, AR1
执行前 执行后 0H 30AH 40H 41H ARP AR0 30Ah 30Bh 1H 30AH 40H 40H

ARP AR0 30Ah 30Bh

IN 操作码: 操作码 IN dma, PA 直接寻址。 IN ind, PA [,ARn] 间接寻址。

15 1 0 1

11 10 0 1 1 1 1

7 6 0 PA dma

0

15 1 0 1

11 10 0 1 1 1 1

0 4 3 2 7 6 NAR ARU 1 N PA

执行:PC+1→PC; 执行 PA → address bus lines A15~A0 Data bus lines D15~D0 → data-memory address (PA) → data-memory address 影响状态位: 影响状态位 None 例 1、 IN 7,1000h ;Read in word from peripheral on ;port address 1000h. Store word in ;data memory location 307h (DP=6). ;Read in word from peripheral on ;port address 5h. Store word in ;data memory location specified by ;current auxiliary register.

例 2、

IN

*,

5h

OUT 操作码: 操作码 OUT dma, PA

15 0 0 0

11 10 0 1 1 0 0

7 6 0 PA dma

0

直接寻址。 OUT ind, PA [,ARn] 间接寻址。
15 0 0 0 11 10 0 1 1 0 0 0 4 3 2 7 6 NAR ARU 1 N PA

执行:PC+1→PC; 执行 PA → address bus A15~A0 (data-memory address) → data bus D15~D0 (data-memory address) → PA 影响状态位: 影响状态位 None 例 1、OUT DAT0,100h ;(DP = 4) Write data word stored in ;data memory location 200h to ;peripheral at I/O port address ;100h. ;Write data word referenced by ;current auxiliary register to ;peripheral at I/O port address ;100h.

例 2、OUT

*, 100h

SPLK 操作码: 操作码 SPLK #lk, dma 直接寻址。 SPLK #lk, ind [,ARn] 间接寻址。

15 1 0 1

11 10 0 1 1 1 0

7 6 0 PA dma

0

15 1 0 1

11 10 0 1 1 1 0

0 4 3 2 7 6 NAR ARU 1 N PA

执行:PC+1→PC; 执行 lk → data-memory address 影响状态位: 影响状态位 None 例 1、 SPLK #7FFFh, DAT3
执行前 303h 0FE07H 303h

;( DP=6:0300h~037Fh )
执行后 7FFFH

例 2、 SPLK #7FFFh ,*+, AR4
执行前 ARP 0H 300H ARP 执行后 4H 301H

AR0 300h 07H

AR0 300h 7FFFH

TBLR 操作码 TBLR dma 直接寻址。 TBLR ind [,ARn] 间接寻址。

15 1 0 1

11 10 0 0 1 1 0

7 6 0 dma

0

15 1 0 1

11 10 0 0 1 1 0

0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (PC) → MSTACK (ACC(15:0)) → PC (pma) → data-memory address For indirect, modify (current AR) and (ARP) as specified (PC) + 1→ PC While (repeat counter) ?0 (pma) → data-memory address For indirect, modify (current AR) and (ARP) as specified (PC) + 1 → PC (repeat counter) -1 → repeat counter. (MSTACK) → PC 影响状态位: 影响状态位 None 例 1、 TBLR DAT6 ;( DP=4:0200h~027Fh )
执行前 ACC 23h 206h 23H 306H 75H ACC 23h 206h 执行后 23H 306H 306H

例 2、 TBLR

*, AR7
执行前 执行后 0H 300H 24H 307H 75H ARP AR0 ACC 24h 300h 7H 300H 24H 307H 307H

ARP AR0 ACC 24h 300h

TBLW 操作码: 操作码
15 1 0 1 11 10 0 0 1 1 1 7 6 0 pma 0

TBLW pma 直接寻址。 TBLW ind [,ARn] 间接寻址。
15 1 0 1 11 10 0 0 1 1 1 0 4 3 2 7 6 NAR ARU 1 N

执行:PC+1→PC; 执行 (PC+1) → MSTACK (ACC(15:0)) → PC+1 (data-memory address) → pma, For indirect, modify (current AR) and (ARP) as specified (PC) + 1 → PC While (repeat counter) → 0 (data-memory address) → pma, For indirect, modify (current AR) and (ARP) as specified (PC) + 1 → PC (repeat counter) -1 → repeat counter. (MSTACK) → PC+1 影响状态位: 影响状态位 None 例 1、 TBLW DAT5 ;( DP=32:1000h~107Fh )
执行前 ACC 1005h 257h 257H 4339H 306H ACC 1005h 257h 执行后 257H 4339H 4399H

例 2、 TBLR

*
执行前 执行后 6H 1006H 258H 4340H 307H ARP AR6 ACC 24h 258h 6H 1006H 258H 4340H 4340H

ARP AR6 ACC 1006h 258h

3.3 典型指令说明 1、对累加器的加操作指令 ADD 、 ADD 指令执行的操作是将数据存储器单元的数或立即数左移后加到累加器。移位时,低位填 0,高 位在 SXM=1 时为符号扩展,在 SXM=0 时填 0,结果存在累加器中。寻址短立即数时,加操作不受 SXM 的影响,且不能重复执行。 ADD 5,2 ; (DP=4:0200h~027Fh)将数据存储器单元 0205h 的内容左移 2 位 ;之后与 ACC 相加,结果存放 ACC 中 ADD *+,2,AR0; (ARP=4,AR4=282)将数据存储器单元 0282h 的内容左移 2 位

;之后加到 ACC,结果存在 ACC 中,指令执行后 AR4=283,ARP=0 ADD #2 ;短立即数 2 与 ACC 相加,结果存在 ACC 中 ADD #1111h,2;长立即数 1111h 左移 2 位后与 ACC 相加,结果存在 ACC 中 2、和累加器逻辑“与”操作指令 AND 、和累加器逻辑“ AND 指令用来实现被寻址单元的内容和累加器的逻辑“与”操作,以及长立即数经过移位之后和 连接器进行逻辑“与”操作。逻辑“与”操作之后的结果保存在累加器。 AND 16 ; (DP=4:0200h~027Fh)将数据存储器单元 0210h 的内容与 ;ACC 的内容进行逻辑“与”操作,结果保留在 ACC 中 ; (ARP=0,AR0=0301h)将数据存储器单元 0301h 的内容与 ACC 的 AND * ;内容进行逻辑“与”操作,结果保留在 ACC 中 AND #00FFh,4 ;将立即数 00FFh 左移 4 位之后和 ACC 逻辑“与” ,结果保留在 ;ACC 中 3、辅助寄存器不等于零转移指令 BANZ 、 若当辅助寄存器内容不为零,则控制转移到指定的程序存储器地址;否则控制转移到下一条指令。 当前 AR 的缺省修改为减 1。该指令可用来实现程序的循环执行。 MAR *,AR0 ;ARP 指向 AR0 LAR AR1,#3 ;AR1 中装入 3 LAR AR0,#60h;AR0 中装入 0060h P1 ADD *+,AR1 ;将 AR0 所指的数加到 ACC,并将 AR0 的值加 1,ARP 指向 AR1 BANZ P1,AR0 ;若 AR1≠0 则循环 4、条件转移指令 BCND 、 当所规定的条件符合时,控制转移到指定的程序存储器地址。 ;若 ACC 的内容小于等于 0,则程序转到 P1 处开始执行 BCND P1,LEQ 5、位测试指令 BIT 、 该指令将测试数据存储器中的指定位值复制到状态寄存器 ST1 的 TC 位。 将该指令和 BCND 指令结 合可判断指定位的状态,并根据该位的状态来控制程序的转移。 ; (DP=6)测试 0300h 处的最低有效位 BIT 0h,15 BCND P1,TC ;若该位为 1,则程序转到 P1 处执行 6、数据存储器至数据存储器间的块传送 BLDD 、 把指定的数据存储器源地址中的字复制到指定的数据存储单元目的地址中。源地址和目地址可由长 立即数地址或数据存储器地址指定。 但是,如果源地址为长立即数,则目地址只能为直接或间接; 如果源地址为直接或间接,则目地址只能为长立即数。 该指令不能用于存储器映射的寄存器。 使用 RPT 指令重复 BLDD 操作期间中断被禁止。 当 BLDD 指令重复使用时,由长立即数指定的源(目的)地址被保存在 PC 中,每次重复过程中 PC 加 1,从而可以访问一串源(目的)地址。 若使用间接寻址方式来指定目的(源)地址,则在每次重复过程中,一个新目的(源)地址可以被 访问。 若使用直接寻址方式,所指定的源(目的)地址是个常数,在重复过程中不被修改。 (DP=6:0300h~037Fh)将数据存储器单元 0300h 的内容复制 BLDD #300h,20h ; ;到数据存储器 0320h BLDD *+,#321h,AR3 ;执行前:ARP=2,(AR2)=0301h,(0301h)=0001h,(0321h)=000Fh ;执行后:ARP=3,(AR2)=0302h,(0301h)=0001h,(0321h)=0001h

7、清除控制位指令 CLRC 、 CLRC 指令将指定的控制位清除为 0。指定的控制位为下述控制位之一: C 状态寄存器 ST1 的进位位; 状态寄存器 ST1 的 RAM 配置控制位; CNF INTM 状态寄存器 ST0 的中断方式位; OVM 状态寄存器 ST0 的溢出方式位; SXM 状态寄存器 ST1 的符号扩展方式位; TC 状态寄存器 ST1 的测试/控制标志位; 状态寄存器 ST1 的 XF 引脚状态位。 XF CLRC TC ;将 ST1 的 TC 位清 0

注:用 LST 指令也可装入 ST0 和 ST1 寄存器。

8、从端口输入数据指令 IN 、 IN 指令从一个 I/O 单元读一个 16 位值到指定的数据存储器单元。IS 引脚变为低电平,用以指示访 问 I/O 口。STRB、RD 和 READY 时序与读外部存储器一样。 IN #7,1000h ;(DP=6)从口地址为 1000h 的外设读数据,并将数据存于数据 ;存储器单元 0307h 中 IN *,5h ;从口地址为 0005h 的外设读数据,并将数据存至当前辅助 ;寄存器数据所指定的数据存储器单元中 9、装载累加器的 LACC 指令 、 LACC 指令执行的操作是将指定的数据存储器单元的内容或一个 16 位常量左移后送入累加器。移 位时,低位填 0,高位在 SXM=1 时为符号扩展,在 SXM=0 时填 0。 ;(DP=8:0400~047Fh)将数据存储器单元 0405h 的内容左移 4 位之后 LACC 5,4 ;送到 ACC LACC *,4 ;(ARP=2,AR2=0305h)将数据存储器单元 0305h 的内容左移 4 位之 ;后送到 ACC LACC #1234h,2 ;将长立即数 1234h 左移 2 位之后送到 ACC 10、装载累加器低位并清零累加器高位指令 LACL 、 LACL 指令将被寻址数据存储器单元的内容或者被零扩展的 8 位常量装入累加器的低 16 位, 累加器 的高半部分填 0。数据被作为无符号的 16 位数来处理,而非二进制补码。无论 SXM 为何状态,该指令 的操作数都抑制符号扩展。 LACL #10h ;将 0010h 装载入 ACC LACL 1 ;(DP=6:0300~037Fh)将数据存储器单元 0301h 的内容装载入 ACC LACL *-,AR4 ;(ARP=0,AR0=0301h,(0301h)=2 将数据存储器单元 0301h 的内容 ;装载入 ACC,指令执行完后 AR0=0300h,ARP=4 11、修改辅助寄存器指令 MAR 和装载辅助寄存器指令 LAR 、 MAR 指令用来修改辅助寄存器 ARP 的值,该指令在直接寻址方式下相当于 NOP 指令。LAR 指令 用来将存储器的值装载入辅助寄存器。LAR 和 SAR 指令可在子程序调用或中断处理时装载和存储辅助 寄存器,从而实现在中断或子程序调用时上下文的保存。 MAR *,AR1 ;指定当前辅助寄存器为 AR1 MAR *+,AR5 ;将当前辅助寄存器(AR1)增 1,并向 ARP 装入 5 LAR AR1,5h ;(DP=4:0200~027Fh)将数据存储器地址 0205h 的内容 ;装载入 AR1 寄存器 LAR AR1,#50h ;将短立即数 0050h 装入 AR1 寄存器 LAR AR1,#1234h ;将长立即数 1234h 装入 AR1 寄存器

12、装载数据页指针指令 LDP 、 该指令将被寻址数据存储器单元的 9 位最低有效位或 9 位立即数转入状态寄存器 ST0 的数据页指针 DP。DP 也可由 LST 指令装入。 ;DP=5:地址 0280~02FFh LDP 5

13、装载状态寄存器指令 LST 、 。注意以下几点: LST 指令将被寻址数据存储器单元中的值装入指定的状态寄存器(ST0 或 ST1) ★ “LST #0”操作向 ARP 装入新值,但并不影响 ST1 寄存器中的 ARB 字段; ★ “LST #1”操作中,送入 ARB 的值也被送入 ARP; ★ 若在间接寻址方式下用一操作数来指定下一 AR 值,则该操作数将被忽略,与之替代的是将被 寻址数据存储器单元所含的 3 位最高有效位送入 ARP; ★ 状态寄存器中的保留位读出总为 1,写这些位不起作用; LST 指令用于子程序调用和中断后恢复状态寄存器。 MAR *,AR0 LAT #0,*,AR1 ;将辅助寄存器 AR0 所寻址的数据存储器单元内容送入状态 ;寄存器 ST0,但不包括 INTM 位。尽管指定了下一个 ARP ;值,但该值被忽略,指定的 ARP 也不送入 ARB ;(DP=6:0300~037Fh)将数据存储器单元 0300h 的内容装入 LST #1,0h ;ST1 14、装载 TREG 寄存器指令 LTD 、 LTD 指令将数据寄存单元的内容加载到 TREG。按 PM 状态位指定的方式,对乘积寄存器的内容进 行移位,并把移位后的值与 ACC 相加,结果放在 ACC 中。指定的数据存储单元的内容复制到地址加 1 的数据存储单元。数据传送功能可通过连续存储块的边界,但该指令移动数据的功能不能用于外部数据 寄存器或存储器映射的寄存器。若 LTD 被用于外部数据存储器,则功能与 LTA 相同。 ;DP=5:0280h~02ffh,PM=0:乘积不移位 LTD 123 执行前:(02FBh)=0022h,(02FCh)=0000h,(TREG)=0003h,(PREG)=000Fh, (ACC)=0005h 执行后:(02FBh)=0022h,(02FCh)=0022h,(TREG)=0022h,(PREG)=000Fh, (ACC)=0014h LTD *,AR3 ;(PM=0) 执行前:ARP=1,(AR1)=02FBh,(02FBh)=0022h,(02FCh)=0000h,(TREG)=0003h, (PREG)=000Fh ,(ACC)=0005h 执行后:ARP=3,(AR1)=02FBh,(02FBh)=0022h,(02FCh)=0022h,(TREG)=0022h, (PREG)=000Fh ,(ACC)=0014h 15、乘且累加并带数据移动指令 MACD 、 MACD 指令可以完成以下功能: ★ 按 PM 状态位指定的方式把先前的乘积移位,再与 ACC 的内容相加; ★ 把指定的数据存储单元的内容加载到 TREG; ★ 将存放在 TREG 寄存器中的数据存储单元值乘以指定的程序存储器地址中的内容; ★ 将指定的数据存储器地址中的内容复制到下一个数据存储器。 当重复执行 MACD 指令时,每重复一次包含在 PC 中的程序存储器地址加 1。 若使用间接寻址指定数据存储器地址,则每重复时就可以访问新的数据存储器地址; 若使用直接寻址方式,指定的数据存储器地址是常数,重复时不会对其进行修改。 若 MACD 寻址存储器映象寄存器或外部存储器作为数据存储器单元, MACD 功能与 MAC 相同, 则 数据移动不会发生。

MACD FF00h,0008h ;DP=6:0300h~037Fh;PM=0;CNF=1:B0 配置为程序存储器 执行前:数据存储器(0308h)=0023h,(0309h)=0018h,程序存储器(FF00h)=0004h,(TREG)=0045h, (PREG)=00458972h ,(ACC)=0723EC41h 执行后:数据存储器(0308h)=0023h,(0309h)=0023h,程序存储器(FF00h)=0004h,(TREG)=0023h, (PREG)=008Ch ,(ACC)=076975B3h 16、乘指令 MPY 、 T 寄存器内容和被寻址数据存储器单元的内容相乘, 其结果转入 P 寄存器中。 若使用短立即数寻址, 则 T 寄存器和带符号的 13 位常数相乘。无论 SXM 为何值,短立即数总是靠右对齐在相乘之前进行符号 扩展。 MPY 5 ;(DP=4:0200~027Fh)将数据存储器单元 0205h 的内容和 TREG 寄存器 ;中的内容相乘,结果保存在 PREG 中 MPY *,AR2 ;(ARP=1,AR1=040Dh)将数据存储器单元 040Dh 的内容和 TREG ;中的内容相乘,结果保留在 PREG 中,指令执行完后 ARP=2 ;立即数 0031h 和 TREG 中的内容相乘,结果保存在 PREG 中 MPY #031h 17、重复执行下一条指令 RPT 、 若使用直接或间接寻址,则被寻址的数据存储器单元中的值送入重复计数器(RPTC) ;若使用短立 即数寻址,则 8 位立即数送入 RPTC。紧接 RPT 后的那条指令被执行 n 次,n 为 RPTC 初值加 1。由于 在上下文切换时不能保存 RPTC 的值, 所以重复循环被认为是多周期指令, 它不能被中断。器件复位时, RPTC 指令清 0。 RPT #20 ;执行 NOP 指令 21 次 NOP 18、移位并存储累加器高位指令 SACH 、 SACH 指令将整个累加器复制到输出移位寄存器中,然后全部 32 位数左移 0~7 位,再将移位后数 值的高 16 位复制到数据存储器。在移位时,低位填 0,高位丢失,累加器内容不变。 SACH 10h,1 ;(DP=4:0200~027Fh)将 ACC 的值左移一位,高 16 位存至数据 ;存储器单元 020Ah 中 SACH *+,AR2 ;(ARP=1)将 ACC 的高 16 位存至 AR1 指向的数据存储器单元, ;操作完成之后 ARP=2 19、移位并存储累加器低位指令 SACH 、 SACH 指令将整个累加器复制到输出移位寄存器中,然后全部 32 位数左移 0~7 位,再将移位后数 值的低 16 位复制到数据存储器。在移位时,低位填 0,高位丢失,累加器内容不变。 SACL 10h,1 ;(DP=4:0200~027Fh)将 ACC 的值左移一位,低 16 位存至数据 ;存储器单元 020Ah 中 SACL *+,AR2 ;(ARP=1)将 ACC 的低 16 位存至 AR1 指向的数据存储器单元, ;操作完成之后 ARP=2 20、存储辅助寄存器指令 SAR 、 SAR 指令将指定的辅助寄存器(ARx)内容存入被寻址数据存储器单元。在间接寻址方式中,当 SAR 指令同时也要对当前辅助寄存器内容进行修改时,SAR 将在增、减辅助寄存器内容前将辅助寄存 器值存至数据存储器。 SAR AR0,30h ;(DP=6:0300~037Fh)将 AR0 的值存至数据存储器单元 0330h 中 SAR AR0,*+ ;将 AR0 的值存入辅助寄存器 AR0 指向的数据存储器单元,同 ;时 AR0 的值增 1 执行前:ARP=0,AR0=0400h,(0400h)=0000h 执行后:ARP=0,AR0=0401h,(0400h)=0400h

21、从当前辅助寄存器中减去立即数指令 SBRK 、 该 SBRK 指令从指定的辅助寄存器中减去 8 位立即数值,其结果替换原有的辅助寄存器中的内容。 减法在辅助寄存器算术单元(ARAU)中进行,立即数值被作为 8 位正数处理。所有辅助寄存器的算术 运算都是无符号的。 SBRK #20h 执行前:ARP=5,AR5=0050h; 执行后:ARP=5,AR5=0030h; 22、设置控制位指令 SETC 、 SETC 指令设置指定的控制位为 1。LST 指令也可用于装载 ST0 和 ST1 寄存器。指定的控制位为下 述控制位之一: C 状态寄存器 ST1 的进位位; CNF 状态寄存器 ST1 的 RAM 配置控制位; INTM 状态寄存器 ST0 的中断方式位; 状态寄存器 ST0 的溢出方式位; OVM SXM 状态寄存器 ST1 的符号扩展方式位; TC 状态寄存器 ST1 的测试/控制标志位; XF 状态寄存器 ST1 的 XF 引脚状态位。 SETC TC ;将 ST1 的 TC 位置 1

23、存储长立即数至数据存储器指令 SPLK 、 SPLK 指令将一个 16 位值写入任何一个数据存储器单元。 在直接寻址方式下使用该指令对数据存储 器单元赋值时,通常需要将数据页指针 DP 指向该数据存储器单元所在的数据页。 SPLK #30h,5 ;(DP=4)将数据 0030h 存至数据存储器单元 0205h 处 SPLK #1122h,*+,AR4 执行前:ARP=0,AR0=0400h,(0400h)=0000h 执行后:ARP=4,AR0=0401h,(0400h)=1122h 24、存储状态寄存器指令 SST 、 SST 指令将指定的状态寄存器 ST0 和 ST1 存入数据存储器。在直接寻址方式下,不管 ST0 中的数 据页指针(DP)为何值,指定的状态寄存器总是被存入第 0 页虽然处理器将自动访问第 0 页,但 DP 指 针不会被修改。在存储 ST0 和 ST1 时,DP 不被修改也存储。第 0 页内的特定存储单元在指令中给出, 在间接寻址方式中,存储地址从被选的辅助寄存器获取,从而指定的状态寄存器内容可被存储至数据存 储器中任意页内的地址中。 SST #0,60h ;自动访问数据页 0,将 ST0 的值存入数据存储器单元 0060h 中 25、表读指令 TBLR 、 TBLR 指令将程序存储单元中的一个字传送到指令指定的数据存储单元中。程序存储单元中的地址 由 ACC 的低 16 位指定。该指令先从程序存储单元读出,然后写入指定的数据存储单元。当和重复指令 (RPT)一同重复使用时,TBLR 成为单周期指令并且用 ACC(15:0)装载后的程序计数器每个周期增 1。 TBLR 6h ;(DP=4) 执行前: (ACC)=0023h,程序存储器(0023h)=0306h,数据存储器(0206h)=0075h 执行后: (ACC)=0023h,程序存储器(0023h)=0306h,数据存储器(0206h)=0306h TBLR *,AR7 执行前:ARP=0,(AR0)=0300h,(ACC)=0024,程序存储器(0024h)=0307h,数据存储 器(0300h)=0075h 执行后:ARP=7,(AR0)=0300h,(ACC)=0024,程序存储器(0024h)=0307h,数据存储 器(0300h)=0307h



推荐相关:

3 DSP原理与应用教案 指令系统

《DSP 原理与应用》教案(3)教学课时:6 学时 三、TMS320LF240x 寻址方式和指令系统 3.1 寻址方式 TMS320LF240x 指令集采用 3 种基本的存储器寻址方式:立即寻...


《DSP原理与应用》期末考试试题

《DSP原理与应用》期末考试试题_信息与通信_工程科技...( 2、 DSP 的寻址方式有七种,分别为立即寻址、...3. 答:BIO,XF 4、C54x DSP 的指令系统有 和 ...


《DSP原理与应用》期末考试试题

《DSP原理与应用》期末考试试题_工学_高等教育_教育...2、 DSP 的寻址方式有七种,分别为立即寻址、绝对...3. 答:BIO,XF 4、C54x DSP 的指令系统有 和 ...


2013级电气-《DSP原理与应用技术》教学大纲32-李凯丽

2013级电气-《DSP原理与应用技术》教学大纲32-李凯丽_工学_高等教育_教育专区...2、了解并掌握 TMS320C54x 的硬件结构、工作原理、寻址方式以及指令系统。 3...


《DSP原理及应用》电子教案

《DSP原理应用》电子教案_工学_高等教育_教育专区...(无线电技术与信息系统、 年级 4 专业 计算机应用...间接寻址 1、定义 2、单操作数间接寻址 1)指令...


北京化工大学《DSP原理与应用》期末考试考点答案整理与...

北京化工大学《DSP原理与应用》期末考试考点答案整理与汇总_工学_高等教育_教育专区...(RISC) 及 8 级流水线结构等设计技术和循环寻址方式等特殊寻址方式及复杂指令...


17秋北理工《DSP原理及应用》在线作业

17秋北理工《DSP原理应用》在线作业_远程、网络...TMS320C54XDSP 共有 129 条指令,分为()大类。...在采用双操作数的间接寻址方式时,要使用到一些辅助...


2006年6月通信系《DSP原理及应用》试卷B_答案

dsp原理dsp原理隐藏>> 通信系《 原理及应用》期末考试题 答案) 通信系《DSP ...试为每种寻址方式列举一 条指令(6 分) 答:直接寻址模式,mov #K16,DP;间接...


《DSP原理及应用》教学大纲-测控技术与仪器

《DSP原理应用》教学大纲-测控技术与仪器_工学_高等教育_教育专区。《DSP 原理...基本要求:了解 TMS32C2xx 系列数据寻址方式指令系统、伪指令的作用、命令控制...


09-10(1)T6级《DSP原理及应用(C2000系列)》教学大纲

《DSP 原理应用(C2000 系列)》教学大纲 原理及应用( 系列) 课程编号:080300...(三)TMS320C24X 寻址方式和指令系统 1、主要内容 (1)寻址方式 (3)典型指令...

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com