MSP430PDF中文版PDF资料.docx

上传人:b****5 文档编号:5799788 上传时间:2023-01-01 格式:DOCX 页数:23 大小:22.86KB
下载 相关 举报
MSP430PDF中文版PDF资料.docx_第1页
第1页 / 共23页
MSP430PDF中文版PDF资料.docx_第2页
第2页 / 共23页
MSP430PDF中文版PDF资料.docx_第3页
第3页 / 共23页
MSP430PDF中文版PDF资料.docx_第4页
第4页 / 共23页
MSP430PDF中文版PDF资料.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

MSP430PDF中文版PDF资料.docx

《MSP430PDF中文版PDF资料.docx》由会员分享,可在线阅读,更多相关《MSP430PDF中文版PDF资料.docx(23页珍藏版)》请在冰豆网上搜索。

MSP430PDF中文版PDF资料.docx

MSP430PDF中文版PDF资料

指令集描述P(220—257)

*DECX.A目的操作数减1

*DECX.[W]目的操作数减1

*DECX.B目的操作数减1

语法DECV.Adst

DECXdst或DECX.Wdst

DECX.Bdst

操作dst–1→dst

仿真SUBX.A#1,dst

SUBX#1,dst

SUBX.B#1,dst

说明目的操作数减1以前的内容丢失

状态位N:

结果为负时置位为正时复位

Z:

dst包含1时置位其他情况时复位

C:

dst包含0时置位其他情况时复位

V:

产生算术溢出时置位其他情况时复位

目的操作数的初始值为08000H时置位其他情况时复位

方式位OscOff(晶振控制位),CPUOff(CPU控制位)和GIE(中断标志位)不受影响

例子目的地址操作数减一

DECX.ATONI;TONI减一

*DECDX.A目的操作数减2

*DECDX.[W]目的操作数减2

*DECDX.B目的操作数减2

语法DECDX.Adst

DECDXdstorDECDX.Wds

DECDX.Bdst

操作dst-2->dst

仿真SUBX.A#2,dst

SUBX#2,dst

SUBX.B#2,dst

说明目的操作数减2以前的内容丢失

状态位N:

结果为负时置位为正时复位

Z:

dst包含2时置位其他情况时复位

C:

dst包含0或1时置位其他情况时复位

V:

dst产生算术溢出时置位其他情况时复位

目的操作数的初始值为08001H或08000H时置

方式位OscOff,CPUOff和GIE不受影响

例子目的地址操作数减二

DECDX.ATONI;DecrementTONI

 

*INCX.A目的操作数加1

*INCX.[W]目的操作数加1

*INCX.B目的操作数加1

语法INCX.Adst

INCXdstorINCX.Wdst

INCX.Bdst

操作dst+1→dst

仿真ADDX.A#1,dst

ADDX#1,dst

ADDX.B#1,dst

说明目的操作数加1以前的内容丢失

状态位N:

结果为负时置位为正时复位

Z:

dst包含0FFFFFH时置位其他情况时复位

dst包含0FFFFH时置位其他情况时复位

dst包含0FFFH时置位其他情况时复位

C:

dst包含0FFFFFH时置位其他情况时复位

dst包含0FFFFH时置位其他情况时复位

dst包含0FFFH时置位其他情况时复位

V:

dst包含07FFFH时置位其他情况时复位

dst包含07FFFH时置位其他情况时复位

dst包含07FH时置位其他情况时复位

方式位OscOff,CPUOff和GIE不受影响

例子目的地址操作数加一

INCX.ATONI;IncrementTONI(20-bits)

*INCDX.A目的操作数加2

*INCDX.[W]目的操作数加2

*INCDX.B目的操作数加2

语法INCDX.Adst

INCDXdstorINCDX.Wdst

INCDX.Bdst

操作dst+1→dst

仿真ADDX.A#2,dst

ADDX#2,dst

ADDX.B#2,dst

说明目的操作数加2以前的内容丢失

状态位N:

结果为负时置位为正时复位

Z:

dst包含0FFFFEH时置位其他情况时复位

dst包含0FFFEH时置位其他情况时复位

dst包含0FEH时置位其他情况时复位

C:

dst包含0FFFFEH或0FFFFFH时置位其他情况时复位

dst包含0FFFEH或0FFFFH时置位其他情况时复位

dst包含0FEH或0FFH时置位其他情况时复位

V:

dst包含07FFFEH或0FFFFH时置位其他情况时复位

dst包含07FFEH或0FFFH时置位其他情况时复位

dst包含07EH或0FH时置位其他情况时复位

方式位OscOff,CPUOff和GIE不受影响

例子目的地址操作数加二

INCDX.BLEO;IncrementLEObytwo

*INVX.A目的操作数求反

*INVX.[W]目的操作数求反

*INVX.B目的操作数求反

语法INVX.Adst

INVXdstorINVX.Wdst

INVX.Bdst

操作.NOT.dst→dst

仿真XORX.A#0FFFFFh,dst

XORX#0FFFFh,dst

XORX.B#0FFh,dst

说明目的操作数取反以前的内容丢失

状态位N:

结果为负时置位为正时复位

Z:

dst包含0FFFFFH时置位其他情况时复位

dst包含0FFFFH时置位其他情况时复位

dst包含0FFH时置位其他情况时复位

C:

结果不为零时置位其他情况时复位(=.NOT.Zero)

V初始目的操作数为负时置位其他情况时复位

方式位OscOffCPUOff和GIE不受影响

例子R5求反

INVX.AR5;R5求反

MOVX.A源操作数移至目的操作数

MOVX.[W]源操作数移至目的操作数

MOVX.B源操作数移至目的操作数

语法MOVX.Asrc,dst

MOVXsrc,dstorMOVX.Wsrc,dst

MOVX.Bsrc,dst

操作src→dst

说明源操作数被移至目的操作数源操作数不受影响目的操作数以前的内容丢失

状态位N:

不影响状态位

Z:

不影响状态位

C:

不影响状态位

V:

不影响状态位

方式位OscOff,CPUOff和GIE不受影响

例子移动18000H到EDE

MOVX.A#018000h,&EDE;Move18000htoEDE

例子地起码表EDE(字数据)的内容被复制到表TOM地址表的长度为030H

MOV#EDE,R10;准备指针

LoopMOV@R10+,TOM-EDE-2(R10);将R10中的指针用于两表

DECR9;计数器减1

JNZLoop;计数器<>0继续

........;完成

例子地起码表EDE(字数据)的内容被复制到表TOM地址表的长度为020H

MOV#EDE,R10;准备指针

MOV#020H,R9;计数器

LoopMOV@R10+,TOM-EDE-2(R10);将R10中的指针用于两表

DECR9;计数器减1

JNZLoop;计数器<>0继续

........;完成

28种MOVX寻址方式中的10种,一个指令可以使用MOVX,这样可以节省二个字节编码周期。

列举了以下组合:

MOVX.ARsrc,RdstMOVARsrc,Rdst;寄存器/寄存器

MOVX.A#imm20,RdstMOVA#imm20,Rdst;直接/寄存器

MOVX.A&abs20,RdstMOVA&abs20,Rdst;绝对/寄存器

MOVX.A@Rsrc,RdstMOVA@Rsrc,Rdst;间接/寄存器

MOVX.A@Rsrc+,RdstMOVA@Rsrc+,Rdst;间接,自动/寄存器

MOVX.ARsrc,&abs20MOVARsrc,&abs20;寄存器/绝对

以下4种仅有16位的地址指针是足够的

MOVX.Az20(Rsrc),RdstMOVAz16(Rsrc),Rdst;指标寻址/寄存器

MOVX.ARsrc,z20(Rdst)MOVARsrc,z16(Rdst);寄存器/指标寻址

MOVX.Asymb20,RdstMOVAsymb16,Rdst;符号寻址/寄存器

MOVX.ARsrc,symb20MOVARsrc,symb16;寄存器/符号寻址

POP[.W]字从堆栈弹出到目的操作数(16bit)

语法POPdst

操作@SP->dst,SP+2->SP

仿真MOV@SP+,dst或MOV.W@SP+,dst

说明堆栈指针(TOS)指向的栈区字移至目的操作数随后堆栈指针加2

状态位不影响状态位

例子从堆栈恢复R7和状态寄存器的内容

POPR7;恢复R7

POPSR;恢复状态寄存器

注意:

系统堆栈指针SP通常加2并与字节后缀无关这是强制性的因为系统堆栈指针不仅用于POP指令还可用于RETI指令

POP.B字节从堆栈弹出到目的操作数(8bit)

语法POP.Bdst

操作@SP->dst,SP+2->SP

仿真MOV.B@SP+,dst

说明堆栈指针(TOS)指向的栈区字移至目的操作数随后堆栈指针加2

状态位不影响状态位

例子

(1)从堆栈恢复RAM字节LEO的内容

POP.BLEO;堆栈的低位字节移至LEO

(2)从堆栈恢复R7内容

POP.BR7;堆栈的低位字节移至R7R7的高位字节为00H

(3)从堆栈恢复状态寄存器和R7指向的存储器的内容

POP.B0(R7);堆栈的低位字节移至R7指向的字节

;Ex1:

R7=203HMem(R7)=系统堆栈的低字节

;Ex2:

R7=20AHMem(R7)=系统堆栈的低字节

POPSR

注意:

系统堆栈指针SP通常加2并与字节后缀无关这是强制性的因为系统堆栈指针不仅用于POP指令还可用于RETI指令

PUSH[.W]将字压进堆栈

语法PUSHsrc或PUSH.Wsrc

操作SP-2->SP,src->@SP

说明堆栈指针减2然后源操作数移至由此指针(TOS)寻址的RAM字

状态位N不影响

Z不影响

C不影响

V不影响

方式位OscOffCPUOff和GIE不受影响

例子状态寄存器和R8的内容保存在堆栈

PUSHSR;保存状态寄存器

PUSHR8;保存R8

注意:

系统堆栈指针SP通常减2并与字节后缀无关这是强制性的因为系统堆栈指针不仅用于PUSH指令还可用于中断服务程序

PUSH.B将字节压进堆栈

语法PUSH.Bsrc

操作SP-2->SP,src->@SP

说明堆栈指针减2然后源操作数移至由此指针(TOS)寻址的RAM字

状态位N不影响

Z不影响

C不影响

V不影响

方式位OscOffCPUOff和GIE不受影响

例子外设TCDAT的内容保存在堆栈

PUSH.B&TCDAT;保存8位外设模块的数据

;寻址TCDAT进栈

注意系统堆栈指针SP通常减2并与字节后缀无关这是强制性的因为系统堆栈指针不仅用于PUSH

指令还可用于中断服务程序

 

RLA[.W]算术左移(字)

语法RLAdst或RLA.Wdst

操作C<-MSB<-MSB-1...LSB+1<-LSB<-0

仿真ADDdst,dst

说明目的操作数左移一位MSB成为进位位CLSB填0RLA指令可当作符号乘2在执行该操作前如果dst大于等于04000H且小于0C000H则产生溢出结果会改变符号

状态位N结果为负时置位为正时复位

Z结果为零时置位其它情况时复位

C从MSB获取

V如果产生算术溢出即初始值为04000H<=dst<0C000H时置位其它情况时复位

方式位OscOff,,CPUOff和GIE不受影响

例子R7乘以4

RLAR7;R7左移(x2)----由ADDR7,R7仿真

RLAR7;R7左移(x4)----由ADDR7,R7仿真

注意替换RLA

汇编语言不识别指令RLA@R5+必须将它替换成ADD@R5+,-2(R5)

RLA.B算术左移(字节)

语法RLA.Bdst

操作C<-MSB<-MSB-1...LSB+1<-LSB<-0

仿真ADD.Bdst,dst

说明目的操作数左移一位MSB成为进位位CLSB填0RLA指令可当作符号乘2在执行该操作前如果dst大于等于040H且小于0C0H则产生溢出结果会改变符号

状态位N结果为负时置位为正时复位

Z结果为零时置位其它情况时复位

C从MSB获取

V如果产生算术溢出即初始值为040H<=dst<0C0H时置位其它情况时复位

方式位OscOff,CPUOff和GIE不受影响

例子R7的低位字节乘以4

RLA.BR7;R7左移(x2)----由ADD.BR7,R7仿真

RLA.BR7;R7左移(x4)----由ADD.BR7,R7仿真

注意替换RLA

汇编语言不识别指令RLA.B@R5+必须将它替换成ADD.B@R5+,-1(R5)

RLC[.W]通过进位位左移(字)

语法RLCdst或RLC.Wdst

操作C<-MSB<-MSB-1...LSB+1<-LSB<-0

仿真ADDCdst,dst

说明目的操作数左移一位进位位C移入LSBMSB移入进位位C

状态位N结果为负时置位为正时复位

Z结果为零时置位其它情况时复位

C从MSB获取

V如果产生算术溢出时置位其它情况时复位

03FFFFH

方式位OscOffCPUOff和GIE不受影响

例子

(1)R5左移一位

RLCR5;(R5x2)+CR5

(2)输入P0IN.1的信息将被移入R5的LSB

BIT.B#2,&P0IN;信息-‡进位

RLCR5;进位=P0IN.1R5的LSB

注意:

替换RLC汇编语言不识别指令RLC@R5+必须将它替换成ADDC@R5+,-2(R5)

RLC.B算术左移(字节)

语法RLC.Bdst

操作C<-MSB<-MSB-1...LSB+1<-LSB<-0

仿真ADDC.Bdst,dst

说明目的操作数左移一位进位位C移入LSBMSB移入进位位C

状态位N结果为负时置位为正时复位

Z结果为零时置位其它情况时复位

C从MSBB获取

V如果产生算术溢出时置位其它情况时复位

03FFH

方式位OscOffCPUOff和GIE不受影响

例子

(1)MEM(LEO)的内容左移一位

RLC.BLEO;Mem(LEO)x2+CMem(LEO)

(2)输入P0IN.1的信息将被移入R5的LSB

BIT.B#2,&P0IN;信息-‡进位

RLC.BR5;进位=P0IN.1R5的LSBR5的高字节复位

注意:

替换RLC汇编语言不识别指令RLC.B@R5+必须将它替换成ADD.B@R5+,-1(R5)

RRA[.W]算术右移(寄存器内容20bit)

语法RRAdst或RRA.Wdst

操作MSB->MSB,MSB->MSB-1,MSB-1->MSB–2...LSB+1->LSB,LSB->C

说明目的操作数右移一位MSB移入MSBMSB移入MSB–1LSB+1移入LSB

状态位N结果为负时置位为正时复位

Z结果为零时置位其它情况时复位

C从LSB获取

V复位

方式位OscOffCPUOff和GIE不受影响

例子R5右移一位MSB保留原来的值它相当于算术除2

RRAR5;R5/2‡R5

R5的值乘以0.75(0.5x0.25)

PUSHR5;用堆栈暂时保存R5

RRAR5;R5x0.5‡R5

ADD@SP+,R5;R5x0.5+R5=1.5xR5‡R5

RRAR5;(1.5xR5)x0.5=0.75xR5‡R5

......

或者

RRAR5;R5x0.5‡R5

PUSHR5;用堆栈暂时保存R5

RRA@SP;TOSx0.5=0.5xR5x0.5=0.25xR5‡TOS

ADD@SP+,R5;R5x0.5+R5x0.25=0.75xR5‡R5

......

RRA.B算术右移(8bit)

语法RRA.Bdst

操作MSB->MSB,MSB->MSB-1,MSB-1->MSB–2...LSB+1->LSB,LSB->C

说明目的操作数右移一位MSB移入MSBMSB移入MSB–1LSB+1移

LSB

状态位N结果为负时置位为正时复位

Z结果为零时置位其它情况时复位

C从LSB获取

V复位

方式位OscOffCPUOff和GIE不受影响

例子R5低字节右移一位MSB保留原来的值它相当于算术除2

RRA.BR5;R5/2‡R5操作仅针对低字节R5高字节复位

;R5的值(仅低位字节)乘以0.75(0.5x0.25)

PUSH.BR5;用堆栈暂时保存R5

RRA.BR5;R5x0.5‡R5

ADD.B@SP+,R5;R5x0.5+R5=1.5xR5‡R5

RRA.BR5;(1.5xR5)x0.5=0.75xR5‡R5

......

;或者

RRA.BR5;R5x0.5‡R5

PUSH.BR5;用堆栈暂时保存R5

RRA.B@SP;TOSx0.5=0.5xR5x0.5=0.25xR5‡TOS

ADD.B@SP+,R5;R5x0.5+R5x0.25=0.75xR5‡R5

RRC[.W]通过进位右移(16bit内容)

语法RRCdst或RRC.Wdst

操作C‡MSB->MSB–1...LSB+1->LSB->C

说明目的操作数右移一位进位位C移入MSBLSB移入进位位C

状态位N结果为负时置位为正时复位

Z结果为零时置位其它情况时复位

C从LSB获取

V初始目的操作数为正且初始进位位被置时置位其他情况复位

方式位OscOffCPUOff和GIE不受影响

例子R5右移一位MSB装入1

SETC;为MSB准备进位

RRAR5;R5/2+8000H‡R5

RRC.B通过进位右移

语法RRC.Bdst

操作C‡MSB->MSB–1...LSB+1->LSB->C

说明目的操作数右移一位进位位C移入MSBLSB移入进位位C

状态位N结果为负时置位为正时复位

Z结果为零时置位其它情况时复位

C从LSB获取

V初始目的操作数为正且初始进位位被置时置位其他情况复位

方式位OscOffCPUOff和GIE不受影响

例子R5右移一位MSB装入1

SETC;为MSB准备进位

RRA.BR5;R5/2+80H‡R5使用R5的低字节

SBC[.W]从目的操作数减去借位(8bit)

语法SBCdst或SBC.Wdst

操作dst+0FFFFH+C->dst

仿真SUBC#0,dst

说明进位C加到减1后的目的操作数目的操作数原来的内容丢失

状态位N结果为负时置位为正时复位

Z结果为零时置位其它情况时复位

Cdst从0000减至0FFFFH时复位其它情况时置位

V初始C=0且减至dst=08000H时置位

方式位OscOffCPUOff和GIE不受影响

例子从R12指向的32位数值中减去R13指向的16位数值

SUB@R13,0(R12);减LSDs

SBC2(R12);从MSD中减去进位

注意:

借位可视为非进位借位

可视为一种非进位借位进位位

是0

否1

SBC.B从目的操作数减去借位

语法SBC.Bdst

操作dst+0FFF+C->dst

仿真SUBC.B#0,dst

说明进位C加到减1后的目的操作数从目的操作数中减去借位目的操作数原来的内容丢失

状态位N结果为负时置位为正时复位

Z结果为零时置位其它情况时复位

Cdst从0000减至0FFFFH时复位其它情况时置位

V初始C=0且减至dst=080H时置位

方式位OscOffCPUOff和GIE不受影响

例子从R12指向的16位数值中减去R13指向的8位数值

SUB.B@R13,0(R12);减LSDs

SBC.B1(R12);从MSD中减去进位

注意:

借位可视为非进位

借位可视为一种非进位借位进位位

是0

否1

SUB[.W]从目的操作数减去源操作数

语法SUBsrc,dst或SUB.Wsrc,dst

操作dst+.NOT.src+1->dst或dst-src->dst

说明从目的操作数中减去源操作数方法是将源操作数求反再加上常数1源操作数不受影响目

的操作数以前的内容丢失

状态位N结果为负时置位为正时复位

Z结果为零时置位其它情况时复位

C结果的MSB产生进位时置位否则复位无借位时置1有借位时复位

V发生算术溢出时置位其它情况时复

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 图表模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1