微机原理指令整理1类别指令类型指令名称指令缩写指令功能影响标志格式格式含义源操作数目的操作数传送指令通用传输指令基本传输指令MOV将源操作数中的数据传送至目的操作数,以实现寄存器与寄存器、寄存器与存储器之间数据传送以及立即数送往寄存器或存储器无1.MOVWORDPTR[2000],AX将AX送2000和2001单元(低位在低地址,高位在高地址,下同)至少有一个是寄存器(除立即数送存储器外);不能在两个存储单元之间直接传送数据;不能在两个段寄存器之间直接传送数据;不能将立即数直接送至段寄存器;SS和SP赋值必须紧邻指令指针IP既不作目的操作数也不做源操作数2.MOVAX,ES:[BX+SI+50]将ES段(BX+SI+50)字单元内容送AX3.MOVSS,BX将BX内容送SS4.MOVES,SS:[DI+200]将SS段(DI+200)字单元内容送ES5.MOVBX,CX将CS内容送BX6.MOVWORDPTR[BX+DI],SS将SS内容送(BX+DI)字单元CS不能作目的操作数;立即数不能作目的操作数7.MOVCL,DH将DH内容送CL8.MOVDI,[SI+100]将(SI+100)字单元内容送DI9.MOVWORDPTR[DI],DX将DX内容送(DI)字单元10.MOVCX,3330立即数3330送微机原理指令整理2CX11.MOVBYTEPTR[DI],0立即数0送(DI)字节单元堆栈操作指令PUSH将来自通用寄存器、段寄存器或存储单元的一个字(16位)内容压入堆栈(SP指向的栈顶个单元)无1.PUSHAXAX内容进栈通用寄存器、段寄存器、存储单元的一个字CS不能作目的操作数;2.PUSHSISI内容进栈3.PUSHESES内容进栈4.PUSHCSCS内容进栈5.PUSHWORDPTR[BX](BX)和(BX+1)单元内容进栈6.PUSHWORDPTRBETA[BX](BX+BETA)字单元内容进栈不能使用8位源或目的操作数POP将栈顶个单元的内容退出(弹出)到通用寄存器、段寄存器或存储单元无1.POPBX栈顶2个字节出栈到BX不能使用8位源或目的操作数2.POPDX栈顶2个字节出栈到DX通用寄存器、段寄存器、存储单元的一个字节;CS不能作目的操作数3.POPES栈顶2个字节出栈到ES4.POPSS栈顶2个字节出栈到SS5.POP[BX+50]栈顶2个字节出栈到(BX+50)字单元6.POP[BP+DI]栈顶2个字节出栈到(BP+DI)字单元微机原理指令整理3交换指令XCHG实现数据宽度相同的源操作数与目的操作数之间的数据交换,亦即同为8位或16位的累加器与寄存器、寄存器与寄存器以及寄存器与存储单元之间的数据交换无1.XCHGAL,BLAL与BL之间字节交换段寄存器、CS、IP、立即数不能作为源或目的操作数;两个存储单元之间、段寄存器与段寄存器之间不能进行交换2.XCHGCX,AXCX与AX之间字交换3.XCHGDH,CLDH与CL之间字节交换4.XCHGBX,CXBX与CX之间字交换5.XCHGBL,[1000]BL与1000单元内容字节交换6.XCHGWORDPTR[DI],DX(DI)字单元内容与DX字交换专用累加器传送指令换码指令XLAT专门使用累加器AL并将其中的值(比如按二进制、十进制或十六进制等编码)变换成内存某一表格区内对应的另一种编码(比如发光二极管LED的字形码或其他通讯码等)无MOVBX,TABLE_SEGCODEXLAT设置SEGCODE表首址对表进行检索有操作码,无操作数。操作数AL隐藏在操作码之中输入指令IN在I/O口独立编址时,使用专门的输入指令IN,这种输入操作又是指定累加器AL或AX来担当,因此,IN属于专用累加器传送指令无1.INAL,60H8位口地址60H中的1个字节到AL不能使用除累加器外的其他寄存器进行操作;不能使用大于255的地址作为8位口地址;不能使用除DX外的其他寄存器作为16位间接口地址,且在间接口寻址时,须对DX预先置2.INAX,60H60H内容到AL,61H内容到AH3.INAL,DX16位口地址(DX)单元内容到AL4.INAX,DX(DX)及(DX+1)口微机原理指令整理4内容到AX地址值输出指令OUT在I/O口独立编址时,使用专门的输出指令OUT,这种输出操作又是指定累加器AL或AX来担当,因此,OUT属于专用累加器传送指令无1.OUT60H,ALAL中的字节输出到8位口60H不能使用除累加器外的其他寄存器进行操作;不能使用大于255的地址作为8位口地址;不能使用除DX外的其他寄存器作为16位间接口地址,且在间接口寻址时,须对DX预先置地址值2.OUT60H,AXAX中的字输出到8位口60H及61H3.OUTDX,ALAL中的字节到16位口地址(DX)4.OUTDX,AXAX中的字到(DX)及(DX+1)口地址传送指令有效地址传送指令LEA将存储单元有效(偏移)地址EA(源操作数)装入一个16位通用寄存器(目的操作数),以使该寄存器作为地址指针无1.LEASP,[1234H]直接地址1234H装入SP存储器操作数(存储单元有效地址EA)作源操作数段寄存器、IP不能作目的操作数;16位通用寄存器(BX、BP、SI及DI)作目的操作数2.LEABX,TABLE标号或变量TABLE代表的地址装入BX3.LEASI,[BX]间接地址(BX)装入SI4.LEADI,[BX+100]基址地址(BX+100)装入DI不能将存储器操作数与寄存器操作数在源与目的操作数的位置上互换(倒置)5.LEADX,[SI+200]变址地址(SI+200)装入DX6.LEAAX,[BP+DI+500]基(址)变址地微机原理指令整理5址(BP+DI+500)装入AX使用DS段的地址指针传送指令LDS将双字地址指针(包括偏移地址和段地址)分别传送到指令中给出的16位寄存器及数据段寄存器DS中,双字地址指针从源操作数的双字内容即(EA)和(EA+2)字单元得到无1.LDSBX,[3250H]由直接地址得到双字地址指针存储器操作数(存储单元有效地址(EA)作为源操作数16位寄存器REG(BX、BP、SI及DI)作为目的操作数2.LDSSI,TMP由标号(符号地址)的内容得到双字地址指针3.LDSBP,[BX]由间接地址(BX)的内容得到双字地址指针4.LDSDI,[BX+20]由基址地址(BX+20)的内容得到双字地址指针5.LDSBX,[DI+40]由变址地址(DI+40)的内容得到双字地址指针不能将存储器操作数(存储单元有效地址EA)与寄存器操作数在源与目的操作数的位置上互换(倒置)6.LDSBX,[BP+SI+500]由基(址)变址地址(BP+SI+500)的内容得到双字地址指针使用ES段的地址指LES功能与上基本相同,差别在于能提供偏移地址直接访问和使用ES段的无微机原理指令整理6针传送指令只有DI,而BX、SI及BP可通过段超越前缀(ES:)由默认的DS段或SS段改为访问ES段标志传送指令低8位标志取入AH指令LAHF将标志寄存器中低8位FL取入寄存器AH中(AH-FL),以便于阅读和校核无低8位FL(SF、ZF、AF、PF、CF)寄存器AH存AH到低8位标志指令SAHF将AH内容存到低8位标志寄存器FL中(FL-AH),以便于设置标志状况影响低8位标志位寄存器AH低8位FL(SF、ZF、AF、PF、CF)标志进栈指令PUSHF将16位标志寄存器F(FH、FL)的内容进栈,SP-SP-2,F的内容不变无16位标志寄存器F(FL、FH)堆栈标志出栈指令POPF将堆栈栈顶的2个字节弹出送16位标志寄存器F(FH、FL),SP-SP+2,影响标志寄存器的内容影响16位标志位堆栈栈顶的2个字节16位标志寄存器F(FL、FH)算术运算类指令加法类指令加法指令ADD将源操作数与目的操作数的内容相加,其结果(两者之和)存放于目的操作数,或者说将源操作数的内容加到目的操作数中CF、PF、AF、ZF、SF及OF1.ADDDI,SI寄存器SI的内容加到DI中源与目的操作数不能同时为存储器操作数2.ADDCX,[5000]5000和5001单元内容加到CX中寄存器、存储器或立即数寄存器或存储器;不能是立即数3.ADDWORDPTR[BP+DI+30],DX寄存器DX的内容加到(BP+DI+30)字单元中4.ADDWORDPTR[SI+100],2040立即数2040加到(SI+100)字单元中微机原理指令整理75.ADDBH,86H立即数86H加到BH中6.ADDAX,FED0H立即数FED0H加到累加器AX中带进位的加法指令ADC功能与上基本相同,唯一不同之处是,在源操作数与目的操作数的内容相加时,还要加上进位位CF的值CF、PF、AF、ZF、SF及OF与ADD相同与ADD相同与ADD相同与ADD相同增量(加1)指令INC将目的操作数的内容(8位或16位)加1,源操作数1隐含在操作码中。目的操作数为寄存器或存储器,但不能是段寄存器或立即数PF、AF、ZF、SF及OF,不影响CF1.INCALAL中的内容加1源操作数为1为寄存器或存储器;不能是段寄存器或立即数2.INCDIDI中的内容加13.INCBYTEPTR[2000]2000存储单元内容加14.INCWORDPTR[BP+SI+50](BP+SI+50)存储器字单元内容加1减法类指令减法指令SUB将目的操作数的内容与源操作数的内容相减,其结果(两者之差)存放于目的操作数,或者说从目的操作数的内容中减去源操作数的内容CF、PF、AF、ZF、SF及OF。CF=1,表示借位;OF=1,溢出1.SUBCH,DLCH中的内容减去DL中的内容,结果在CH中源与目的操作数不能同时为存储器操作数2.SUBBL,[DI]在BL中减去(DI)单元的内容寄存器、存储器或立即数寄存器或存储器;不能是立即数3.SUB[BP+4},cl在SS段的(BP+4)单元中减去CL的内容4.SUBWORDPTR[BX+DI+50],300在(BX+DI+50)字单元中减去立即数300微机原理指令整理85.SUBBX,3050H在BX中减去立即数3050H6.SUBAL,56在AL中减去立即数56带借位的减法指令SBB在SUB的基础上再减去CF的值。适合于多字节或多字的减法与SUB相同与SUB相同与SUB相同与SUB相同与SUB相同减量(减1)指令DEC将目的操作数的内容(8位或16位)减1,源操作数1隐含在操作码中。目的操作数为寄存器或存储器,但不能是段寄存器或立即数与INC相同1.DECCLCL中的内容减1源操作数为1为寄存器或存储器;不能是段寄存器或立即数2.DECAXAX中的内容减13.DECBYTEPTR[BX](BX)存储单元内容减14.DECWORDPTR[BX+DI+20](BX+DI+20)存储器字单元内容减1求补指令NEG用0去减目的操作数的内容(8位或16位),其实质即为求取目的操作数内容的(2的)补码CF、PF、AF、ZF、SF及OF。与SUB相同1.NEGALAL中的内容求补码源操作数为0为寄存器或存储器;不能是段寄存器或立即数2.NEGBXBX中的内容求补码3.NEGBYTEPTR[BX](BX)存储单元内容求补码4.NEGWORDPTR[BX+SI+5](BX+SI+5)存储器字单元内容求补码比较指令CMP将目的操作数的内容减去源操作数的内容,但其结果(两者之差)不回送于目的操作数CF、PF、AF、ZF、SF及OF。ZF=1,两数相1.CMPSI,BPSI与BP内容比较源与目的操作数不能同时为存储器操作数2.CMPCH,[3000]CH与(3000)存储寄存器、存寄存器或存微机原理指令整理9等;ZF=0,两数不等CF=1,有借位;CF=0,无借位(无符号)SF⊕OF=1,被减数大于减数;SF⊕OF=0,被减数小于减数单元内容比较储器或立即数储器;不能是立即数3.CMPWORDPTR[BX+DI+100],DX(BX+DI+100)字单