完整word版微机原理指令整理.docx
- 文档编号:24912520
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:135
- 大小:30.38KB
完整word版微机原理指令整理.docx
《完整word版微机原理指令整理.docx》由会员分享,可在线阅读,更多相关《完整word版微机原理指令整理.docx(135页珍藏版)》请在冰豆网上搜索。
完整word版微机原理指令整理
类别
指令类型
指令名称
指令缩写
指令功能
影响标志
格式
格式含义
源操作数
目的操作数
传送指令
通用传输指令
基本传输指令
MOV
将源操作数中的数据传送至目的操作数,以实现寄存器与寄存器、寄存器与存储器之间数据传送以及立即数送往寄存器或存储器
无
1.MOVWORDPTR[2000],AX
将AX送2000和2001单元(低位在低地址,高位在高地址,下同)
至少有一个是寄存器(除立即数送存储器外);不能在两个存储单元之间直接传送数据;不能在两个段寄存器之间直接传送数据;不能将立即数直接送至段寄存器;SS和SP赋值必须紧邻指令指针IP既不作目的操作数也不做源操作数
2.MOVAX,ES:
[BX+SI+50]
将ES段(BX+SI+50)字单元内容送AX
3.MOVSS,BX
将BX内容送SS
4.MOVES,SS:
[DI+200]
将SS段(DI+200)字单元内容送ES
5.MOVBX,CX
将CS内容送BX
6.MOVWORDPTR[BX+DI],SS
将SS内容送(BX+DI)字单元
CS不能作目的操作数;
立即数不能作目的操作数
7.MOVCL,DH
将DH内容送CL
8.MOVDI,[SI+100]
将(SI+100)字单元内容送DI
9.MOVWORDPTR[DI],DX
将DX内容送(DI)字单元
10.MOVCX,3330
立即数3330送CX
11.MOVBYTEPTR[DI],0
立即数0送(DI)字节单元
堆栈操作指令
PUSH
将来自通用寄存器、段寄存器或存储单元的一个字(16位)内容压入堆栈(SP指向的栈顶个单元)
无
1.PUSHAX
AX内容进栈
通用寄存器、段寄存器、存储单元的一个字
CS不能作目的操作数;
2.PUSHSI
SI内容进栈
3.PUSHES
ES内容进栈
4.PUSHCS
CS内容进栈
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个字节出栈到ES
4.POPSS
栈顶2个字节出栈到SS
5.POP[BX+50]
栈顶2个字节出栈到(BX+50)字单元
6.POP[BP+DI]
栈顶2个字节出栈到(BP+DI)字单元
交换指令
XCHG
实现数据宽度相同的源操作数与目的操作数之间的数据交换,亦即同为8位或16位的累加器与寄存器、寄存器与寄存器以及寄存器与存储单元之间的数据交换
无
1.XCHGAL,BL
AL与BL之间字节交换
段寄存器、CS、IP、立即数不能作为源或目的操作数;两个存储单元之间、段寄存器与段寄存器之间不能进行交换
2.XCHGCX,AX
CX与AX之间字交换
3.XCHGDH,CL
DH与CL之间字节交换
4.XCHGBX,CX
BX与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,60H
8位口地址60H中的1个字节到AL
不能使用除累加器外的其他寄存器进行操作;
不能使用大于255的地址作为8位口地址;不能使用除DX外的其他寄存器作为16位间接口地址,且在间接口寻址时,须对DX预先置地址值
2.INAX,60H
60H内容到AL,61H内容到AH
3.INAL,DX
16位口地址(DX)单元内容到AL
4.INAX,DX
(DX)及(DX+1)口内容到AX
输出指令
OUT
在I/O口独立编址时,使用专门的输出指令OUT,这种输出操作又是指定累加器AL或AX来担当,因此,OUT属于专用累加器传送指令
无
1.OUT60H,AL
AL中的字节输出到8位口60H
不能使用除累加器外的其他寄存器进行操作;
不能使用大于255的地址作为8位口地址;不能使用除DX外的其他寄存器作为16位间接口地址,且在间接口寻址时,须对DX预先置地址值
2.OUT60H,AX
AX中的字输出到8位口60H及61H
3.OUTDX,AL
AL中的字节到16位口地址(DX)
4.OUTDX,AX
AX中的字到(DX)及(DX+1)口
地址传送指令
有效地址传送指令
LEA
将存储单元有效(偏移)地址EA(源操作数)装入一个16位通用寄存器(目的操作数),以使该寄存器作为地址指针
无
1.LEASP,[1234H]
直接地址1234H装入SP
存储器操作数(存储单元有效地址EA)作源操作数
段寄存器、IP不能作目的操作数;16位通用寄存器(BX、BP、SI及DI)作目的操作数
2.LEABX,TABLE
标号或变量TABLE代表的地址装入BX
3.LEASI,[BX]
间接地址(BX)装入SI
4.LEADI,[BX+100]
基址地址(BX+100)装入DI
不能将存储器操作数与寄存器操作数在源与目的操作数的位置上互换(倒置)
5.LEADX,[SI+200]
变址地址(SI+200)装入DX
6.LEAAX,[BP+DI+500]
基(址)变址地址(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段的只有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及OF
1.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)字单元中
5.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,不影响CF
1.INCAL
AL中的内容加1
源操作数为1
为寄存器或存储器;不能是段寄存器或立即数
2.INCDI
DI中的内容加1
3.INCBYTEPTR[2000]
2000存储单元内容加1
4.INCWORDPTR[BP+SI+50]
(BP+SI+50)存储器字单元内容加1
减法类指令
减法指令
SUB
将目的操作数的内容与源操作数的内容相减,其结果(两者之差)存放于目的操作数,或者说从目的操作数的内容中减去源操作数的内容
CF、PF、AF、ZF、SF及OF。
CF=1,表示借位;OF=1,溢出
1.SUBCH,DL
CH中的内容减去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
5.SUBBX,3050H
在BX中减去立即数3050H
6.SUBAL,56
在AL中减去立即数56
带借位的减法指令
SBB
在SUB的基础上再减去CF的值。
适合于多字节或多字的减法
与SUB相同
与SUB相同
与SUB相同
与SUB相同
与SUB相同
减量(减1)指令
DEC
将目的操作数的内容(8位或16位)减1,源操作数1隐含在操作码中。
目的操作数为寄存器或存储器,但不能是段寄存器或立即数
与INC相同
1.DECCL
CL中的内容减1
源操作数为1
为寄存器或存储器;不能是段寄存器或立即数
2.DECAX
AX中的内容减1
3.DECBYTEPTR[BX]
(BX)存储单元内容减1
4.DECWORDPTR[BX+DI+20]
(BX+DI+20)存储器字单元内容减1
求补指令
NEG
用0去减目的操作数的内容(8位或16位),其实质即为求取目的操作数内容的(2的)补码
CF、PF、AF、ZF、SF及OF。
与SUB相同
1.NEGAL
AL中的内容求补码
源操作数为0
为寄存器或存储器;不能是段寄存器或立即数
2.NEGBX
BX中的内容求补码
3.NEGBYTEPTR[BX]
(BX)存储单元内容求补码
4.NEGWORDPTR[BX+SI+5]
(BX+SI+5)存储器字单元内容求补码
比较指令
CMP
将目的操作数的内容减去源操作数的内容,但其结果(两者之差)不回送于目的操作数
CF、PF、AF、ZF、SF及OF。
ZF=1,两数相等;ZF=0,两数不等CF=1,有借位;CF=0,无借位(无符号)SF⊕OF=1,被减数大于减数;SF⊕OF=0,被减数小于减数
1.CMPSI,BP
SI与BP内容比较
源与目的操作数不能同时为存储器操作数
2.CMPCH,[3000]
CH与(3000)存储单元内容比较
寄存器、存储器或立即数
寄存器或存储器;不能是立即数
3.CMPWORDPTR[BX+DI+100],DX
(BX+DI+100)字单元与DX内容比较
4.CMPBYTEPTR[BX+SI],40H
(BX+SI)字节单元与立即数40H比较
5.CMPDI,0550H
DI内容与立即数0550H比较
6.CMPAL,80
累加器AL内容与立即数80比较
乘法类指令
无符号数乘法指令
MUL
不影响PF、AF、ZF、SF只影响CF、OF
1.MULDL
AL与DL内容相乘,乘积在AX中
寄存器或存储器;不能是立即数(8位或16位)
累加器AL(8位)或AX(16位)、DX
2.MULCX
AX与CX内容相乘,乘积在DX和AX中
3.MULBYTEPTR[SI+2]
AL与(SI+2)字节单元内容相乘,结果在AX中
4.MULWORDPTR[DI]
AX与(DI)字单元内容相乘,结果在DX和AX中
带符号数乘法指令
IMUL
又称整型数乘法,即被乘数与乘数都是有符号的整数
不影响PF、AF、ZF、SF只影响CF、OF
1.IMULBL
AL中的带符号数与BL中的带符号数相乘,乘积在AX中
寄存器或存储器;不能是立即数(8位或16位)
累加器AL(8位)或AX(16位)、DX
2.IMULDX
AX中的带符号数与DX中的带符号数相乘,乘积在DX和AX中
3.IMULBYTEPTR[BX]
AL中的带符号数与(BX)字节单元中的带符号数相乘,乘积在AX中
4.IMULWORDPTR[BX+SI+5]
AX中的带符号数与(BX+SI+5)字单元中的带符号数相乘,乘积在DX和AX中
除法类指令
无符号数除法指令
DIV
不影响CF、PF、AF、ZF、SF及OF
1.DIVBL
AX内容除以BL内容,商在AL,余数在AH
寄存器或存储器;不能是立即数(8位或16位)
累加器AX(16位)或DX、AX(前者高16位,后者低16位,共32位,DX看做AX的扩展)
2.DIVBX
DX与AX内容除以BX内容,商在AX,余数在DX
3.DIVBYTEPTR[3040]
AX内容除以(3040)字节单元内容,商在AL,余数在AH
4.DIVWORDPTR[DI]
DX与AX内容除以(DI)字单元内容,商在AX,余数在DX
有符号数除法指令
IDIV
不影响CF、PF、AF、ZF、SF及OF
1.IDIVCL
AX与CL符号数相除,商在AL,余数在AH
寄存器或存储器;不能是立即数(8位或16位)
累加器AX(16位)或DX、AX(前者高16位,后者低16位,共32位,DX看做AX的扩展)
2.IDIVBX
DX、AX与BX符号数相除,商在AX,余数在DX
3.IDIVBYTEPTR[SI]
AX与(SI)字节单元符号数相除,商在AL,余数在AH
4.IDIVWORDPTR[5500H]
DX、AX与(5500H)字单元符号数相除,商在AX,余数在DX
符号扩展类指令
字节扩展成字指令
CBW
为单字节指令。
执行CBW时,将AL中的最高位(符号位)扩展到AH中,亦即AH中每一位的值与AL中的符号位相同。
当AL<80H,为正数,执行CBW后,AH=00H;当AL>=80H,为负数,执行CBW后,AH=FFH=-1(补码)
无
字扩展成双字指令
CWD
执行CWD,将AX中的最高位(符号位)扩展到DX中,亦即DX中每一位的值与AX中的符号位相同。
当AX<8000H,为正数,执行CWD后,DX=0000H;当AX>=8000H,为负数,执行CWD后,DX=FFFFH=-1(补码)
无
十进制调整类指令
加法的十进制调整
加法的ASCII调整指令
AAA
针对两个非组合BCD码相加在AL中的结果,将其调整为BCD码。
被调整的操作数隐含在AL中,调整后的正确结果在AH和AL即AX中
只影响AF、CF,对PF、SF、ZF及OF无影响
加法的十进制调整指令
DAA
针对两个组合BCD码相加在AL中的结果,将其调整为BCD码。
被调整的操作数隐含在AL中,调整后的正确结果仍在AL中
影响AF、CF、PF、SF和ZF,对OF无影响
减法的十进制调整
减法的ASCII调整指令
AAS
两个非组合BCD码相减在AL中的结果,若低4位大于9或AF=1(此处表示向高4位借位),就从AL中减去6,从AH中减去1,CF=1(此处表示AL从AH借位);AL减6后再和OFH相“与”,调整的结果在AL中,其高4位为0,低4位为0-9之间的一个数,即为正确的非组合BCD码
只影响AF、CF,对PF、SF、ZF及OF无影响
减法的十进制调整指令
DAS
两个组合BCD码相减在AL中的结果,若低4位大于9或AF=1,则低4位减6(06H),AF=1;若高4位大于9亦即(AL&F0H)>90H或CF=1,则高4位减6,亦即AL-60H,CF=1
影响AF、CF、PF、SF和ZF,对OF无影响
乘法的十进制调整
乘法的ASCII调整指令
AAM
将被乘数和乘数均转换为非组合BCD码,其乘积也要求是非组合BCD码放在AX中
影响PF、SF及ZF,不影响AF、CF及OF
除法的十进制调整
除法的ASCII调整指令
AAD
将被除数和除数均转换为非组合BCD码,其商也要求是非组合BCD码放在AL中,余数也要求是非组合BCD码放在AH中。
但在做除法之前,先对AX中的被除数的非组合BCD码进行ASCII调整,其指令为AAD
影响PF、SF及ZF,不影响AF、CF及OF
逻辑运算指令
取反(逻辑非)指令
NOT
执行该指令时,对操作数取反
使CF=0、OF=0;影响PF、ZF及SF;对AF不确定
1.NOTBL
BL内容取反,结果在BL中
操作数只有一个,可以是寄存器或存储器操作数,但不能是立即数
2.NOTAX
AX内容取反,结果在AX中
3.NOTBYTEPTR[2000H]
(2000H)单元内容取反,结果在2000H中
逻辑运算类指令
4.NOTWORDPTR[SI+2]
(SI+2)字单元内容取反,结果
“与”(逻辑乘)指令
AND
将源操作数和目的操作数相“与”,结果存入目的操作数。
相“与”时,两数对应位均为1,则该结果为1,其他情况下均为0
与NOT相同
1.ANDCX,DI
DI和CX内容相“与”,结果在CX中
寄存器、存储器或立即数
寄存器、存储器或单独列出的累加器(也可含在寄存器中),但不能为立即数(因为不能存放结果)
2.ANDDH,[2000]
(2000)字节单元和DH内容相“与”,存入(DI+4)字单元
3.ANDWORDPTR[DI+4],DX
DX和(DI+4)字单元内容相“与”,存入(DI+4)字单元
4.ANDBYTEPTR[BX+10],50
50和(BX+10)字节单元内容相“与”,存入(BX+10)字节单元
5.ANDBL,01100110B
66H和BL内容相“与”,存入AX
6.ANDAX,3344H
3344H和AX内容相“与”,存入AX
“或”(逻辑和)指令
OR
将源操作数和目的操作数相“或”,结果存入目的操作数。
用1去相“或”时,该位结果为1,起到置位的作用;而用0去相“或”时,则保留原来位的结果
与AND相同
格式与AND相同
与AND相同
与AND相同
“异或”指令
XOR
将源操作数与目的操作数取“异或”,结果存入目的操作数。
用1去“异或”时,使对应位取反;而用0去“异或”时,则保留原来位的结果(对应位相同,结果为0;对应位不同,结果为1)
与AND相同
格式与AND相同
与AND相同
与AND相同
测试指令
TEST
将源操作数与目的操作数相“与”,但结果不送回到目的操作数。
依据对ZF(最低位是否为0,是,为1,否则为0)、SF(最高位是否为1,是,为1,否则为0)的判断,来决定程序转移是否
与AND相同
与AND相同
与AND相同
与AND相同
移位指令
逻辑左移指令
SHL
对无符号数而言,左移1位相当于乘以2,左移若干位相当于乘以2的幂次。
但当CF首次出现1(表示已到扩展位)之后,便不遵循此规则
影响CF、PF、ZF、SF及OF;对AF不确定
1.SHLAH,1
AH内容左移1位
寄存器或存储器,其内容可以是8位或16位,、但不能为立即数
2.SHLCX,1
CX内容左移1位
3.MOVCL,4
4.SHLDL,CL
DL内容左移4位
5.SHLAX,CL
AX内容左移4位
6.SHLBYTEPTR[DI+2],1
(DI+2)字节单元内容左移1位
7.SHLWORDPTR[BX+100],1
(BX+100)字单元内容左移1位
8.MOVCL,3
9.SHLBYTEPTR[1000]
(1000)字节单元内容左移3位
10.SHLWORDPTR{BX+SI+10]
(BX+SI+10)字单元内容左移3位
算术左移指令
SAL
对带符号数而言,左移1位乘2,左移若干位乘2的幂次。
但当符号位发生变化的情况下,也不遵循此规则
影响CF、PF、ZF、SF及OF;对AF不确定
1.SALAH,1
AH内容左移1位
寄存器或存储器,其内容可以是8位或16位,但不能为立即数
2.SALCX,1
CX内容左移1位
3.MOVCL,4
4.SALDL,CL
DL内容左移4位
5.SALAX,CL
AX内容左移4位
6.SALBYTEPTR[DI+2],1
(DI+2)字节单元内容左移1位
7.SALWOR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 微机 原理 指令 整理