当前位置:
文档之家› MC9S12XS128指令集
MC9S12XS128指令集
MC9S12XD指令集(字母检索表)
助记符
功能
操作
ABA
把寄存器B的值加到寄存器A
(A)+(B)--->B
ABX
把寄存器B的值加到寄存器B
(B)+(X)--->X
ABY
把寄存器B的值加到寄存器Y
(B)+(Y)---->Y
ADCA
带进位加法,结果存放在寄存器A
(A)+(M)+ C ---->A
ADCB
SBA
寄存器A的值减去B的值,结果放在寄存器A
(A)-(B)---->A
SBCA
带借位减法,结果放在寄存器A
(A)-(M)-C-->A
SBCB
带借位减法,结果放在寄存器B
(B)-(M)-C--->B
SEC
寄存器设置
C=1
SEI
寄存器设置
I=1
SEV
寄存器设置
V=1
STAA
将寄存器A中内容送入内存单元
DEY
寄存器Y减1
(Y)-$0001--->Y
EDIV
32位除以16位无符号除法
()/()—>余数D
EDVIS
32位除以16位有符号除法
()/()—>余数D
EMUL
16位无符号乘法
(X)*(Y)—>Y:D
EMLTLS
16位有符号乘法
(X)*(Y)—>Y:D
EORA
寄存器A与内存相“异或”
(A)^(M)--->A
(B)&(M)
BLE
若小于,跳转(R>M),有符号跳转
Z|(N^V)=1
BLO
若小于,跳转(R<M),无符号跳转
C=1
BLS
若小于或等于,跳转(R<=M),无符号跳转
C+Z=1
BLT
若小于,跳转,(R<=M),有符号跳转
N|V=1
BMI
若为负,转跳,简单转跳
N=1
BNE
若不相等,转跳,简单转跳
Z=0
(M:M+1)--->(A:B)
LDS
将数据载入寄存器SP
(M:M+1)--->XH:XL
LDX
将数据载入寄存器X
(M:M+1)--->XH:XL
LDY
将数据载入寄存器Y
(M:M+1)--->YH:YL
LEAS
有效地址装入堆栈
有效地址--->SP
LEAX
有效地址装入寄存器X
有效地址--->X
LEAY
PULX
寄存器X出栈
(M(SP):M (SP+1))---->X (SP)+2---->SP
PULY
寄存器Y出栈
(M(SP):M (SP+1))----->Y (SP)+2----->SP
ROL
循环左移
C<---########<---0
ROLA
ROLB
ROR
循环右移
-0-->########--->C
C|Z=0
LBHS
若大于或等于,跳转(R>=M),无符号跳转
C=0
LBLE
若小于或等于,跳转(R<=M),有符号
Z|(N^V)=1
LBLO
若小于,跳转(R<M),无符号跳转
C=1
LBLS
若小于,跳转(R<=M),无符号跳转
C|Z=1
LBLT
若小于,跳转(R<M)
N^V=1
LBMI
若为负,跳转,简单跳转
(SP)-1--->SP,(CCR)--->M(SP)
PSHD
寄存器D入栈
(SP)-2--->SP,(D)---->M(SP):M(SP+1)
PSHX
寄存器X入栈
(SP)-2--->SP,(X)---->M(SP):M(SP+1)
PSHY
寄存器Y入栈
(SP)-2--->SP,(Y)---->M(SP):M(SP+1)
Subroute address--->PC
LBCC
若C=0,跳转,简单跳转
C=0
LBCS
若C=1,跳转,简单跳转
C=1
LBEQ
若相等,跳转,简单跳转
Z=1
LBGE
若大于或等于,跳转(>=M),无符号
N|V=0
LBGT
若大于,跳转(R>M),有符号跳转
Z|(N^V)=0
LBHI
若大于,跳转(R>M),无符号跳转
LSRA
LSRB
LSRD
0—>-########---->########--->C
a0a7 b0 b7
MOVA
内存之间以字节(8位)传送数据
(M1)--->M2
MOVB
内存之间以字(16位)传送数据
(M1:M1+1)--->(M2:M2+1)
MUL
8位无符号乘法
(A)*(B)---->A:B
NEG
内存字节求补运算
$00-(M)----->M
NEGA
寄存器A字节求补运算
$00-(A)----->A
NEGB
寄存器B字节求补运算
$00-(B)---->B
NOP
空操作
---------------------------------------------
ORAA
寄存器A与内存相“或”
(A)|(M)--->A
Z^V=0
BGND
背景调试
若BDM使能允许,进入BDM模式
BGT
若大于,跳转(R>M),有符号跳转
Z|(N^V)=0
BHI
若大于,跳转(R>M),无符号跳转
C|Z=0
BHS
若大于或等于,跳转(R>=M),无符号跳转
C=0
BITA
寄存器A与内存按位相”与”
(A)&(M)
BITB
寄存器A与内存按位相”与”
INCB
寄存器B加1
(B) +$01----->B
INS
栈指针自加1
(SP)+1------>SP
INX
寄存器X加1
(X)+$0001--->X
INY
寄存器Y加1
(Y)+$0001--->Y
JMP
跳转
Address--->PC
JSR
跳转到子程序
SP-2--->SPRTNH:RTNL---->M(SP):M(SP+1)
IBNE
加1不等于0,跳转
若(A,B,D,X,SP)+1不等于0,跳转,否则继续
IDIV
16位无符号整数除法
(D)/(X)---->X余数D
IDIVS
16位有符号整数除法
(D)/(X)----->X余数D
INC
内存地址内容减1
(M)+$01----->M
INCA
寄存器A加1
(A)+$01----->M
(SP)-2---->spB:A--->M(SP):M(SP+1)
(SP)-1---->spCCR--->M(SP)
STS
将堆栈SP内容送入内存单元
(SPH:SPL)---->M:M+1
若(A,B,D,X,SP)-1不等于0,跳转,否则继续
DEC
内存地址减1
(M)-$01—>M
DECA
寄存器A减1
(A) -$01—>A
DECB
寄存器B减1
(B) -$01—>B
DES
栈指针自减1
(SP)--->1----->SP|(SP)-$0001--->SP
DEX
寄存器X减1
(X)-$0001--->X
有效地址装入寄存器Y
有效地址--->Y
LSL
逻辑左移
C<---########<---0
LSLA
逻辑左移
逻辑左移
C<---########<---0
LSLB
LSLD
C<---########<----########<---0
a7a0 b7 b0
LSR
逻辑右移
C---->########---->0
(A)---M
STAB
将寄存器B中内容送入内存单元
(B)---M
STD
将寄存器D中内容送入内存单元
(A)--->M,(B)--->M+1
STOP
停止
(SP)-2---->spRTN:RTNL--->M(SP):M(SP+1)
(SP)-2---->spYH:YL--->M(SP):M(SP+1)
(SP)-2---->spXH:XL--->M(SP):M(SP+1)
EORB
寄存器B与内存相“异或”
(B)^(M)--->B
EUL
8位无符号乘法
(A)*(B)—>A:B
EXG
寄存器之间的数据交换