微机原理与接口技术指令记忆表.docx
《微机原理与接口技术指令记忆表.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术指令记忆表.docx(8页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术——8086/8088指令记忆表
寄存器:
数据寄存器分为:
AH&AL=AX(accumulator):
累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.
BH&BL=BX(base):
基址寄存器,常用于地址索引;
CH&CL=CX(count):
计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.
DH&DL=DX(data):
数据寄存器,常用于数据传递。
他们的特点是,这4个16位的寄存器可以分为高8位:
AH,BH,CH,DH.以及低八位:
AL,BL,CL,DL。
这2组8位寄存器可以分别寻址,并单独使用。
另一组是指针寄存器和变址寄存器,包括:
SP(StackPointer):
堆栈指针,与SS配合使用,可指向目前的堆栈位置;
BP(BasePointer):
基址指针寄存器,可用作SS的一个相对基址位置;
SI(SourceIndex):
源变址寄存器可用来存放相对于DS段之源变址指针;
DI(DestinationIndex):
目的变址寄存器,可用来存放相对于ES段之目的变址指针。
指令指针IP(InstructionPointer)
标志寄存器FR(FlagRegister)
OF(overflowflag) 溢出则=1
DF(directionflag)
CF(carrierflag) 第四位借第三位=1
PF(parityflag)
AF(auxiliaryflag)
ZF(zeroflag) =0则=1
SF(signflag)
IF(interruptflag)
TF(trapflag)
段寄存器(SegmentRegister)
为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:
CS(CodeSegment):
代码段寄存器;
DS(DataSegment):
数据段寄存器;
SS(StackSegment):
堆栈段寄存器;
ES(ExtraSegment):
附加段寄存器。
第一部分:
指令助记符:
一、数据传送指令
1.通用数据传送指令
MOV(Move) 传送
PUSH(Pushontothestack) 进栈
a) 高字节SP-1低字节SP-2 SP=SP-2
b) PUSHAPUSHADPUSHFPUSHFD
POP(Popfromthestack) 出栈
a)低字节SP高字节SP+1SP=SP+2
B)POPADPOPAPOPFDPOPF
XCHG(Exchange) 交换
2.累加器专用传送指令
IN(Input) 输入
OUT(Output) 输出
XLAT(Translate) 换码
DS:
[AL+BX]=AL
3.有效地址送寄存器指令
LEA(Loadeffectiveaddress) 有效地址送寄存器
LDS(LoadDSwithPointer) 指针送寄存器和DS
LES(LoadESwithPointer) 指针送寄存器和ES
4.标志寄存器传送指令
LAHF(LoadAHwithflags) 标志寄存器8位送AH
SAHF(storeAHintoflags) AH送标志寄存器8位
PUSHF(pushtheflags) 标志进栈
POPF(poptheflags) 标志出栈
二、算术指令
1.加法指令
ADD(add) 加法
ADC(addwithcarry) 带进位加法
INC(increment) 加1
2.减法指令
SUB(subtract) 减法
SBB(subtractwithborrow) 带借位减法
DEC(Decrement) 减1
CMP(Compare) 比较 只改变标志位,不改变目的操作数
3.乘法指令
MUL(UnsignedMultiple) 无符号数乘法
A) 8位乘法,内容放在AX
B) 16位乘法,内容放在DX(高位)AX(低位)
IMUL(SignedMultiple) 带符号数乘法
乘法不允许使用立即数,除非是带符号的立即数乘法。
4.除法指令
DIV(Unsigneddivide) 无符号数除法
IDIV(Signeddivide) 带符号数除法
A) 8位商AL余数AH
B) 16位商AX余数DX
C) 除以0,或者溢出均错误
CBW(Convertbytetoword) 字节转换为字(有符号数)
CWD(Contertwordtodoubleword) 字转换为双字(有符号数)
三、逻辑指令
1.逻辑运算指令
AND(and) 逻辑与
OR(or) 逻辑或
NOT(not) 2的补码 逻辑非
NEG 1的补码
XOR(exclusiveor) 异或
TEST(test) 只改变标志寄存器的状态的AND 测试
2.移位指令
SHL(shiftlogicalleft) 逻辑左移
SAL(shiftarithmeticleft) 算术左移
SHR(shiftlogicalright) 逻辑右移
SAR(shiftarithmeticright) 算术右移
逻辑移位用于无符号数算术移位用于有符号数
ROL(Rotateleft) 循环左移
ROR(Rotateright) 循环右移
RCL(Rotateleftthroughcarry) 带进位循环左移
RCR(Rotaterightthroughcarry) 带进位循环右移
四、串处理指令
1.重复前端指令
REP(Repeat) 重复串操作直到(CX)=0为上
REPE(Repeatwhenempty) 若(CX)=0,则退出,否则CX=CX+1;
REPZ(Repeatwhenflag) 若ZF=0,则退出,否则CX=CX+1;
REPC(Repeatwhencarryflag)
REPNE(Repeatwhennotempty)
REPNZ(Repeatwhennotzeroflag)
REPNC(Repeatwhennotcarryflag)
2.串操作指令
MOVSB(Movestringofbyte) ES:
DI=ES:
SI DI=DI+1/-1 串传送指令
MOVSW(Movestringofword) ES:
DI=ES:
SI DI=DI+2/-2 串传送指令
STOSB(Storestringofbyte) fromal 存串指令
STOSW(Storestringofword) fromax 存串指令
LODSB(Loadstringofbyte) inal 取串指令
LODSW(Loadstringofword) inax 取串指令
CLD(Cleardirectionflag)该指令使DF=0,在执行串操作指令时可使地址自动增量;
STD(Setdirectionflag) 该指令使DF=1,在执行串操作指令时可使地址自动减量.
INSB ES:
DI=DX 串输入
OUTSB DX=ES:
DI 串输出
DAA(Decimaladjustafteraddition) 组合BCD码的加法调整指令
DAS(Decimaladjustaftersubstract) 组合BCD码的减法调整指令
MOVSX 8位转换16位数字无符号用0填充
MOVZX 有符号用符号位填充
CMPSB(Comparestringofbyte) 存储单元和存储单元 串比较指令
SCASB(Scanstringofbyte) 存储单元和AX