热搜关键词: 电路基础ADC数字信号处理封装库PLC

pdf

MSP430系列汇编指令集

  • 1星
  • 2015-02-26
  • 513.73KB
  • 需要1积分
  • 4次下载
标签: MSP430

MSP430

汇编指令

汇编指令

MSP430系列汇编指令集

MSP430
系列汇编指令集
简介
MSP430
的内核
CPU
结构是按照精简指令集和高透明指令的宗旨来设计的 ½用的指令有硬件执行的
内核指令和基于现有硬件结构的高效率的仿真指令 仿真指令½用内核指令及芯片额外配½的常数发生器
CG1 CG2
MSP430
指令的寻址方式包括立即寻址 索引寻址 符号寻址和绝对寻址 这四种方式均可用于源操
½数 而索引 符号和绝对寻址方式只可用于目的操½数 源操½数的指令集需占用代码存储器中的
1~3
个字
寻址方式
寻址方式
寄存器寻址
索引寻址
符号寻址
绝对寻址
间接寻址
间接自动增量
立即数寻址
源 操
½数
Yes
Yes
Yes
Yes
Yes
Yes
Yes
目标操
½数
Yes
Yes
Yes
Yes
MOV
MOV
MOV
MOV
MOV
MOV
MOV
Rs, Rd
x(Rn), y(Rm)
EDE,
TON1
&MEM, &TCDAT
@Rn, y(Rm)
@Rn+, Rm
#x,
TON1
As
00
01
01
01
10
11
11
Ad
0
1
1
1
寄存器内容是操½数
(Rn+x)指向操½数 x
储存在下一个字中
(PC+x)指向操½数 x
储存在下一个字中
跟随在指令后的字包含绝对地址
Rn
用½指向操½数的指针
Rn
用½指向操½数的指针,其后
Rn
被增量
跟随在指令后的字包含立即数
x
½用间
接自动增量模式
@PC+
Rn n=0~15
寻址方式
寄存器寻址
索引寻址
符号寻址
绝对寻址
间接寻址
间接自动增量
立即数寻址
Rs
源寄存器
Rd
目标寄存器
R11
6(R6)
TON1
&TCDAT
Tab(R6)
R11
TON1
R10
à
R11
M(2+R5)
à
M(6+R6)
M(EDE)
à
M(TON1)
M(MEM)
à
M(TCDAT)
M(R10)
à
M(Tab+R6)
M(R10)
à
R11,
R10+2
#0AAH
à
M(TON1)
½
MOV
MOV
MOV
MOV
MOV
MOV
MOV
R10,
2(R5),
EDE,
&MEM,
@R10,
@R10+,
#0AAH,
àR10
指令概述
½
51
条指令
dst
src, dst
src, dst
src, dst
src, dst
src, dst
src, dst
dst
dst
dst
½
状 态 ½
V
N Z
*
*
*
0
-
-
0
-
C
ADC[.W]; ADC.B
ADD[.W]; ADD.B
ADDC[.W]; ADDC.B
AND[.W]; AND.B
BIC[.W]; BIC.B
BIS[.W]; BIS.B
BIT[.W]; BIT.B
BR
CALL
CLR[.W];CLR.B
CLRC
CLRN
CLRZ
CMP[.W];CMP.B
dst + C -> dst
src + dst -> dst
src + dst + C -> dst
src .and. dst -> dst
.not.src .and. dst -> dst
src .or. dst -> dst
src .and. dst
½移到
PC + 2 ->堆栈, dst -> PC
清除目的操½数
清除进½½
清除负½
清除零½
dst - src
* *
*
* *
*
* *
*
* *
*
-
-
-
-
-
-
* *
*
-
-
-
-
-
-
-
-
-
-
-
-
-
-
0
-
0
-
-
-
-
0
-
*
*
*
*
dst
DADC[.W];DADC.B
DADD[.W];DADD.B
DEC[.W];DEC.B
DECD[.W];DECD.B
DINT
EINT
INC[.W];INC.B
INCD[.W];INCD.B
INV[.W];INV.B
JC/JHS
JEQ/JZ
JGE
JL
JMP
JN
JNC/JLO
JNE/JNZ
MOV[.W];MOV.B
NOP
POP[.W];POP.B
PUSH[.W];PUSH.B
RETI
dst
src, dst
dst
dst
dst + C -> dst (十进制)
src + dst + C -> dst (十进制)
dst - 1 -> dst
dst - 2 -> dst
禁止中断
½½中断
dst + 1 -> dst
目的操½数增
1
dst + 2 -> dst
目的操½数增
2
目的操½数求反
进½½被½时½移到标号语句
零½被½时½移到标号语句
N .xor. V = 0
时½移到标号语句
N .xor. V = 0
时½移到标号语句
无条件½移到标号语句
负½被½时½移到标号语句
进½½复½时½移到标号语句
零½复½时½移到标号语句
src -> dst
空操½
项目从堆栈弹出,
SP + 2 -> SP
SP – 2 -> SP , src -> @SP
从中断返回
TOS -> SR SP + 2 -> SP
TOS -> PC SP + 2 -> SZP
从子程序返回
TOS -> SR SP + 2 -> SP
算术左移
带进½½左移
算术右移
带进½½右移
从目的操½数减去借½
½进½½
½负½
½零½
dst + .not. src + 1 -> dst
dst + .not. src + C -> dst
交换字节
dst
½
7 ->
½
8......½ 15
测试目的操½数
*
*
*
*
-
-
*
*
*
-
-
-
-
-
-
-
-
-
-
-
-
*
*
*
*
-
-
*
*
*
-
-
-
-
-
-
-
-
-
-
*
*
*
*
-
-
*
*
*
-
-
-
-
-
-
-
-
-
-
-
-
-
*
*
*
*
-
-
*
*
*
-
-
-
-
-
-
-
-
-
-
-
-
dst
dst
dst
标号
标号
标号
标号
标号
标号
标号
标号
src, dst
dst
src
-
-
-
*
*
0
*
*
-
-
-
*
*
-
0
0
*
-
-
*
*
*
*
*
-
1
-
-
-
*
*
*
*
*
-
-
1
-
-
*
*
*
*
*
1
-
-
*
*
-
*
1
*
RET
RLA[.W];RLA.B
RLC[.W];RLC.B
RRA[.W];RRA.B
RRC[.W];RRC.B
SBC[.W];SBC.B
SETC
SETN
SETZ
SUB[.W];SUB.B
SUBC[.W];SUBC.B
SWAP
SXT
TST[.W];TST.B
dst
dst
dst
dst
dst
src, dst
src, dst
dst
dst
dst
* *
* *
-
-
* *
*
*
*
*
XOR[.W];XOR.B
src, dst
src .xor. dst -> dst
注 状态½中
*
表示½响
-
表示不½响
0
表示清零
1
表示½½
指令格式
双操½数指令
l
操½码域
4
个域组成 共有
16
½代码
4bit
操½码
l
l
l
源域
字节操½识别符
目的域
6bit
1bit
5bit
源寄存器
+ As
B/W
目的寄存器
+ Ad
8
7
Ad
(4
½寄存器数
0~15 + 2
个寻址½)
B/W=1
以字节½式执行
B/W=0
以字½式执行
(4
½寄存器数
0~15 + 1
个寻址½)
6
B/W
5
4 3
As
目的寄存器
0
15
操½码
12 11
源寄存器
单操½数指令
2
个域组成 共有
16
½代码
l
操½码域
9bit
操½码
l
字节操½识别符
1bit
B/W
(B/W=1
以字节½式执行
B/W=0
以字½式执行
l
目的域
6bit
目的寄存器
+ Ad (4
½寄存器数
0~15 + 1
个寻址½)
15
12
7
6
5
4 3
0
0
0
0
1
x
x
x
x
x
x B/W
Ad
目的寄存器
条件½移和无条件½移指令
l
操½码域
6bit
l
½移偏½域
10bit
15
0
13
1
12
x
2
个域组成 共有
16
½代码
B/W
10
x
(B/W=1
以字节½式执行
B/W=0
以字½式执行
x
0
x
9
0
x
x
x
x
x
x
x
x
x
操½码
½移码
符号
条件½移½指令可½移到相对于½前地址范围在
–512 ~ +512
字之间的地址
指令集说明(
51
条指令以字母为序
)
ADC[.W]
语法
操½
仿真
说明
状态½
将进½加至目的操½数
ADC
dst
ADC.W
dst
dst + C -> dst
ADDC
#0.dst
进½
C
加至目的操½数 操½数以前的内容丢失
N
结果为负时½½ 为正时复½
Z
结果为零时½½ 其它情况时复½
C dst
0FFFFH
增至
0000
时½½ 其它情况复½
V
发生算术溢出时½½ 其它情况时复½
OscOff CPUOff
GIE
不受½响
R13
指向的
16
½数值加到
R12
指向的
32
½数值
ADD
@R13,
0(R12)
;加 LSDs
ADC
2(R12)
;
进½加至
MSD
将进½加至目的操½数
ADC.B
dst
dst + C -> dst
ADDC.B
#0.dst
进½
C
加至目的操½数 操½数以前的内容丢失
N
结果为负时½½ 为正时复½
Z
结果为零时½½ 其它情况时复½
C dst
0FFFFH
增至
0000
时½½ 其它情况复½
V
发生算术溢出时½½ 其它情况时复½
方式½
例子
ADC.B
语法
操½
仿真
说明
状态½
方式½
例子
OscOff
CPUOff
GIE
不受½响
R13
指向的
8
½数值加到
R12
指向的
16
½数值
ADD.B
@R13,
0(R12)
;加 LSDs
ADC.B
1(R12)
;
进½加至
MSD
源操½数加至目的操½数
ADD
src,
dst
ADD.W
src,
dst
src + dst
-> dst
源操½数加至目的操½数 源操½数不受½响 目的操½数以前的内容丢失
N
结果为负时½½ 为正时复½
Z
结果为零时½½ 其它情况时复½
C
结果产生进½时½½ 否则复½
V
发生算术溢出时½½ 其它情况时复½
OscOff CPUOff
GIE
不受½响
R5
加上
10
由一个进½½程序 ½移 到
TONI
ADD
#10,
R5
;
JC
TONI
;产生进½
......
;无进½
源操½数加至目的操½数
ADD.B
src,
dst
src + dst
-> dst
源操½数加至目的操½数 源操½数不受½响 目的操½数以前的内容丢失
N
结果为负时½½ 为正时复½
Z
结果为零时½½ 其它情况时复½
C
结果产生进½时½½ 否则复½
V
发生算术溢出时½½ 其它情况时复½
OscOff CPUOff
GIE
不受½响
R5
加上
10
由一个进½½程序 ½移 到
TONI
ADD
#10,
R5
;
10
加至
R5
的½½字节
JC
TONI
;若(R5)>=246[0AH + 0F6H]
则产生进½
......
;无进½
ADD[.W]
语法
操½
说明
状态½
方式½
例子
ADD.B
语法
操½
说明
状态½
方式½
例子
ADDC[.W]
源 操 ½ 数 加 至 目 的 操 ½ 数
语法
ADDC
src,
dst
ADDC.W
src,
dst
操½
src + dst + C -> dst
说明
源操½数和进½
C
加至目的操½数 源操½数不受½响 目的操½数以前的内容丢失
状态½
N
结果为负时½½ 为正时复½
Z
结果为零时½½ 其它情况时复½
C
结果的
MSB
产生进½时½½ 否则复½
V
发生算术溢出时½½ 其它情况时复½
方式½
OscOff CPUOff
GIE
不受½响
例子
R13
指向的
32
½数值加至
R13
中的指针之上
11
个字(20/2
+2/2)的 32
½计数器
ADD
@R13+,
20(R13)
;无进½加 LSDs
ADDC @R13+,
20(R13)
;
进½加
MSDs
......
;
ADDC.B
源操½数加至目的操½数
语法
ADDC.B
src,
dst
操½
src + dst + C -> dst
说明
源操½数和进½
C
加至目的操½数 源操½数不受½响 目的操½数以前的内容丢失
状态½
N
结果为负时½½ 为正时复½
Z
结果为零时½½ 其它情况时复½
C
结果的
MSB
产生进½时½½ 否则复½
V
发生算术溢出时½½ 其它情况时复½
OscOff CPUOff
GIE
不受½响
R13
指向的
24
½数值加至
R13
中的指针之上
11
个字的
24
½计数器
ADD.B
@R13+,
10(R13)
;
进½加
LSDs
ADDC.B
@R13+,
10(R13)
;带进½加中间½
ADDC.B
@R13+,
10(R13)
;带进½加 MSDs
;
方式½
例子
......
AND.[W]
源 操 ½ 数 和 目 的 操 ½ 数 与
语法
操½
说明
状态½
方式½
例子
AND
src,
dst
AND.W
src,
dst
src .AND. dst
-> dst
源操½数和目的操½数逻辑与 结果放入目的操½
N
结果为
MSB
1
时½½ 为
0
时复½
Z
结果为零时½½ 其它情况时复½
C
结果不为
0
时½½ 其它情况时复½(=
.NOT. Zero)
V
复½
OscOff CPUOff
GIE
不受½响
R5
中被½的½用½
TOM
寻址字的一个标志(#0AA55H) 如果结果为
0
MOV
#0AA55H,
R5
;将标志装入 R5
寄存器
AND
R5,
TOM
;TOM
R5
寻址标志字
JZ
TON1
;
......
;结果为非 0
;或
程序½到
TON1
AND.B
语法
操½
说明
状态½
方式½
例子
AND
#0AA55H, TOM
JZ
TON1
源操½数和目的操½数与
AND.B
src,
dst
src .AND. dst
-> dst
源操½数和目的操½数逻辑与 结果放入目的操½
N
结果为
MSB
1
时½½ 为
0
时复½
Z
结果为零时½½ 其它情况时复½
C
结果不为
0
时½½ 其它情况时复½(=
.NOT. Zero)
V
复½
OscOff CPUOff
GIE
不受½响
标志½#0A5H 和½½字节的
TOM
逻辑与 如果结果为
0
程序½移到标号
TON1
AND. B
#0A5H,
TOM
;
R5
标记½½字节
TOM
JZ
......
TON1
;
;结果为非 0
BIC[.W]
语法
操½
说明
状态½
0
目的操½数的各½
BIC
src,
dst
BIC.W
src,
dst
.NOT. src .AND. dst
-> dst
求反后的源操½数和目的操½数逻辑与 结果放入目的操½ 源操½数不变
N
不½响
Z
不½响
C
不½响
展开预览

猜您喜欢

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×