-
51
单片机汇编指令集
(指令集带英文翻译)
一、数据传送
类指令(
7
种助记符)
MOV
(英文为
Move
)
:对内部数据寄存器
RAM
和特殊功能
寄存器
SFR
的数据进行
传送;
MOVC
(
Move
Code
)读取程序存储器数据表格的数据传送;
MOVX
(Move
External RAM)
对外部
RAM
的数据传送;
XCH
(Exchange)
字节交换;
XCHD
(Exchange
low-order Digit)
低半字节交换;
PUSH
(Push onto
Stack)
入栈;
POP
(Pop from
Stack)
出栈;
二、算术运算类指令(
8
种助记符)
ADD(Addition)
加法;
ADDC(Add with
Carry)
带进位加法;
SUBB(Subtract with Borrow)
带借位减法;
DA(Decimal
Adjust)
十进制调整;
INC(Increment)
加
1
;
DEC(Decrement)
减
1
;
p>
MUL(Multiplication
、
Multiply)
乘法;
DIV
(Division
、
Divide)
除法;
三、逻辑运算类指令(
10
种助记符)
ANL(AND Logic)
逻辑与;
ORL(OR
Logic)
逻辑或;
XRL(Exclusive-OR Logic)
逻辑异或;
CLR(Clear)
清零;
CPL(Complement)
取反;
RL(Rotate
left)
循环左移;
RLC(Rotate Left throught the Carry
flag)
带进位循环左移;
RR(Rotate Right)
循环右移;
RRC
(Rotate Right
throught the Carry flag)
带进位循环右移;
SWAP
(Swap)
低
4
< br>位与高
4
位交换;
四、控制转移类指令(
17
种助记符)
ACALL
(
Absolute
subroutine Call
)子程序绝对调用;
LCALL
(
Long
subroutine Call
)子程序长调用;
RET
(
Return from
subroutine
)子程序返回;
RETI
(
Return from
Interruption
)中断返回;
SJMP
(
Short
Jump
)短转移;
AJMP
(
Absolute
Jump
)绝对转移;
LJMP
(
Long
Jump
)长转移;
CJNE
(Compare Jump if Not
Equal)
比较不相等则转移;
DJNZ (Decrement Jump if Not
Zero)
减1后不为0则转移;
JZ (Jump if
Zero)
结果为0则转移;
JNZ
(Jump if Not Zero)
结果不为0则转移;
JC (Jump if the Carry flag is
set)
有进位则转移;
JNC
(Jump if Not Carry)
无进位则转移;
JB (Jump if the Bit is
set)
位为1则转移;
JNB
(Jump if the Bit is Not set)
位为0则转移;
JBC(Jump
if the Bit is set and Clear the bit)
位为1则转移,并清除该位;
NOP
(No Operation)
空操作;
五、位操作指令(
1
种助记符)
CLR
位清零;
SETB(Set
Bit)
位
置1
。
8
种常用伪指令
1.
ORG
16
位地址
;
此指令用在原程序或数据块的开始
,
指明此语句后面目标程序或数据块存放的起
始地址。
2.
[
标号:
] DB
字节数据项表;
将项表中的字节数据存放到从标号开始的连续字节单元中。
例如:
SEG
:
DB
88H<
/p>
,
100
,
“<
/p>
7
”
,
“
C
”
3.
[
标号:
]DW
双字节数据项表;
定义
16
位地址表,
16
地址按
低位地址存低位字节,高位地址存高位字节。
例如:
TAB
:
DW
1234H
,
7BH
4.名字
EQU
表达式
或名字
=
表达式;
用与给一个表达式赋值
或给字符串起名字。
之后名字可用做程序地址,
数据地址
或立即数地址使用。名字必须是一字母开头的字母数字串。
例如:
COUNT=10
或
SPACE EQU 10H
5.名字
DATA
直接字节地址;
给
< br>8
位内部
RAM
单元起个名字,
名字必须是一字母开头的字母数字串。同一单元
可起多个名字。
例如:
ERROR DATA 80H
6.名字
XDATA
直接字节地址;
给
< br>8
位外部
RAM
起个名字,名字
规定同
DATA
伪指令。
例如:
IO_PORT XDATA
0CF04H
7.名字
BIT
位指令;
给一可位寻址的位单元起个
名字,规定同
DATA
伪指令。
例如:
SWT BIT 30H
p>
8.
[
标号:
]<
/p>
END;
指
出源程序到此结束,
汇编对其后的程序语句不予理睬。
源程序只
在主程序最后
使用一个END。
1.
数据
传送指令(
30
条)
MOV A,Rn
寄存器送
A 1 1 E8--EF
MOV A,data
直接字节送
A 2 1 E5
MOV
A,@Ri
间接
RAM
送
A 1 1 E6--E7
MOV
A,#data
立接数送
A 2
1 74
MOV Rn,A A
送寄存器
1 1 F8--FF
MOV Rn,data
直接数送寄存器
2 2 A8--
AF
MOV Rn,#data
立即数送寄存器
2 1 78--
7F
MOV data,A A
送直接字节
2 1 F5
MOV data,Rn
寄存器送直接字节
2 1
88
—
8F
MOV
data,data
直接字节送直接字节
3 2 85
MOV data,@Ri
间接
Rn
送直接字节
2 2 86;87
MOV data,#data
立即数送直接字节
3 2 75
MOV @Ri,A A
送间接
Rn 1 2 F6;F7
MOV @Ri,data
直接字节送间接
Rn 1 1 A6;A7
MOV @Ri,#data
立即数送间接
Rn 2 2
76;77
MOV DPTR,#data16 16
位常数送数据指针
3 1 90
MOV C,bit
直接位送进位位
2 1 A2
MOV bit,C
进位位送直接位
2 2 92
MOVC A,@A+DPTR A+DPTR
寻址程序存贮字节送
A 3 2
93
MOVC A,@A+PC A+PC
寻址程序存贮字节送
A 1 2 83
MOVX A,@Ri
外部数据送
A
(
8
位地址)
1 2 E2;E3
MOVX A,@DPTR
外部数据送
A
(
16
位地址)
1 2 E0
MOVX @Ri,A A
送外部数据(
8
位地址)
1 2 F2;F3
MOVX @DPTR,A A
送外部数据(
16
位地址)
1 2 F0
PUSH data
直接字节进栈道,
SP
加
1 2 2 C0
POP
data
直接字节出栈,
SP
减
1 2 2 D0
XCH
A,Rn
寄存器与
A
交换
1 1
C8
—
CF
XCH A,data
直接字节与
A
交换
2 1 C5
XCH A,@Ri
间接
Rn
与
A
交换
1 1 C6;C7
XCHD A,@Ri
间接
Rn
与
A
低半字节交换
1 1 D6;D7
2.
逻辑运算指令(
35
条)
ANL A,Rn
寄存器与到
A 1 1
58
—
5F
ANL A,data
直接字节与到
A 2 1 55
ANL A,@Ri
间接
RAM
p>
与到
A 1 1 56;57
ANL
A,#data
立即数与到
A 2 1 54
ANL data,A
A
与到直接字节
2 1 52
ANL data,#data
立即数与到直接字节
3 2 53
ANL C,bit
直接位与到进位位
2 2 82
ANL C,/bit
直接位的反码与到进位位
2 2
B0
ORL A,Rn
寄存器或到
A 1 1
48
—
4F
ORL A,data
直接字节或到
A 2 1 45
ORL A,@Ri
间接
RAM
p>
或到
A 1 1 46;47
ORL
A,#data
立即数或到
A 2 1 44
ORL data,A
A
或到直接字节
2 1 42
ORL data,#data
立即数或到直接字节
3 2 43
ORL C,bit
直接位或到进位位
2 2 72
ORL C,/bit
直接位的反码或到进位位
2 2
A0
XRL A,Rn
寄存器异或到
A 1 1
68
—
6F
XRL A,data
直接字节异或到
A 2 1 65
XRL A,@Ri
间接
RAM
p>
异或到
A 1 1 66;67
XRL
A,#data
立即数异或到
A 2 1 64
XRL data,A
A
异或到直接字节
2 1 62
XRL data,#data
立即数异或到直接字节
3 2 63
SETB C
进位位置
1 1 1 D3
SETB bit
直接位置
1 2 1 D2
CLR A A
清
0 1 1 E4
CLR C
进位位清
0 1 1 C3
CLR bit
直接位清
0 2 1 C2
CPL A A
求反码
1 1 F4
CPL C
进位位取反
1 1 B3
CPL bit
直接位取反
2 1 B2
RL A
A
循环左移一位
1 1 23
RLC A A
带进位左移一位
1 1 33
RR A
A
右移一位
1 1 03
RRC A A
带进位右移一位
1 1 13
SWAP A A
半字节交换
1 1 C4
3.
算术运算指令(
24
条)
ADD A,Rn
寄存器加到
A 1 1
28
—
2F
ADD A,data
直接字节加到
A 2 1 25
ADD A,@Ri
间接
RAM
加到
A 1 1 26;27
ADD
A,#data
立即数加到
A 2 1 24
ADDC A,Rn
寄存器带进位加到
A 1 1
38
—
3F
ADDC A,data
直接字节带进位加到
A 2 1 35
ADDC A,@Ri
间接
RAM
带进位加到
A 1 1 36;37
ADDC A,#data
立即数带进位加到
A 2 1 34
SUBB A,Rn
从
A
中减去寄存器和进位
1 1
98
—
9F
SUBB A,data
从
A
中减去直接字节和进位
2 1 95
SUBB A,@Ri
从
A
中减去间接
RAM
和进位
1 1 96;97
SUBB A,#data
从
A
中减去立即数和进位
2 1 94
INC A A
加
1 1 1 04
INC Rn
寄存器加
1 1 1 08
—
0F
INC data
直接字节加
1 2
1 05
INC @Ri
间接
RAM
加
1 1 1 06;07
INC
DPTR
数据指针加
1 1 2 A3
DEC A A
减
1 1 1 14
DEC Rn
寄存器减
1 1 1 18
—
1F
DEC data
直接字节减
1 2
1 15
DEC @Ri
间接
RAM
减
1 1 1 16;17
MUL
AB A
乘
B 1 4 A4
DIV
AB
A
被
B
除
1 4 84
DA A
A
十进制调整
1 1 D4
4.
转移指令(
22
条)
AJMP addr 11
绝对转移
2 2 *1
LJMP addr 16
长转移
3 2 02
SJMP rel
短转移
2 2 80
JMP @A+DPTR
相对于
DPTR
间接转移
1 2 73
JZ rel
若
A
=
0
则转移
2 2 60
JNZ rel
若
A
≠
0
则转移
2 2 70
JC rel
若
C
=
1
则转移
2 2 40
JNC rel
若
C
≠
1
则转移
2 2 50
JB bit,rel
若直接位=
1
则转移
3 2 20
JNB bit,rel
若直接位=
0
则转移
3 2 30
JBC bit,rel
若直接位=
1
则转移且清除
3 2 10
CJNE A,data,rel
直接数与
A
比较,不等转移
3 2 B5
CJNE A,#data,rel
立即数与
A
比较,不等转移
3 2 B4
CJNE @Ri,#data,rel
立即数与间接
RAM
比较,不等转移
3 2 B6;B7
CJNE Rn,#data,rel
立即数与寄存器比较不等转移
3 2
B8
—
BF
DJNZ Rn,rel
寄存器减
1
不为
0
转移
2 2 D8
—
DF
DJNZ data,rel
直接字节减
1
不为
0
转移
3 2 D5
ACALL addr 11
绝对子程序调用
2 2 *1
LCALL addr 16
子程序调用
3 2 12
RET
子程序调用返回
1 2 22
RETI
中断程序调用返回
1 2 32
NOP
空操作
1 1 00
版本二
汇编指令英文全称
1.
通用数据传送指令
MOV----> move
MOV dest,src dest←src
MOV
指令把一个字节或字的操作数
从源地址
src
传送至目的地址
des
t
。
MOVSX---->extended move with sign data
MOVZX---->extended move
with zero data
PUSH---->push
POP---->pop
进栈出栈指令
PUSHA---->push all
POPA---->pop all
PUSHAD---->push all data
POPAD---->pop all data
BSW
AP---->byte swap
XCHG---->exchange
交换指令用来将源操作
数和目的操作数内容交换,
操作数可以是字、
也可以是字节,<
/p>
可以在
通用寄存器与通用寄存器或存储器之间对换数据,但不能在
存储器与存储器之间对换数据。
mov ax,1234h ax=1234h
mov bx,5678h bx=5678h
xchg ax,bx
;ax=5678h
,
bx=1234h
xchg ah,al ax=7856h
CMPXCHG---->compare and
change
XADD---->exchange
and add
XLAT---->translate
< br>换码指令用于将
BX
指定的缓冲区中、
< br>AL
指定的位移处的数据取出赋给
AL
< br>。
2.
输入输出端口传送指令
IN---->input
OUT---->output
3.
目的地址传送指令
LEA---->load effective
addres
有效地址传送指令
mov bx,0400h
mov si,3ch
lea bx,[bx+si+0f62h] BX=139EH
< br>这里
BX
得到的是主存单元的有效地址,不是物理地址,
也不是该单元的内容。
LDS---->load DS
LES---->load ES
LFS---->load FS
LGS---->load GS
LSS---->load SS
4.
标志传送指令
LAHF---->load AH from flag
SAHF---->save AH to flag
PUSHF---->push flag
POPF---->pop flag
PUSHD---->push dflag
POPD---->pop dflag
二、算术运算指令
ADD---->add
加法指令
mov al,0fbh
;al=0fbh
add al,07h al=02h
ADC---->add with carry
INC---->increase 1
AAA---->ascii add with adjust
DAA---->decimal add with
adjust
SUB---->substract
SBB---->substract with
borrow
DEC---->decrease
substract 1
NEC---->negative
CMP---->compare
AAS---->ascii adjust on substract
DAS---->decimal adjust on
substract
MUL---->multiplication
IMUL---->integer multiplication
AAM---->ascii adjust on
multiplication
DIV---->divide
IDIV---->integer divide
AAD---->ascii adjust on divide
CBW---->change byte to word
CWD---->change word to
double word
CWDE---->change
word to double word with sign to EAX
CDQ---->change double word to quadrate
word
三、逻辑运算指令
AND---->and
or---->or
XOR---->xor
NOT---->not
TEST---->test
SHL---->shift left
SAL---->arithmatic shift left
SHR---->shift right
SAR---->arithmatic shift
right
ROL---->rotate left
ROR---->rotate right
RCL---->rotate left with
carry
RCR---->rotate right
with carry
四、串指令
MOVS---->move string
-
-
-
-
-
-
-
-
-
上一篇:英语名人演讲稿翻译
下一篇:黑虎阿福 骚话大全(附带英文)