微机原理指令小结_第1页
微机原理指令小结_第2页
微机原理指令小结_第3页
微机原理指令小结_第4页
微机原理指令小结_第5页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8086CPU指令小结

所有指令:

(1)立即数不能作为目的操作数。

(2)不能在2个存储单元之间直接进行操作(串操作除外)。

(3)MOV指令和堆栈指令是惟一能对段存放器进行操作的指令。

(4)源和目的操作数的数据类型必须匹配,都是8位,或都是16位。

(5)CS、IP不能直接作为操作数。

(6)指令中至少要有一项明确说明传送的是字节还是字,如只没有,可通过PTR进行设置,

一、传送指令

(1)6种指令:通用传送指令、堆栈操作指令、交换操作指令、I/O操作指令、目的地址传送指令

和标志传送指令。

(2)对标志位的影响:除标志传送(SAHF、POPF)外,均不影响标志位。

(3)操作数表示方法:立即数一一data,存储器单元地址一一mem,

存放器一一reg,段存放器一一segrego

1.通用传送指令:完成数据传送

(1)指令格式:MOVOPRD1,OPRD2:[目的操作数OPRD1]-[源操作数OPRD2J

(2)源OPRD2:data、mem、reg、segrego

(3)目的OPRD1:mem、reg、segrego

(4)通用传送指令MOV和堆栈指令是唯一允许以段存放器(代码段存放器CS和指令指针IP除

外,即CS、IP不能作为直接操作数)作为操作数的指令,不允许通过MOV指令直接以立即数方式给

段存放器赋值,不允许直接在两个段存放器之间直接进行传送。

(5)8位/16位操作。

2.堆栈操作指令:将数据压人/弹出堆栈

(1)指令格式:

入枝:PUSHOPRD:先修改堆栈指针SP-2,然后将数据压入堆栈。

;SP=SP・L[SP-操作数高8位:SP=SP-1,[SP]=操作数低8位。

出栈:POPOPRD:先将数据弹出堆栈,然后修改堆栈指针SP+2。

;(操作数低8位)一[SP],SP=SP+1:(操作数高8位)—[SP],SP=SP+1n

(2)操作数:mem、reg>segrego操作数不能是立即数data。

(3)仅能进行字运算(16位操作)。

(4)堆栈存取原则为后进先出,只有一个人/出口SS:SP,SP始终指向栈顶,SP是自动修改

的,SP在初始化中需要设置。

(5)PUSH、POP指令必须成对使用。

3.交换操作指令:XCHG——数据交换;XLAT一一完成一个字节的换码转换

(I)指令格式:

交换操作指令:XCHGOPRD1,OPRD2;[OPRDI]--[OPRD2]

累加器换码指令(表转换指令、查表指令):XLAT;(AL)一((DS)X16+(BX)+(AL:)

(2)XCHG:段存放器和立即数不能作为一个操作数,8位/16位操作。

(3)XLAT:表首地址在BX中,AL的内容作为某一项到表首的偏移量(256字节的表的卜标),

转换后的结果存放在AL中。

4.I/O操作指令:累加器(AX/AL)与I/O端口之间的数据传送

(1)指令格式:

输入指令:INAL/AX,PORT;(AL/AX)一[PORT]

INAL/AX,DX;(AL/AX)-[DX]

输出指令:OUTPORT,AL/AX;[PORT]-(AL/AX)

OUTDX,AL/AX;[DX]*-(AL/AX)

(2)当端口地址W255时,使用PORT(8位端口直接地址);当端口地址2255时,必须用DX

(16位端口直接地址)作桥梁。DX作端口寻址最多可寻找64K个端口。

⑶PORT为直接寻址,8位/16位操作。

5.目的地址传送指令

(1)取有效地址指令;LEAOPRD1,OPRD2

或:LEAreg,[add]:(reg)-add,add为有效地址

把存储器的有效地址EA(源操作数的地址偏移量)送入一个存放器reg;常用于将一个16位

的通用存放器作为地址指针。传送的是有效地址EA。

(2)将双地址指针装入DS和另一个存放器指令LDS指令:

LDSOPRDI,OPRD2

或:LDSreg,[add]:(reg)-(add+1)(add),(DS)—(add+3)(add+2)

[3)将双地址指针装入ES和另一个存放器指令LES指令:

LESOPRD1,OPRD2

或:LESreg,[add];(reg)-(add+1)(add),(ES)-(add+3)(add+2)

①从源操作数指定的存储单元中取出4字节的地址指针(包括2字节的段地址和2字节的偏

移量)传送到DS/ES和reg。指定将段地址送入DS/ES,偏移量局部送入一个16位的指针存放器

或变址存放器。

②源操作数mem,目的操作数必须是一个16位的通用存放器。

③传送的是存储单元的内容,而不是存储器的有效池址EA。

6.标志传送指令

(1)读标志指令:LAHF;(AH)一(FR)o-7

功能:将标志存放器中的SF、ZF、AF、PF和CF(即低8位)传送至AH存放器的指定位,空位

没有定义。

(2)存标志指令:SAHF;(FR)0-7-(AH)

功能:将存放器AH的指定位,送至标志存放器的SF、ZF、AF、PF和CF位[即低8位)。根据

AH的内容,影响上述标志位,对OF、DF、IF和TF无影响。

(3)标志入校指令:PUSHF;将FR入栈。(SP)-(SP)-2,((SP)+1,(SP))一(FR)

功能:将标志存放器FRE入堆栈顶部,同时修改堆栈指针,不影响标志位。

(4)标志弹出栈指令:POPF;将栈顶的内容弹出到FR中。

:(FR)一((SP)+1,(SP)),(SP)-(SP)+2

功能:堆栈顶部的一个字,传送到标志存放器FR,同时修改堆栈指针,影响标志位。

二、算术运算指令

(1)9种指令:加法指令、减法指令、增量〃减量指令、求补指令、比拟指令、乘法指令、除法指

令、字节字/转换为字扩展指令和十进制调整指令。

(2)对标志位的影响:

①力口、减、比拟指令(CMP)、取补指令(NEG)指令均影响6个标志位CF、OF、PF、SF、ZF

和AFO

②乘法指令影响CF和OF标志;除法指令所有标志位都不确定,无意义。

③增量〃减量指令影响除进位标志CF以外的5个标志位AF、OF、PF、SF和ZF。

④字节字/转换为字扩展指令不影响标志位。

⑤加法的ASCII调整指令AAA,十进制调整指令DAA影响除溢出标志OF以外5个标志:CF、

PF、SF、ZF和AF;OF没有意义。

⑥减法的ASCII调整指令AAS、十进制调整指令DAS影响2个标志:CF和AF:其余标志没

有意义。

⑦乘法的ASCII调整指令AAM、除法的ASCH调整指令AAD根据AL存放器的结果影响SF、

ZF和PFo

1.加法指令(Addition):完成加法操作。

(1)格式:ADD/ADC0PRD1,OPRD2;(OPRDI)-(OPRDi)+(OPRD2)

(2)源;data、mcm>reg;目的;reg,mem。

(3)ADC指令主要用于多字节运算中。

(4)8位/16位操作。

2.减法指令(Subtraction):完成减法操作。

(1)格式:SUB/SBBOPRD1,OPRD2:(OPRD1)一(OPRD1)一(OPRD2)

(2)规定同加法指令。

3.增量(加1)碱量(减1)指令INC/DEC:完成+1/-1操作。

(I)格式:INC/DECOPRD;(OPRD)-(OPRD)±1

(2)功能:主要用于在循环程序中修改地址指针和循环次数等。

(3)操作数:reg、mem。

4.求补指令NEG:完成补码操作。

(1)格式:NEGOPRD

12)操作数:reg、:memo

5.比拟指令CMP:完成减法操作,结果不回送,反映在标志位上。

(1)格式:CMPOPRDI,OPRD2;(OPRD1)一(OPRD2)

(2)功能:主要用于比拟两个数之间的关系。在比拟指令之后,根据标志即可判断两者之间的关

系。减法操作,结果不回送目的操作数.

(3)两数关系的判断标志

①A=B用ZF=1判断;

②两个无符号数的大小用CF判断。CF=1,A<B;CF=0,A>B。

③两个符号数的大小用SF㊉OF判断。SFeOF=l,A<B:SF㊉OF=0,A>Bo

JG/JNLE(大于,SFeOF=OfiZF=0)JL/JNGE(小于,SFeOF=1且ZF=0)

6.乘法指令MUL/IMUL:完成无符号乘法/带符号(整数)乘法操作。

(1)格式:MUL/IMULOPRD;8位:(AX)-(AL)X(OPRD)

;16位:(DX)(AX)-(AX)X(OPRD)

(2)源操作数:reg、mem,由指令给出。

(3)目的操作数:默认在AL/AX中。

(4)带符号数乘法指令IMUL当结果的高半局部不是结果的低半局部的符号扩展时,标志位CF

和OF将置位。

(6)可完成字节与字节乘法、字与字乘法操作。

7.除法指令DIV/IDIV:完成无符号除法/带符号(整数)除法操作。

(I)格式:DIV/IDIVOPRD;8位:(AL)一(AX)/(OPRD)……(AH)(余数)

:16位:(AX)-(DX)(AX)/(OPRD)……(DX)(余数)

(2)源/目的操作数规定同乘法指令。

(3)对于符号数,当被除数不够位数时,需要对高8/16,立进行扩展符号扩展。

8.字节字/转换为字扩展指令CBVV7CWD:将AL/AX存放器的最高位扩展到AH/DXo

(1)格式:CBW/CWD

(2)功能:将AL/AX存放器的最高位扩展到AH/DX,AL.7(AX.15)=0,那么AH:DX)=0;

AL.7(AX.15]=1,那么AH=0FFH(DX=0FFFFH).

9.十进制调整指令

(1)压缩BCD码:每个字节表示两位BCD数;

非压缩BCD码:用一个字节表示一位BCD数,在这字节的高四位用0填充。

(2)每条十进制调整指令在使用时都与相应的算术运算指令配合,并自动对•相应的算术运算指令

结果进行相应的十进制调整。

(3)格式:

@DAA;压缩的BCD码加法调整

②DAS:压缩的BCD码减法调整

③AAA:非压缩的BCD码加法调整

®AAS:非压缩的BCD码减法调整

⑤AAM:乘法后的BCD码调整

@AAD:除法前的BCD码调整

三、逻辑运算和移位指令

1.逻辑运算指令

(I)5种指令:逻辑与、或、非、异或和测试指令。

(2)指令格式

①逻辑与指令ANDOPRD1,OPRD2:(OPRD1)-(OPRD1)A(OPRD2)

②逻辑或指令OROPRD1,OPRD2;(OPRDI)-(OPRD1)V(OPRD2)

③逻辑非指令NOTOPRD;(OPRD)-(/OPRD)

④逻辑异或指令XOROPRDI,OPRD2;(OPRD1)一(OPRDI)©(OPRD2)

⑤测试指令TESTOPRDI,OPRD2;(OPRDI)A(OPRD2),结果不回送。

(3)操作数范围

源操作数为reg、mem、data;H的操作数为reg、mem(NOT指令只有一个操作数)。单操作数

指令NOT的操作数小能为立即数。双操作数逻辑指令中,必须有一个操作数为存放器寻址方式,且目

的操作数不能为立即数。

(4)功能:实现相应的逻辑功能。

①与指令可实现屏蔽(复位)数据的某些位(使一个字或字节中的某些位清0,而其余位不变),

提取某些位或拆字。

②或指令可实现置位数据的某些位(使一个字或字节中的某些位置1,而其余位不变),拼字。

③非指令常用于使某个数取反,或取反后+1而得补码。

④异或指令可实现某个存放器清0,或使目的操作数的某些位取反(使一个字或字节中的某些位取

反,而其余位不变)。

⑤测试指令通常用于测试。目的操作数的某些位是1还是0,用ZF标志判断。

(5)对标志位的影响

①逻辑与、或、异或和测试指令影响ZF,PF,SF标志;CF=0,OF=0;AF无意义。

②逻辑非指令不影响标志位。

2.移位指令

11)4组8种指令:算术移位SA,逻辑移位SH,循环移位RO,带进位位的循环移位RC。右移

R,左移L。

(2)指令格式:操作码OPRD,M

M=1时,只移1位;M>1时,可将指令格式中的CNT改为CL存放器,并在移位指令前将移位

次数预先送入CL存放器中。

(3)功能:将OPRD的内容移位M次。算术移位适用于带符号数的义2,92。逻辑移位适用于无

符号数的X2,+2。

(4)操作数范围:reg、mem。

(5)对标志位的影响:

①算术/逻辑移位指令影响CF、SF、ZF、PF标志,在移1位时,影响OF标志。不影响AF标

志。

②循环移位指令只影响CF、OF标志,不影响其他标志位。

SHL/SAL算术/逻辑左移

SHR逻辑右移

SAR算术右移

ROL循环左格

ROR循环右移

RCL通过进位的循环左移

RCR通过进;立的循环右移

四、串操作类指令

(1)5种指令:串传送MOVS,串比拟CMPS,串搜索SCAS,存串STOS,取串LODS。

(2)指令格式:操作码DST,SRC

MOVSB(字节)/MOVSW(字)

①串传送MOVSDST,SRC;|(ES:DST)]-[(DS:SRC)1

MOVSB:((ES:DI)]-[(DS:SI)],SI=SI±1,DI=DI±I

MOVSW;|(ES:DI)|-((DS:SI)],|(ES:D1+1)]-[(DS:SI+1)],SI=SI±2,DI=D1±2

②串比拟CMPSDST,SRC;[(ES:DI)]-((DS:SI)]:SI=SI±1,DI=DI±1

③串搜索SCASDST;AL-|(ES:DI)]];DI=DI±1

④存串STOSDST;[(ES:DI)J-AL:DI=DI±1

⑤取串LODSSRC;AL-[(DS:SI)];SI=SI±I

字操作与字节操作类似,AL——AXo

⑶功能

根据方向标志DF及所传送数据的类型(字节/字)对SI及DI进行修改,在指令重复前缀REP的控制

下实现。

①串传送:把数据段中由SI间接寻址的一个字节/字传送到附加段中由DI间接寻址的一个字节/

字单元中。

②串比拟:把数据段中由SI间接寻址的一个字节/字与附加段中由DI间接寻址的一个字节/字进行

比拟操作,使比拟的结果影响标志位。可在两个数据串中寻找第一个不相等的字节/字,或者第一个相等

的字节/字。

③串搜索:用指令指定的关键字节/字(分别存放在AL/AX中),与附加段中由DI间接寻址的字节

串中的一个字节进行比拟操作,使比拟的结果影响标志位。可在指定的数据串中搜索第一个与关键字节

匹配(或者不匹配)的字节。

@存串:把指令中指定的字节(或字)串(存放在AL/AX中)传送到附加段中由DI间接寻址的字节

内存单元中。可连续将AL(或AX)的内容存入到附加段中的一段内存区域中去,该指令不影标志位。

⑤取串:从串中取指令实现从指定的字节(或字)串中读出信息的操作。

(4)规定

①串操作类指令是唯一的一组源和目的操作数均在存储胆元的指令。源串在数据段,目的串在附

加段。各指令所使用的默认存放器是;源串地址DS;SI;口的串地址ES;DI;字串长度CX;存取或

搜索的默认值AL

②串操作时,地址的修改由方向标志确定。

CLD;DF=O,SI/DI地址作自动增量(自动+1)修改:

STD:DF=LSI/DI地址作自动减量(自动一1)修改。

③任何一个串操作指令均可在指令前面加上一个重复操作作为前缓,于是就重复执行,直至CX、

ZF满足要求为止。

④重复指令前缀

REP;①假设(CX)=O,那么退出:②CX=CX-1:③执行后续指令:④重复①-一③

REPE/REPZ:①假设(CX)=0或ZF=0,那么退出:②CX=CX-I:③执行后续指令;④垂亚①一一®

REPNE/REPNZ;①假设(CX;=0或ZF=I,那么退出:②CX=CX-I;③执行后续指令;④重且①一•③

五、控制转移类指令一一改变指令执行顺序的指令

(1)6种指令:无条件转移指令、子程序调用和返回指令、条件转移指令、循环控制指令、中断指

令、处理器控制命令。

(2)概念

①直接转移:转移的目的地址(标号)直接出现在指令码中。

②间接转移:转移的目的地址间接存储于某一个存放器或某一个内存变量中。

③段内转移/调用:转移的目的地址和本条指令在同一代码段中,转移时只改变IP,小改变CS。程

序转向的有效地址EA等于当前IP的内容加上8/16位位移量。可分为:

段内近转移NEAR——16位位移量,适用于无条件转移指令和条件转移指令,转移范围为-32768--

+32768o

段内短转移SHORT——8位位移量,适用于条件转移指令,转移范围为-128--+127。

④段间转移/调用(远转移FAR):转移的目的地址和本条指令不在同一代码段中,转移时同时改变

CS和IP内容,即程序转移到另一个代码段。

1.无条件转移指令

JMP[转移方式]OPRD;转移到OPRD所指向的存储器单元处执行程序

(1)段内直接短转移指令JMPSHORTOPRD;(IP)-(IP)+OPRD

(2)段内直接近转移指令JMPNEARPTROPRD:(IP)-(IP)+OPRD

(3)段内间接转移指令JMPWORDPTROPRD:(IP)一|EA]

(4)段间直接(远)转移指令JMPFARPTROPRD;(IP)-OPRD的段内偏移地址,(CS)-OPRD

所在的段地址。OPRD为直接寻址方式。

(5)段间间接转移指令JMPDWORDPTROPRD:(IP)-[EA],(CS)-(EA+2]

2.条件转移指令

指令助记符目的地址

(1)标志条件转移指令助记符:J/JN+标志(C,P,S,S,0);

(2)比拟条件转移指令助记符:J/JN+比拟符[A高于,B低于,E等于,G大于,L小于)

(3)无符号数比拟:测试标志位为CF、ZF.分高于A、等于E、低于B等3种情况:ZF=1,等

于;CF=O»大于。

(4)符号数比拟:测试标志位为ZF、OF和SF,分大于G、等于E、小于L等3种情况:ZF=L

等于;SF㊉OF=0,大于。

3.子程序调用和返回指令

(1)子程序(过程)调用指令

CALL子程序名DST

①段内调用:CALLNEARPTROPRD;(SP)-(SP)-2,((SP)-2)((SP)-1)一(IP),

(IP)一子程序DST的地址(即:IP+16位位移)

②段间调用:CALLFARPTROPRD;(SP)—(SP)-2,((SP)-2)((SP)-1)=(CS),

(SP)一(SP)-2,((SP)-2)((SP)-1)=(IP),(IP)=[EA],

(CS)=[EA+2]

(2)子程序返回指令

RET:段内返回(IP)--((SP)+i,SP),(SP)一(SP)+2

;段间返回(IP)・((SP)+1,SP),(SP)*-(SP)+2

(CS)-((SP)+1,SP),(SP)■(SP)+2

4.循环控制指令

对CX或标志位ZF进行测试,确定是否循环。

(I)LOOPOPRD(短标号);(CX)-(CX)-I,假设CXH0,那么循环,否则顺序执行。

(2)LOOPNZ/LOOPNEOPRD;(CX)-(CX)-I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论