完整word版微机原理指令整理.docx

上传人:b****2 文档编号:11774225 上传时间:2023-06-02 格式:DOCX 页数:135 大小:30.38KB
下载 相关 举报
完整word版微机原理指令整理.docx_第1页
第1页 / 共135页
完整word版微机原理指令整理.docx_第2页
第2页 / 共135页
完整word版微机原理指令整理.docx_第3页
第3页 / 共135页
完整word版微机原理指令整理.docx_第4页
第4页 / 共135页
完整word版微机原理指令整理.docx_第5页
第5页 / 共135页
完整word版微机原理指令整理.docx_第6页
第6页 / 共135页
完整word版微机原理指令整理.docx_第7页
第7页 / 共135页
完整word版微机原理指令整理.docx_第8页
第8页 / 共135页
完整word版微机原理指令整理.docx_第9页
第9页 / 共135页
完整word版微机原理指令整理.docx_第10页
第10页 / 共135页
完整word版微机原理指令整理.docx_第11页
第11页 / 共135页
完整word版微机原理指令整理.docx_第12页
第12页 / 共135页
完整word版微机原理指令整理.docx_第13页
第13页 / 共135页
完整word版微机原理指令整理.docx_第14页
第14页 / 共135页
完整word版微机原理指令整理.docx_第15页
第15页 / 共135页
完整word版微机原理指令整理.docx_第16页
第16页 / 共135页
完整word版微机原理指令整理.docx_第17页
第17页 / 共135页
完整word版微机原理指令整理.docx_第18页
第18页 / 共135页
完整word版微机原理指令整理.docx_第19页
第19页 / 共135页
完整word版微机原理指令整理.docx_第20页
第20页 / 共135页
亲,该文档总共135页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

完整word版微机原理指令整理.docx

《完整word版微机原理指令整理.docx》由会员分享,可在线阅读,更多相关《完整word版微机原理指令整理.docx(135页珍藏版)》请在冰点文库上搜索。

完整word版微机原理指令整理.docx

完整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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2