单片机指令英文全称分解文档格式.docx
《单片机指令英文全称分解文档格式.docx》由会员分享,可在线阅读,更多相关《单片机指令英文全称分解文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。
2.[标号:
]DB字节数据项表;
将项表中的字节数据存放到从标号开始的连续字节单元中。
例如:
SEG:
DB88H,100,“7”,“C”
3.[标号:
]DW双字节数据项表;
定义16位地址表,16地址按低位地址存低位字节,高位地址存高位字节。
TAB:
DW1234H,7BH
4.名字EQU表达式或名字=表达式;
用与给一个表达式赋值或给字符串起名字。
之后名字可用做程序地址,数据地址或立即数地址使用。
名字必须是一字母开头的字母数字串。
COUNT=10或SPACEEQU10H
5.名字DATA直接字节地址;
给8位内部RAM单元起个名字,名字必须是一字母开头的字母数字串。
同一单元可起多个名字。
ERRORDATA80H
6.名字XDATA直接字节地址;
给8位外部RAM起个名字,名字规定同DATA伪指令。
IO_PORTXDATA0CF04H
7.名字BIT位指令;
给一可位寻址的位单元起个名字,规定同DATA伪指令。
SWTBIT30H
8.[标号:
] END;
指出源程序到此结束,汇编对其后的程序语句不予理睬。
源程序只在主程序最后使用一个END。
1.数据传送指令(30条)
MOVA,Rn寄存器送A11E8--EF
MOVA,data直接字节送A21E5
MOVA,@Ri间接RAM送A11E6--E7
MOVA,#data立接数送A2174
MOVRn,AA送寄存器11F8--FF
MOVRn,data直接数送寄存器22A8--AF
MOVRn,#data立即数送寄存器2178--7F
MOVdata,AA送直接字节21F5
MOVdata,Rn寄存器送直接字节2188—8F
MOVdata,data直接字节送直接字节3285
MOVdata,@Ri间接Rn送直接字节2286;
87
MOVdata,#data立即数送直接字节3275
MOV@Ri,AA送间接Rn12F6;
F7
MOV@Ri,data直接字节送间接Rn11A6;
A7
MOV@Ri,#data立即数送间接Rn2276;
77
MOVDPTR,#data1616位常数送数据指针3190
MOVC,bit直接位送进位位21A2
MOVbit,C进位位送直接位2292
MOVCA,@A+DPTRA+DPTR寻址程序存贮字节送A3293
MOVCA,@A+PCA+PC寻址程序存贮字节送A1283
MOVXA,@Ri外部数据送A(8位地址)12E2;
E3
MOVXA,@DPTR外部数据送A(16位地址)12E0
MOVX@Ri,AA送外部数据(8位地址)12F2;
F3
MOVX@DPTR,AA送外部数据(16位地址)12F0
PUSHdata直接字节进栈道,SP加122C0
POPdata直接字节出栈,SP减122D0
XCHA,Rn寄存器与A交换11C8—CF
XCHA,data直接字节与A交换21C5
XCHA,@Ri间接Rn与A交换11C6;
C7
XCHDA,@Ri间接Rn与A低半字节交换11D6;
D7
2.逻辑运算指令(35条)
ANLA,Rn寄存器与到A1158—5F
ANLA,data直接字节与到A2155
ANLA,@Ri间接RAM与到A1156;
57
ANLA,#data立即数与到A2154
ANLdata,AA与到直接字节2152
ANLdata,#data立即数与到直接字节3253
ANLC,bit直接位与到进位位2282
ANLC,/bit直接位的反码与到进位位22B0
ORLA,Rn寄存器或到A1148—4F
ORLA,data直接字节或到A2145
ORLA,@Ri间接RAM或到A1146;
47
ORLA,#data立即数或到A2144
ORLdata,AA或到直接字节2142
ORLdata,#data立即数或到直接字节3243
ORLC,bit直接位或到进位位2272
ORLC,/bit直接位的反码或到进位位22A0
XRLA,Rn寄存器异或到A1168—6F
XRLA,data直接字节异或到A2165
XRLA,@Ri间接RAM异或到A1166;
67
XRLA,#data立即数异或到A2164
XRLdata,AA异或到直接字节2162
XRLdata,#data立即数异或到直接字节3263
SETBC进位位置111D3
SETBbit直接位置121D2
CLRAA清011E4
CLRC进位位清011C3
CLRbit直接位清021C2
CPLAA求反码11F4
CPLC进位位取反11B3
CPLbit直接位取反21B2
RLAA循环左移一位1123
RLCAA带进位左移一位1133
RRAA右移一位1103
RRCAA带进位右移一位1113
SWAPAA半字节交换11C4
3.算术运算指令(24条)
ADDA,Rn寄存器加到A1128—2F
ADDA,data直接字节加到A2125
ADDA,@Ri间接RAM加到A1126;
27
ADDA,#data立即数加到A2124
ADDCA,Rn寄存器带进位加到A1138—3F
ADDCA,data直接字节带进位加到A2135
ADDCA,@Ri间接RAM带进位加到A1136;
37
ADDCA,#data立即数带进位加到A2134
SUBBA,Rn从A中减去寄存器和进位1198—9F
SUBBA,data从A中减去直接字节和进位2195
SUBBA,@Ri从A中减去间接RAM和进位1196;
97
SUBBA,#data从A中减去立即数和进位2194
INCAA加11104
INCRn寄存器加11108—0F
INCdata直接字节加12105
INC@Ri间接RAM加11106;
07
INCDPTR数据指针加112A3
DECAA减11114
DECRn寄存器减11118—1F
DECdata直接字节减12115
DEC@Ri间接RAM减11116;
17
MULABA乘B14A4
DIVABA被B除1484
DAAA十进制调整11D4
4.转移指令(22条)
AJMPaddr11绝对转移22*1
LJMPaddr16长转移3202
SJMPrel短转移2280
JMP@A+DPTR相对于DPTR间接转移1273
JZrel若A=0则转移2260
JNZrel若A≠0则转移2270
JCrel若C=1则转移2240
JNCrel若C≠1则转移2250
JBbit,rel若直接位=1则转移3220
JNBbit,rel若直接位=0则转移3230
JBCbit,rel若直接位=1则转移且清除3210
CJNEA,data,rel直接数与A比较,不等转移32B5
CJNEA,#data,rel立即数与A比较,不等转移32B4
CJNE@Ri,#data,rel立即数与间接RAM比较,不等转移32B6;
B7
CJNERn,#data,rel立即数与寄存器比较不等转移32B8—BF
DJNZRn,rel寄存器减1不为0转移22D8—DF
DJNZdata,rel直接字节减1不为0转移32D5
ACALLaddr11绝对子程序调用22*1
LCALLaddr16子程序调用3212
RET子程序调用返回1222
RETI中断程序调用返回1232
NOP空操作1100
版本二
汇编指令英文全称
1.通用数据传送指令
MOV---->
move
MOVdest,src;
dest←src
MOV指令把一个字节或字的操作数从源地址src传送至目的地址dest。
MOVSX---->
extendedmovewithsigndata
MOVZX---->
extendedmovewithzerodata
PUSH---->
push
POP---->
pop
进栈出栈指令
PUSHA---->
pushall
POPA---->
popall
PUSHAD---->
pushalldata
POPAD---->
popalldata
BSWAP---->
byteswap
XCHG---->
exchange
交换指令用来将源操作数和目的操作数内容交换,操作数可以是字、也可以是字节,可以在通用寄存器与通用寄存器或存储器之间对换数据,但不能在存储器与存储器之间对换数据。
movax,1234h;
ax=1234h
movbx,5678h;
bx=5678h
xchgax,bx;
ax=5678h,bx=1234h
xchgah,al;
ax=7856h
CMPXCHG---->
compareandchange
XADD---->
exchangeandadd
XLAT---->
translate
换码指令用于将BX指定的缓冲区中、AL指定的位移处的数据取出赋给AL。
2.输入输出端口传送指令
IN---->
input
OUT---->
output
3.目的地址传送指令
LEA---->
loadeffectiveaddres
有效地址传送指令
movbx,0400h
movsi,3ch
leabx,[bx+si+0f62h];
BX=139EH
这里BX得到的是主存单元的有效地址,不是物理地址,也不是该单元的内容。
LDS---->
loadDS
LES---->
loadES
LFS---->
loadFS
LGS---->
loadGS
LSS---->
loadSS
4.标志传送指令
LAHF---->
loadAHfromflag
SAHF---->
saveAHtoflag
PUSHF---->
pushflag
POPF---->
popflag
PUSHD---->
pushdflag
POPD---->
popdflag
二、算术运算指令
ADD---->
add
加法指令moval,0fbh;
al=0fbh
addal,07h;
al=02h
ADC---->
addwithcarry
INC---->
increase1
AAA---->
asciiaddwithadjust
DAA---->
decimaladdwithadjust
SUB---->
substract
SBB---->
substractwithborrow
DEC---->
decreasesubstract1
NEC---->
negative
CMP---->
compare
AAS---->
asciiadjustonsubstract
DAS---->
decimaladjustonsubstract
MUL---->
multiplication
IMUL---->
integermultiplication
AAM---->
asciiadjustonmultiplication
DIV---->
divide
IDIV---->
integerdivide
AAD---->
asciiadjustondivide
CBW---->
changebytetoword
CWD---->
changewordtodoubleword
CWDE---->
changewordtodoublewordwithsigntoEAX
CDQ---->
changedoublewordtoquadrateword
三、逻辑运算指令
AND---->
and
or---->
or
XOR---->
xor
NOT---->
not
TEST---->
test
SHL---->
shiftleft
SAL---->
arithmaticshiftleft
SHR---->
shiftright
SAR---->
arithmaticshiftright
ROL---->
rotateleft
ROR---->
rotateright
RCL---->
rotateleftwithcarry
RCR---->
rotaterightwithcarry
四、串指令
MOVS---->
movestring
CMPS---->
comparestring
SCAS---->
scanstring
LODS---->
loadstring
STOS---->
storestring
REP---->
repeat
REPE---->
repeatwhenequal
REPZ---->
repeatwhenzeroflag
REPNE---->
repeatwhennotequal
REPNZ---->
REPC---->
repeatwhencarryflag
REPNC---->
repeatwhennotcarryflag
五、程序转移指令
1>
无条件转移指令(长转移)
JMP---->
jump
CALL---->
call
RET---->
return
RETF---->
returnfar
2>
条件转移指令(短转移,-128到+127的距离内)
JAE---->
jumpwhenaboveorequal
JNB---->
jumpwhennotbelow
JB---->
jumpwhenbelow
JNAE---->
jumpwhennotaboveorequal
JBE---->
jumpwhenbeloworequal
JNA---->
jumpwhennotabove
JG---->
jumpwhengreater
JNLE---->
jumpwhennotlessorequal
JGE---->
jumpwhengreaterorequal
JNL---->
jumpwhennotless
JL---->
jumpwhenless
JNGE---->
jumpwhennotgreaterorequal
JLE---->
jumpwhenlessorequal
JNG---->
jumpwhennotgreater
JE---->
jumpwhenequal
JZ---->
jumpwhenhaszeroflag
JNE---->
jumpwhennotequal
JNZ---->
jumpwhennothaszeroflag
JC---->
jumpwhenhascarryflag
JNC---->
jumpwhennothascarryflag
JNO---->
jumpwhennothasoverflowflag
JNP---->
jumpwhennothasparityflag
JPO---->
jumpwhenparityflagisodd
JNS---->
jumpwhennothassignflag
JO---->
jumpwhenhasoverflowflag
JP---->
jumpwhenhasparityflag
JPE---->
jumpwhenparityflagiseven
JS---->
jumpwhenhassignflag
3>
循环控制指令(短转移)
LOOP---->
loop
LOOPE---->
loopequal
LOOPZ---->
loopzero
LOOPNE---->
loopnotequal
LOOPNZ---->
loopnotzero
JCXZ---->
jumpwhenCXiszero
JECXZ---->
jumpwhenECXiszero
4>
中断指令
INT---->
interrupt
INTO---->
overflowinterrupt
IRET---->
interruptreturn
5>
处理器控制指令
HLT---->
halt
WAIT---->
wait
ESC---->
escape
LOCK---->
lock
NOP---->
nooperation
STC---->
setcarry
CLC---->
clearcarry
CMC---->
carrymakechange
STD---->
setdirection
CLD---->
cleardirection
STI---->
setinterrupt
CLI---->
clearinterrupt
六、伪指令
DW---->
definwword
PROC---->
procedure
ENDP---->
endofprocedure
SEGMENT---->
segment
ASSUME---->
assume
ENDS---->
endsegment
END---->
end
汇编指令中文释义
数据传输指令
───────────────────────────────────────
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
1.通用数据传送指令.
MOV传送字或字节.
MOVSX先符号扩展,再传送.
MOVZX先零扩展,再传送.
PUSH把字压入堆栈.
POP把字弹出堆栈.
PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
BSWAP交换32位寄存器里字节的顺序