微机原理指令整理..
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类别指
令
类
型
指令名称指令缩写指令功能影响标志格式格式含义源操作数目的操作数
传送指令通
用
传
输
指
令
基本传输
指令
MOV
将源操作数中的数据传送至目的操
作数,以实现寄存器与寄存器、寄
存器与存储器之间数据传送以及立
即数送往寄存器或存储器
无
1.MOV WORD PTR [2000],AX
将AX送2000和
2001单元(低位
在低地址,高位
在高地址,下同)
至少有一个是寄存器
(除立即数送存储器
外);
不能在两个存储单元之
间直接传送数据;
不能在两个段寄存器之
间直接传送数据;
不能将立即数直接送至
段寄存器;SS和SP赋
值必须紧邻
指令指针IP既不作目
的操作数也不做源操作
数
2.MOV AX,ES:[BX+SI+50]
将ES段
(BX+SI+50)字
单元内容送AX
3.MOV SS,BX 将BX内容送SS
4.MOV ES,SS:[DI+200]
将SS段(DI+200)
字单元内容送ES
5.MOV BX,CX 将CS内容送BX
6.MOV WORD PTR
[BX+DI],SS
将SS内容送
(BX+DI)字单元
CS不能作目
的操作数;
立即数不能
作目的操作
数
7.MOV CL,DH 将DH内容送CL
8.MOV DI,[SI+100]
将(SI+100)字
单元内容送DI
9.MOV WORD PTR [DI],DX
将DX内容送(DI)
字单元
10.MOV CX,3330 立即数3330送
微机原理指令整理 1
微机原理指令整理
2
CX
11.MOV BYTE PTR [DI],0
立即数0送(DI)
字节单元 堆栈操作
指令
PUSH
将来自通用寄存器、段寄存器或存储单元的一个字(16位)内容压入堆栈(SP 指向的栈顶个单元)
无
1.PUSH AX AX 内容进栈 通用寄存器、段寄存器、存储单元的一个字
CS 不能作目的操作数; 2.PUSH SI
SI 内容进栈 3.PUSH ES
ES 内容进栈 4.PUSH CS
CS 内容进栈 5.PUSH WORD PTR [BX]
(BX)和(BX+1)单元内容进栈
6.PUSH WORD PTR BETA [BX] (BX+BETA)字单元内容进栈 不能使用8位源或目的操作数 POP
将栈顶个单元的内容退出(弹出)到通用寄存器、段寄存器或存储单元
无
1.POP BX
栈顶2个字节出栈到BX 不能使用8位源或目的操作数 2.POP DX 栈顶2个字节出栈到DX 通用寄存器、段寄存器、存储单元的一个字节;
CS 不能作目的操作数
3.POP ES
栈顶2个字节出栈到ES 4.POP SS
栈顶2个字节出栈到SS 5.POP [BX+50]
栈顶2个字节出栈到(BX+50)字单元
6.POP [BP+DI]
栈顶2个字节出栈到(BP+DI )字单元
交换指令XCHG 实现数据宽度相同的源操作数与目
的操作数之间的数据交换,亦即同
为8位或16位的累加器与寄存器、
寄存器与寄存器以及寄存器与存储
单元之间的数据交换
无
1.XCHG AL,BL
AL与BL之间字
节交换
段寄存器、CS、IP、立
即数不能作为源或目的
操作数;两个
存储单元之间、段寄存
器与段寄存器之间不能
进行交换
2.XCHG CX,AX
CX与AX之间字
交换
3.XCHG DH,CL
DH与CL之间字
节交换
4.XCHG BX,CX
BX与CX之间字
交换
5.XCHG BL,[1000]
BL与1000单元
内容字节交换
6.XCHG WORD PTR [DI],DX
(DI)字单元内
容与DX字交换
专用累加器传送指令换码指令XLAT
专门使用累加器AL并将其中的值
(比如按二进制、十进制或十六进
制等编码)变换成内存某一表格区
内对应的另一种编码(比如发光二
极管LED的字形码或其他通讯码等)
无
MOV BX,TABLE_SEGCODE
XLAT
设置SEGCODE表
首址
对表进行检索
有操作码,无操作数。
操作数AL隐藏在操作
码之中
输入指令IN
在I/O口独立编址时,使用专门的
输入指令IN,这种输入操作又是指
定累加器AL或AX来担当,因此,
IN属于专用累加器传送指令
无
1.IN AL,60H
8位口地址60H
中的1个字节到
AL
不能使用除累加器外的
其他寄存器进行操作;
不能使用大于255的地
址作为8位口地址;
不能使用除DX外的其
他寄存器作为16位间
接口地址,且在间接口
寻址时,须对DX预先置
2.IN AX,60H
60H内容到AL,
61H内容到AH
3.IN AL,DX
16位口地址(DX)
单元内容到AL
4.IN AX,DX (DX)及(DX+1)口
微机原理指令整理 3
内容到AX 地址值
输出指令OUT 在I/O口独立编址时,使用专门的
输出指令OUT,这种输出操作又是指
定累加器AL或AX来担当,因此,
OUT属于专用累加器传送指令
无
1.OUT 60H,AL
AL中的字节输出
到8位口60H
不能使用除累加器外的
其他寄存器进行操作;
不能使用大于255的地
址作为8位口地址;
不能使用除DX外的其
他寄存器作为16位间
接口地址,且在间接口
寻址时,须对DX预先置
地址值
2.OUT 60H,AX
AX中的字输出到
8位口60H及61H
3.OUT DX,AL
AL中的字节到16
位口地址(DX)
4.OUT DX,AX
AX中的字到(DX)
及(DX+1)口
地址
传送指令有效地址
传送指令
LEA
将存储单元有效(偏移)地址EA(源
操作数)装入一个16位通用寄存器
(目的操作数),以使该寄存器作
为地址指针
无
1.LEA SP,[1234H]
直接地址1234H
装入SP
存储器操
作数(存储
单元有效
地址EA)作
源操作数
段寄存器、
IP不能作目
的操作数;
16位通用寄
存器(BX、
BP、SI及
DI)作目的
操作数
2.LEA BX,TABLE
标号或变量
TABLE代表的地
址装入BX
3.LEA SI,[BX]
间接地址(BX)装
入SI
4.LEA DI,[BX+100]
基址地址
(BX+100)装入
DI
不能将存储器操作数与
寄存器操作数在源与目
的操作数的位置上互换
(倒置)
5.LEA DX,[SI+200]
变址地址
(SI+200)装入
DX
6.LEA AX,[BP+DI+500] 基(址)变址地
微机原理指令整理 4
址(BP+DI+500)
装入AX
使用DS段
的地址指针传送指
令LDS
将双字地址指针(包括偏移地址和
段地址)分别传送到指令中给出的
16位寄存器及数据段寄存器DS中,
双字地址指针从源操作数的双字内
容即(EA)和(EA+2)字单元得到
无
1.LDS BX,[3250H]
由直接地址得到
双字地址指针
存储器操
作数(存储
单元有效
地址(EA)
作为源操
作数
16位寄存器
REG(BX、BP、
SI及DI)作
为目的操作
数
2.LDS SI,TMP
由标号(符号地
址)的内容得到
双字地址指针
3.LDS BP,[BX]
由间接地址(BX)
的内容得到双字
地址指针
4.LDS DI,[BX+20]
由基址地址
(BX+20)的内容
得到双字地址指
针
5.LDS BX,[DI+40]
由变址地址
(DI+40)的内容
得到双字地址指
针
不能将存储器操作数
(存储单元有效地址
EA)与寄存器操作数在
源与目的操作数的位置
上互换(倒置)
6.LDS BX,[BP+SI+500]
由基(址)变址
地址
(BP+SI+500)的
内容得到双字地
址指针
使用ES段的地址指LES
功能与上基本相同,差别在于能提
供偏移地址直接访问和使用ES段的
无
微机原理指令整理 5
针传送指
令只有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.ADD DI,SI
寄存器SI的内容
加到DI中
源与目的操作数不能同
时为存储器操作数
2.ADD CX,[5000]
5000和5001单
元内容加到CX中
寄存器、存
储器或立
即数
寄存器或存
储器;
不能是立即
数
3.ADD WORD PTR
[BP+DI+30],DX
寄存器DX的内容
加到(BP+DI+30)
字单元中
4.ADD WORD PTR
[SI+100],2040
立即数2040加到
(SI+100)字单
元中
微机原理指令整理 6
5.ADD BH,86H 立即数86H加到BH中
6.ADD AX,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.INC AL AL中的内容加1 源操作数
为1
为寄存器或
存储器;
不能是段寄
存器或立即
数
2.INC DI DI中的内容加1
3.INC BYTE PTR [2000]
2000存储单元内
容加1
4.INC WORD PTR
[BP+SI+50]
(BP+SI+50)存储
器字单元内容加
1
减法
类指令减法指令SUB
将目的操作数的内容与源操作数的
内容相减,其结果(两者之差)存
放于目的操作数,或者说从目的操
作数的内容中减去源操作数的内容
CF、PF、AF、
ZF、SF及OF。
CF=1,表示借
位;
OF=1,溢出
1.SUB CH,DL
CH中的内容减去
DL中的内容,结
果在CH中
源与目的操作数不能同
时为存储器操作数
2.SUB BL,[DI]
在BL中减去(DI)
单元的内容
寄存器、存
储器或立
即数
寄存器或存
储器;
不能是立即
数
3.SUB [BP+4},cl
在SS段的(BP+4)
单元中减去CL的
内容
4.SUB WORD PTR
[BX+DI+50],300
在(BX+DI+50)字
单元中减去立即
数300
微机原理指令整理7
5.SUB BX,3050H 在BX中减去立即数3050H
6.SUB AL,56 在AL中减去立即数56
带借位的减法指令SBB
在SUB的基础上再减去CF的值。
适
合于多字节或多字的减法
与SUB相同
与SUB相同与SUB相同
与SUB相同与SUB相同
减量(减1)指令DEC
将目的操作数的内容(8位或16位)
减1,源操作数1隐含在操作码中。
目的操作数为寄存器或存储器,但
不能是段寄存器或立即数
与INC相同 1.DEC CL CL中的内容减1 源操作数
为1
为寄存器或
存储器;
不能是段寄
存器或立即
数
2.DEC AX AX中的内容减1
3.DEC BYTE PTR [BX]
(BX)存储单元内
容减1
4.DEC WORD PTR
[BX+DI+20]
(BX+DI+20)存储
器字单元内容减
1
求补指令NEG 用0去减目的操作数的内容(8位或
16位),其实质即为求取目的操作
数内容的(2的)补码
CF、PF、AF、
ZF、SF及OF。
与SUB相同
1.NEG AL
AL中的内容求补
码
源操作数
为0
为寄存器或
存储器;
不能是段寄
存器或立即
数
2.NEG BX
BX中的内容求补
码
3.NEG BYTE PTR [BX]
(BX)存储单元内
容求补码
4.NEG WORD PTR [BX+SI+5]
(BX+SI+5)存储
器字单元内容求
补码
比较指令CMP 将目的操作数的内容减去源操作数
的内容,但其结果(两者之差)不
回送于目的操作数
CF、PF、AF、
ZF、SF及OF。
ZF=1,两数相
1.CMP SI,BP
SI与BP内容比
较
源与目的操作数不能同
时为存储器操作数
2.CMP CH,[3000] CH与(3000)存储寄存器、存寄存器或存
微机原理指令整理8
等;ZF=0,两数不等
CF=1,有借位;CF=0,无借位(无符号) SF⊕OF=1,被减数大于减数;SF⊕OF=0,被减数小于减数
单元内容比较储器或立
即数
储器;
不能是立即
数
3.CMP WORD PTR
[BX+DI+100],DX
(BX+DI+100)字
单元与DX内容比
较
4.CMP BYTE PTR
[BX+SI],40H
(BX+SI)字节单
元与立即数40H
比较
5.CMP DI,0550H
DI内容与立即数
0550H比较
6.CMP AL,80
累加器AL内容与
立即数80比较
乘法类指令无符号数
乘法指令
MUL
不影响PF、
AF、ZF、SF
只影响CF、
OF
1.MUL DL
AL与DL内容相
乘,乘积在AX中
寄存器或
存储器;
不能是立
即数(8位
或16位)
累加器AL(8
位)或AX(16
位)、DX
2.MUL CX
AX与CX内容相
乘,乘积在DX和
AX中
3.MUL BYTE PTR [SI+2]
AL与(SI+2)字节
单元内容相乘,
结果在AX中
4.MUL WORD PTR [DI]
AX与(DI)字单元
内容相乘,结果
在DX和AX中
带符号数
乘法指令
IMUL
又称整型数乘法,即被乘数与乘数
都是有符号的整数
不影响PF、
AF、ZF、SF
只影响CF、
1.IMUL BL
AL中的带符号数
与BL中的带符号
数相乘,乘积在
寄存器或
存储器;
不能是立
累加器AL(8
位)或AX(16
位)、DX
微机原理指令整理9
微机原理指令整理
10
OF AX 中
即数(8位
或16位)
2.IMUL DX
AX 中的带符号数与DX 中的带符号数相乘,乘积在DX 和AX 中
3.IMUL BYTE PTR [BX]
AL 中的带符号数与(BX)字节单元
中的带符号数相乘,乘积在AX 中
4.IMUL WORD PTR [BX+SI+5]
AX 中的带符号数与(BX+SI+5)字单元中的带符号数相乘,乘积在DX 和AX 中
除法
类
指令
无符号数除法指令 DIV
不影响CF 、PF 、AF 、ZF 、SF 及OF
1.DIV BL AX 内容除以BL 内容,商在AL ,余数在AH 寄存器或存储器; 不能是立即数(8位或16位) 累加器AX (16位)或DX 、AX (前者高16位,后者低16
位,共32位,DX 看做AX 的扩展) 2.DIV BX
DX 与AX 内容除以BX 内容,商在AX ,余数在DX
3.DIV BYTE PTR [3040]
AX 内容除以
(3040)字节单元内容,商在AL ,
余数在AH 4.DIV WORD PTR [DI]
DX 与AX 内容除
以(DI)字单元内容,商在AX,余数在DX
有符号数除法指令IDIV
不影响CF、
PF、AF、ZF、
SF及OF
1.IDIV CL
AX与CL符号数
相除,商在AL,
余数在AH
寄存器或
存储器;
不能是立
即数(8位
或16位)
累加器AX
(16位)或
DX、AX(前
者高16位,
后者低16
位,共32
位,DX看做
AX的扩展)
2.IDIV BX
DX、AX与BX符号
数相除,商在AX,
余数在DX
3.IDIV BYTE PTR [SI]
AX与(SI)字节单
元符号数相除,
商在AL,余数在
AH
4.IDIV WORD PTR [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中每一
无
微机原理指令整理11
位的值与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,
影响AF、CF、
PF、SF和ZF,
对OF无影响
微机原理指令整理12
指令则高4位减6,亦即AL-60H,CF=1 乘
法的十进制调整乘法
的
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.NOT BL
BL内容取反,结
果在BL中
操作数只有一个,可以
是寄存器或存储器操作
数,但不能是立即数
2.NOT AX
AX内容取反,结
果在AX中
3.NOT BYTE PTR [2000H]
(2000H)单元内
容取反,结果在
2000H中
逻 4.NOT WORD PTR [SI+2] (SI+2)字单元内
微机原理指令整理13
辑
运
算
类
指
令
容取反,结果“与”(逻
辑乘)指
令AND
将源操作数和目的操作数相“与”,
结果存入目的操作数。
相“与”时,
两数对应位均为1,则该结果为1,
其他情况下均为0
与NOT相同
1.AND CX,DI
DI和CX内容相
“与”,结果在
CX中
寄存器、存
储器或立
即数
寄存器、存
储器或单独
列出的累加
器(也可含
在寄存器
中),但
不能为立即
数(因为不
能存放结
果)
2.AND DH,[2000]
(2000)字节单元
和DH内容相
“与”,存入
(DI+4)字单元
3.AND WORD PTR [DI+4],DX
DX和(DI+4)字单
元内容相“与”,
存入(DI+4)字单
元
4.AND BYTE PTR
[BX+10],50
50和(BX+10)字
节单元内容相
“与”,存入
(BX+10)字节单
元
5.AND BL,01100110B
66H和BL内容相
“与”,存入AX
6.AND AX,3344H
3344H和AX内容
相“与”,存入
AX
“或”(逻
辑和)指
令OR
将源操作数和目的操作数相“或”,
结果存入目的操作数。
用1去相“或”
时,该位结果为1,起到置位的作用;
与AND相同
格式与AND相同
与AND相同与AND相同
微机原理指令整理14
而用0去相“或”时,则保留原来位的结果
“异或”指令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.SHL AH,1 AH内容左移1位寄存器或存
储器,
其内容可以
是8位或16
位,、
但不能为立
即数
2.SHL CX,1 CX内容左移1位
3.MOV CL,4
4.SHL DL,CL DL内容左移4位
5.SHL AX,CL AX内容左移4位
6.SHL BYTE PTR [DI+2],1
(DI+2)字节单元
内容左移1位
7.SHL WORD PTR
[BX+100],1
(BX+100)字单元
内容左移1位
8.MOV CL,3
9.SHL BYTE PTR [1000] (1000)字节单元
微机原理指令整理15
内容左移3位
10.SHL WORD PTR {BX+SI+10] (BX+SI+10)字单元内容左移3位
算术左移指令SAL
对带符号数而言,左移1位乘2,左
移若干位乘2的幂次。
但当符号位
发生变化的情况下,也不遵循此规
则
影响CF、PF、
ZF、SF及OF;
对AF不确定
1.SAL AH,1 AH内容左移1位寄存器或存
储器,
其内容可以
是8位或16
位,但
不能为立即
数
2.SAL CX,1 CX内容左移1位
3.MOV CL,4
4.SAL DL,CL DL内容左移4位
5.SAL AX,CL AX内容左移4位
6.SAL BYTE PTR [DI+2],1
(DI+2)字节单元
内容左移1位
7.SAL WORD PTR
[BX+100],1
(BX+100)字单元
内容左移1位
8.MOV CL,3
9.SAL BYTE PTR [1000]
(1000)字节单元
内容左移3位
10.SAL WORD PTR
{BX+SI+10]
(BX+SI+10)字单
元内容左移3位
逻辑右移指令SHR
每右移1位时,高位向低位移1位,
最低位移入进位位CF,CF的内容被
冲掉(自动消失),而最高位D15(或
D7)补0。
对无符号数而言,右移1
位相当于除以2,右移若干位相当于
除以2的幂次
与SHL相同
格式与SHL相同
与SHL相同与SHL相同
算术右移指令SAR
右移时,最高位D15(或D7)维持
不变。
带符号位数右移1位除以2,
与SAL相同
格式与SAL相同
与SAL相同与SAL相同
微机原理指令整理16
右移多位除以2的幂次。
当执行SAR 指令截断整数时,对整数使其值接近于0,对负数使其值更接近于负无穷大
循环移位指令不带进位
位循环左
移指令
ROL
每左移1位时,低位向高位移1位,
最高位D15(或D7)移入进位位CF,
并同时移入最低位
仅影响OF及
CF
与SHL相同与SHL相同
不带进位
位循环右
移指令
ROR
每右移1位时,高位向低位移1位,
最低位移入进位位CF,并且同时移
入最高位D15(或D7)
仅影响OF及
CF
与SHL相同与SHL相同
带进位位
循环左移
指令
RCL
将CF作为扩展位放在循环之中,在
每左移1位时,低位向高位移1位,
最高位D15(或D7)移入进位位CF,
而CF移入最低位
仅影响OF及
CF
与SHL相同与SHL相同
带进位位
循环右移
指令
RCR
每右移1位时,高位向低位移1位,
最低位移入进位位CF,而CF移入最
高位D15(或D7)
仅影响OF及
CF
与SHL相同与SHL相同
串操作类指令重
复
前
缀
指
令
REP
串操作的次数用CX作为计数器来计
数。
执行REP时,先判断CX=0?,若
CX不等于0,则重复执行串操作,
CX<-CX-1(次数减1),这样一直持
续到CX=0为止
REPE/REPZ
除了满足上述CX不等于0的条件之
外,再加上一个ZF=1(相等/为零)
的条件,这样才能重复执行。
反过
微机原理指令整理17
微机原理指令整理
18
来说,只有在ZF=0或CX=0时,就退出串操作。
REPE/REPZ 有两种形式(写法),功能相同,使用时可任选。
常用作串比较(结果相等)或串搜索(结果相同)的重复前缀
REPNE/REPNZ 除了满足CX 不等于0的条件之外,再加上一个ZF=0(不相等/不为零)的条件,才重复执行。
只有在ZF=1
或者CX=0时,退出串操作。
REPNE/REPNZ 也有两种形式(写法),常用作串比较(结果不等)或串搜索(结果不同)的重复前缀
串
传送指令
MOVS 串传送(字或字节均可),在不致引起混淆的情况下,也可用MOVS 取代MOVSB 或MOVSW
源串隐含在DS 段,用SI 间接寻址
目的串隐含在ES 段,用DI 间接寻址 字节串传送 MOVSB 将源串中的字节传送至目的串。
串源隐含在DS 段,用SI 间接寻址;目的串隐含在ES 段,用DI 间接寻址。
每执行1次传送,SI 与DI 各自自动+/-1,指向下一个字节单元
源串隐含在DS 段,用SI 间接寻址
目的串隐含在ES 段,用DI 间接寻址 字传送 MOVSW 将源串中的字传送至目的串。
串源隐含在DS 段,用SI 间接寻址;目的串隐含在ES 段,用DI 间接寻址。
每执行1次传送,SI 与DI 各自自动+/-2,指向下一个字单元
源串隐含在DS 段,用SI 间接寻址
目的串隐含在ES 段,用DI 间接寻址
串比较指令
CMPS
串比较(字或字节均可),在不致
引起混淆的情况下,也可用CMPS取
代CMPSB或CMPSW
仅影响CF、
PF、AF、ZF、
SF及OF
源串隐含
在DS段,
用SI间接
寻址
目的串隐含
在ES段,用
DI间接寻址
字节串传
送
CMPSB
将源串中的字节传送至目的串,但
不回送结果到目的串。
串源隐含在
DS段,用SI间接寻址;目的串隐含
在ES段,用DI间接寻址。
每执行1
次比较,SI与DI各自自动+/-1,指
向下一个字节单元
仅影响CF、
PF、AF、ZF、
SF及OF
源串隐含
在DS段,
用SI间接
寻址
目的串隐含
在ES段,用
DI间接寻址字串传送CMPSW
将源串中的字传送至目的串,但不
回送结果到目的串。
串源隐含在DS
段,用SI间接寻址;目的串隐含在
ES段,用DI间接寻址。
每执行1次
比较,SI与DI各自自动+/-2,指向
下一个字单元
仅影响CF、
PF、AF、ZF、
SF及OF
源串隐含
在DS段,
用SI间接
寻址
目的串隐含
在ES段,用
DI间接寻址
串搜索指令
SCAS
串搜索(字或字节均可),在不致
引起混淆的情况下,也可用CSCAS
取代SCASB或SCASW
累加器
AL/AX(存
放关键字/
字节)
字节串搜
索
SCASB
用累加器AL/AX(存放一个关键字
节)取代源串,寻找目的串中与其
不同或相同的字节。
用AL/AX减去
目的串,但不回送结果到目的串,
也不回送结果到AL/AX。
目的串隐含
在ES段,用DI间接寻址。
每执行
累加器
AL/AX(存
放关键字/
字节)
微机原理指令整理19
一次搜索,SI与DI各自自动+/-1,指向下一字节单元
字串搜索SCASW 用累加器AL/AX(存放一个关键字)
取代源串,寻找目的串中与其不同
或相同的字。
用AL/AX减去目的串,
但不回送结果到目的串,也不回送
结果到AL/AX。
目的串隐含在ES段,
用DI间接寻址。
每执行一次搜索,
SI与DI各自自动+/-2,指向下一字
单元
累加器
AL/AX(存
放关键字/
字节)
取串指令
LODS
取串(字或字节均可),在不致引
起混淆的情况下,也可用LODS取代
LODSB或LODSW
将源串取
入累加器
AL/AX,
源串隐含
在DS段,
用SI间接
寻址
取字节串LODSB
将源串取入累加器AL/AX。
源串隐含
在DS段,用SI间接寻址。
每执行
一次取入操作,SI自动+/-1,指向
下一个字节单元
将源串取
入累加器
AL/AX,
源串隐含
在DS段,
用SI间接
寻址
取字串LODSW
将源串取入累加器AL/AX。
源串隐含
在DS段,用SI间接寻址。
每执行
将源串取
入累加器
微机原理指令整理20
一次取入操作,SI自动+/-2,指向下一个字单元AL/AX,源串隐含在DS段,用SI间接寻址
存串指令
STOS
存串(字或字节均可),在不致引
起混淆的情况下,也可用STOS取代
STOSB或STOSW
将源串取
入累加器
AL/AX
目的串隐含
在ES段,用
DI间接寻址存字节串STOSB
将累加器AL/AX的内容存放到目的
串(区)。
目的串隐含在ES段,用
DI间接寻址。
每执行1次存放操作,
DI自动+/-1,指向下一个字节单元
将源串取
入累加器
AL/AX
目的串隐含
在ES段,用
DI间接寻址存字串STOSW
将累加器AL/AX的内容存放到目的
串(区)。
目的串隐含在ES段,用
DI间接寻址。
每执行1次存放操作,
DI自动+/-2,指向下一个字单元
将源串取
入累加器
AL/AX
目的串隐含
在ES段,用
DI间接寻址
程
序控制类指令转
移
指
令
无条件转
移指令
JMP
若为段内,则转移地址送IP;
若为段间,则转移地址偏移量部分
送IP,段地址部分送CS
格式为:JMP OPRD
(OPRD 为转移的目标地址(程序转
移地址),除短转移时OPRD为8位
符号数之外,其余情况同CALL)
JMP SHORT DEST
段内直接(相对)
短转移
JMP NEAR PTR MULTI
段内直接(相对)
近转移
JMP WORD PTR MULTI 段内间接转移
JMP FAR PTR DEST
段间直接(远)
转移
JMP DWORD PTR DEST 段间间接转移简单的标JZ/JE 结果为0(相等),即ZF=1,则转对标志无影
微机原理指令整理21。