汇编语言指令大全

汇编语言命令大全


MOV(MOVE)传送指令P28

PUSH 入栈指令P32

POP 出栈指令P33

XCHG(exchange) 交换指令P34

XLAT(TRANSLATE) 换码指令P34

LEA (Load Effective Address) 有效地址送寄存器指令P35

LDS(Load DS with pointer) 指针送寄存器和DS指令P35

LES(Load ES with pointer) 指针送寄存器和ES指令P35

LAHF(Load AH with Flags) 标志位送AH指令P36

SAHF(Store AH into Flgs) AH送标志寄存器指令P36

PUSHF(PUSH the Flags) 标志进栈指令P36

POPF(POP the Flags) 标志出栈指令P37

ADD 加法指令P38

ADC 带进位加法指令P39

INC 加1指令P39

SUB(SUBtract) 不带借位的减法指令P40

SBB(SuVtrach with borrow) 带借位的减法指令P40

DEC(DECrement) 减1指领P41

NEG(NEGate) 求补指令P41

CMP(CoMPare) 比较指令P42

MUL(unsinged MULtiple) 无符号数乘法指令P46

IMUL(sIgned MUL tiple) 有符号数乘法指令P46

DIV(unsigned DIVide) 无符号数除法指令P48

IDIV(sIgned DIVide) 有符号数除法指令P48

CBW(Count Byte to Word) 字节转换为字指令P50

CWD(Count Word to Doble word) 字转换为双字指令P50

DAA 压缩的BCD码加法十进制调整指令P53

DAS 压缩的BCD码减法十进制调整指令P53

AAA 非压缩的BCD码加法十进制调整指令P54

AAS 非压缩的BCD码加法十进制调整指令P54

AND 逻辑与指令P54

OR 逻辑或指令P55

XOR 逻辑异或指令P56

NOT 逻辑非指令P56

TEST 测试指令P57

SHL(SHift logical Letf) 逻辑左移指令P57

SHR(SHift logical Right) 逻辑右移指令P57

ROL(Rotate Left ) 循环左移指令P58

ROR(Rotate Right) 循环右移指令P58

RCL(Rotate Left through Carry) 带进位循环左移P58

RCR(Rotate Right through Carry) 带进位循环左移P58

MOVS(MOVe String) 串传送指令P58

STOS(STOre into String) 存入串指令P60

LODS(LOad from string) 从串取指令P60

REP(REPeat) 重复操作前缀P61

CLD(CLear Direction flag) 清除方向标志指令P61

STD(SeT Direction flag) 设置方向标志指令P61

CMPS(CoMPare String) 串比较指令P62

SCAS(SCAn String) 串扫描指令P63

REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀P63

REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀

IN(INput) 输入指令P65

OUT(OUTput) 输出指令P65

JMP(JuMP) 无条件转移指令P66

JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ 条件转移指令P67

LOOP 循环指令P70

LOOPZ/LOOPE 为零/相等时循环指令P70

LOOPNZ/LOOPNE 不为零/不相等时循环指令P70

CALL 子程序调用指令P71

RET(RETun) 子程序返回指令P72

CLC(CLear Carry) 进位位置0指令P77

CMC(CoMplement C

arry) 进位位求反指令P77

SRC(SeT Carry) 进位位置1指令P77

NOP(No OPeretion) 无操作指令P77

HLT(HaLT) 停机指令P77

OFFSET 返回偏移地址P85

SEG 返回段地址P85

EQU(=) 等值语句P90

PURGE 解除语句P91

DUP 操作数字段用复制操作符P93

SEGMENT,ENDS 段定义指令P95

ASSUME 段地址分配指令P95

ORG 起始偏移地址设置指令P96

$ 地址计数器的当前值P97

PROC,ENDP 过程定义语句P97

NAME,TITLE,END 程序开始结束语句P98

MACRO,ENDM 宏定义指令P99


8086/8088汇编语言指令集
数据传送指令集

MOV
功能: 把源操作数送给目的操作数
语法: MOV 目的操作数,源操作数
格式: MOV r1,r2
MOV r,m
MOV m,r
MOV r,data

XCHG
功能: 交换两个操作数的数据
语法: XCHG
格式: XCHG r1,r2 XCHG m,r XCHG r,m

PUSH,POP
功能: 把操作数压入或取出堆栈
语法: PUSH 操作数 POP 操作数
格式: PUSH r PUSH M PUSH data POP r POP m

PUSHF,POPF,PUSHA,POPA
功能: 堆栈指令群
格式: PUSHF POPF PUSHA POPA

LEA,LDS,LES
功能: 取地址至寄存器
语法: LEA r,m LDS r,m LES r,m

XLAT(XLATB)
功能: 查表指令
语法: XLAT XLAT m


算数运算指令

ADD,ADC
功能: 加法指令
语法: ADD OP1,OP2 ADC OP1,OP2
格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data
影响标志: C,P,A,Z,S,O

SUB,SBB
功能:减法指令
语法: SUB OP1,OP2 SBB OP1,OP2
格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data
影响标志: C,P,A,Z,S,O

INC,DEC
功能: 把OP的值加一或减一
语法: INC OP DEC OP
格式: INC r/m DEC r/m
影响标志: P,A,Z,S,O

NEG
功能: 将OP的符号反相(取二进制补码)
语法: NEG OP
格式: NEG r/m
影响标志: C,P,A,Z,S,O

MUL,IMUL
功能: 乘法指令
语法: MUL OP IMUL OP
格式: MUL r/m IMUL r/m
影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)

DIV,IDIV
功能:除法指令
语法: DIV OP IDIV OP
格式: DIV r/m IDIV r/m

CBW,CWD
功能: 有符号数扩展指令
语法: CBW CWD

AAA,AAS,AAM,AAD
功能: 非压BCD码运算调整指令
语法: AAA AAS AAM AAD
影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)

DAA,DAS
功能: 压缩BCD码调整指令
语法: DAA DAS
影响标志: C,P,A,Z,S

位运算指令集

AND,OR,XOR,NOT,TEST
功能: 执行BIT与BIT之间的逻辑运算
语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/d
ata NOT r/m
影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位


SHR,SHL,SAR,SAL
功能: 移位指令
语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL

影响标志: C,P,Z,S,O

ROR,ROL,RCR,RCL
功能: 循环移位指令
语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL

影响标志: C,P,Z,S,O

程序流程控制指令集

CLC,STC,CMC
功能: 设定进位标志
语法: CLC STC

CMC
标志位: C

CLD,STD
功能: 设定方向标志
语法: CLD STD
标志位: D

CLI,STI
功能: 设定中断标志
语法: CLI STI
标志位: I

CMP
功能: 比较OP1与OP2的值
语法: CMP r/m,r/m/data
标志位: C,P,A,Z,O

JMP
功能: 跳往指定地址执行
语法: JMP 地址

JXX
功能: 当特定条件成立则跳往指定地址执行
语法: JXX 地址
注:
A: ABOVE,当C=0,Z=0时成立
B: BELOW,当C=1时成立
C: CARRY,当弁时成立 CXZ: CX寄存器的值为0(ZERO)时成立
E: EQUAL,当Z=1时成立
G: GREATER(大于),当Z=0且S=0时成立
L: LESS(小于),当S不为零时成立
N: NOT(相反条件),需和其它符号配合使用
O: OVERFLOW,O=1时成立
P: PARITY,P=1时成立
PE: PARITY EVEN,P=1时成立
PO: PARITY ODD,P=0时成立
S: SIGN,S=1时成立
Z: ZERO,Z=1时成立

LOOP
功能: 循环指令集
语法: LOOP 地址

LOOPE(Z)
地址 LOOPNE(Z) 地址
标志位: 无

CALL,RET
功能: 子程序调用,返回指令
语法: CALL 地址 RET RET n
标志位: 无

INT,IRET
功能: 中断调用及返回指令
语法: INT n IRET
标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆
栈中的标志值弹回寄存器

字符串操作指令集

MOVSB,MOVSW,MOVSD
功能: 字符串传送指令
语法: MOVSB MOVSW MOVSD
标志位: 无

CMPSB,CMPSW,CMPSD
功能: 字符串比较指令
语法: CMPSB CMPSW CMPSD
标志位: C,P,Z,S,O

SCASB,SCASW
功能: 字符串搜索指令
语法: SCASB SCASW
标志位: C,P,Z,S,O

LODSB,LODSW,STOSB,STOSW
功能: 字符串载入或存贮指令
语法: LODSB LODSW STOSB STOSW
标志位: 无

REP,REPE,REPNE
功能: 重复前缀指令集
语法: REP 指令S REPE 指令S REPNE 指令S
标志位: 依指令S而定



EMC 汇编语言指令集

符号解说:
1.符号‘R’:代表一般用途寄存器中的其中一个。
2.符号‘B’:代表一般用途寄存器中的某一位。
3.符号‘K’:代表8位或10位的常数或内容。
4.符号‘A’:代表累加寄存器。
3.2.1. 面向寄存器(字节操作)型指令(26条)
助记符号 指令动作 标志影响 指令周期 语言描述
ADD A,R A+R->A Z,C,DC 1 ADD
ADD R,A A+R->R Z,C,DC 1 ADD
AND A,R A&R->A Z 1 AND
AND R,A A&R->R Z 1 AND
CLR R 0->R Z 1 Clear Register
CLRA 0->A Z 1 Clear the A register
COM R /R->R Z 1 Complement R
助记符号 指令动作 标志影响 指令周期 语言描述
COMA R /R->A Z 1 Complement R,Place in A
DAA A寄存器调整为BCD值 C 1 Decimal Adjust
DEC R R-1->R Z 1 Decrement R
DECA R R-1->A Z 1 Decrement R,Place in A
DJZ R R-1->R 结果为零就跳过下一个指令 1 Decrement R,Skip if 0
DJZA R R-1->A 结果为零就跳过下一个指令 1 Decrement R,Please in A register, Skip if 0
INC R R+1->R Z 1 Increment R
INCA R R+1->A Z 1 Increment R,Please in A
JZ R R+1->R

, 结果为零就跳过下一个指令 1 Increment R,Skip if 0
JZA R R+1->A, 结果为零就跳过下一个指令 1 Increment R,Place in the A regiser,Skipif 0
MOV R,A A->R 1 Move Data
MOV A,R R->A Z 1 Move Data
MOV R,R R->R Z 1 Move Data
OR A,R A OR R ->A Z 1 Inclusive OR
OR R,A A OR R->R Z 1 Inclusive OR
SUB A,R R-A->A Z,C,DC 1 Subtract
SUB R,A R-A->R Z,C,DC 1 Subtract
XOR A,R A XOR R->A Z 1 Exclusive OR
XOR R,A A XOR R->R Z 1 Exclusive OR

面向位操作类指令(10条)

助记符号 指令动作 标志影响 指令周期 语言描述
BC R,B 0->R(B) 1 Bit Clear
BS R,B 1->R(B) 1 Bit Set
JBC R,B 如果R(B)=0,则跳过下一个指令 1 Bit Test, Skip if Clear
JBS R,B 如果R(B)=1,则跳过下一个指令 1 Bit Test, Skip if Set
RLC R R(N)->R(N+1)R(7)->CC->R(0) C 1 Rotate Left R through Carry
RLCA R R(N)->A(N+1)R(7)->CC->A(0) C 1 Rotate Left R through Carry,Place in the A Register
RRC R R(N)->R(N-1)R(0)->CC->R(7) C 1 Rotate Right R through Carry
RRCA R R(N)->A(N-1)R(0)->CC->A(7) C 1 Rotate Right R through Carry,Place in the A Register
SWAP R R(0-3)->R(4-7)R(4-7)->R(0-3) 1 Swap R
SWAPA R R(0-3)->A(4-7)R(4-7)->A(0-3) 1 Swap R

常数操作和控制类指令(22条)

助记符号 指令动作 标志影响 指令周期 语言描述
ADD A,K A+K->A Z,C,DC 1 ADD
AND A,K A&K->A Z 1 AND
CALL K PC+1->[SP](PAGE,K)->PC 1 Subroutine Call
CONTR CONT->A 1 Move CONT to the A register
CONTW A->CONT 1 Move A to CONT
DISI 禁止中断 1 Disable Interrupt
ENI 使能中断 1 Enable Interrupt
INT PC+1->[SP] 001H->PC 1 Software interrupt
IOR R IOCR->A 1 Move IOCR to the A register
IOW R A->IOCR 1 Move A to IOCR
JMP K (PAGE,K)->PC 1 Unconditional Branch
MOV A,K K->A 1 Move Data
NOP 1 No Operation
OR A,K A OR K->A Z 1 Inclusive OR
RET [堆栈顶端]->PC 1 Return from Subroutine
RETI [堆栈顶端]->PC,使能中断 1 Return from Interrupt
RETL K K->A,[堆栈顶端]->PC Return Immediate Data to the A Register
SLEP 0->WDT,振荡器停止振荡 T,P 1 Into Sleep mode
SUB A,K K-A->A Z,C,DC 1 Subtract
TBL PC+A->PC Z,C,DC 2 Table Look Up
WDTC 0->WDT T,P 1 Clear Watchdog Timer
XOR A,K A XOR K->A Z 1 Exclusive OR


相关文档
最新文档