微机原理指令小结

上传人:feng****ing 文档编号:223690599 上传时间:2023-07-20 格式:DOCX 页数:9 大小:73.82KB
收藏 版权申诉 举报 下载
微机原理指令小结_第1页
第1页 / 共9页
微机原理指令小结_第2页
第2页 / 共9页
微机原理指令小结_第3页
第3页 / 共9页
资源描述:

《微机原理指令小结》由会员分享,可在线阅读,更多相关《微机原理指令小结(9页珍藏版)》请在装配图网上搜索。

1、8086CPU 指令小结所有指令:(1) 立即数不能作为目的操作数。(2) 不能在 2 个存储单元之间直接进行操作(串操作除外)。(3) MOV指令和堆栈指令是惟一能对段寄存器进行操作的指令。(4) 源和目的操作数的数据类型必须匹配,都是8 位,或都是16位。( 5) CS 、IP 不能直接作为操作数。(6)指令中至少要有一项明确说明传送的是字节还是字,如果没有,可通过PTR进行设置。一、传送指令(1) 6种指令:通用传送指令、堆栈操作指令、交换操作指令、I/O操作指令、目的地 址传送指令和标志传送指令。(2) 对标志位的影响:除标志传送(SAHF、POPF)外,均不影响标志位。(3) 操作数

2、表示方法:立即数data,存储器单元地址mem,寄存器reg, 段寄存器segreg。1. 通用传送指令:完成数据传送(1)指令格式:MOV OPRD1, OPRD2 ;目的操作数OPRD1-源操作数OPRD2 ( 2)源 OPRD2: data、 mem、 reg、 segreg。(3) 目的 OPRD1: mem、 reg、 segreg。(4) 通用传送指令MOV和堆栈指令是唯一允许以段寄存器(代码段寄存器CS和指 令指针IP除外,即CS、IP不能作为直接操作数)作为操作数的指令,不允许通过MOV 指令直接以立即数方式给段寄存器赋值,不允许直接在两个段寄存器之间直接进行传送。(5) 8位

3、/16位操作。2. 堆栈操作指令:将数据压入/弹出堆栈(1) 指令格式:入栈:PUSH OPRD;先修改堆栈指针SP-2,然后将数据压入堆栈。;SP =SP-1, SP=操作数高 8 位;SP =SP-1, SP=操作数低 8 位。出栈:POP OPRD;先将数据弹出堆栈,然后修改堆栈指针SP+2。;(操作数低 8 位)SP, SP =SP+1;(操作数高 8 位)SP,SP =SP+1。(2) 操作数:mem、reg、segreg。操作数不能是立即数data。(3) 仅能进行字运算(16位操作)。(4) 堆栈存取原则为后进先出,只有一个入/出口 SS: SP, SP始终指向栈顶,SP是 自动

4、修改的,SP在初始化中需要设置。(5) PUSH、POP指令必须成对使用。3. 交换操作指令:XCHG数据交换;XLAT完成一个字节的换码转换(1) 指令格式:交换操作指令:XCHG OPRD1,OPRD2; OPRD1- OPRD2累加器换码指令(表转换指令、查表指令):XLAT; (AL) (DS) X 16 + (BX) + (AL)(2) XCHG:段寄存器和立即数不能作为一个操作数,8位/16位操作。(3) XLAT:表首地址在BX中,AL的内容作为某一项到表首的偏移量(256字节的 表的下标),转换后的结果存放在 AL 中。4. I/O操作指令:累加器(AX/AL)与I/O端口之间

5、的数据传送(1) 指令格式:输入指令:IN AL/ AX, PORT; (AL/ AX) - PORT IN AL/ AX, DX ; (AL/ AX) - DX 输出指令: OUT PORT, AL/ AX ; PORT-(AL/ AX) OUT DX , AL/ AX ; DX-(AL/ AX)(2) 当端口地址W 255时,使用PORT (8位端口直接地址);当端口地址2255时, 必须用DX ( 16位端口直接地址)作桥梁。DX作端口寻址最多可寻找64K个端口。(3) PORT为直接寻址,8位/16位操作。5. 目的地址传送指令(1) 取有效地址指令: LEA OPRD1, OPRD2

6、或: LEA reg, add ;( reg)- add, add 为有效地址把存储器的有效地址EA (源操作数的地址偏移量)送入一个寄存器reg;常用于 将一个16位的通用寄存器作为地址指针。传送的是有效地址EAo(2) 将双地址指针装入DS和另一个寄存器指令LDS指令:LDS OPRD1, OPRD2或: LDS reg, add ;(reg)- (add+1)(add), (DS)-(add+3)(add +2)(3) 将双地址指针装入ES和另一个寄存器指令LES指令:LES OPRD1, OPRD2或: LES reg, add ;(reg)-(add+1)(add), (ES)-(a

7、dd+3)(add +2) 从源操作数指定的存储单元中取出4字节的地址指针(包括2字节的段地址和 2字节的偏移量)传送到DS/ES和reg。指定将段地址送入DS/ES,偏移量部分送入一 个16位的指针寄存器或变址寄存器。 源操作数mem,目的操作数必须是一个16位的通用寄存器。 传送的是存储单元的内容,而不是存储器的有效地址EAo6. 标志传送指令( 1)读标志指令: LAHF; ( AH)- ( FR) 0 7 功能:将标志寄存器中的SF、ZF、AF、PF和CF (即低8位)传送至AH寄存器的 指定位,空位没有定义。(2) 存标志指令: SAHF;(FR) 0 7 -(AH)功能:将寄存器A

8、H的指定位,送至标志寄存器的SF、ZF、AF、PF和CF位(即低 8位)根据AH的内容,影响上述标志位,对OF、DF、IF和TF无影响。(3) 标志入栈指令:PUSHF;将 FR 入栈。(SP)-(SP)2, (SP) +1,(SP) -(FR) 功能:将标志寄存器FR压入堆栈顶部,同时修改堆栈指针,不影响标志位。(4) 标志弹出栈指令:POPF;将栈顶的内容弹出到FR中。;(FR)-(SP)+1,(SP),(SP)-(SP)+ 2功能:堆栈顶部的一个字,传送到标志寄存器FR,同时修改堆栈指针,影响标志位。二、算术运算指令( 1)9 种指令:加法指令、减法指令、增量/减量指令、求补指令、比较指

9、令、乘法指 令、除法指令、字节字/转换为字扩展指令和十进制调整指令。(2)对标志位的影响: 力口、减、比较指令(CMP)、取补指令(NEG)指令均影响6个标志位CF、OF、 PF、 SF、 ZF 和 AF。 乘法指令影响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和A

10、F; 其余标志没有意义。 乘法的ASCII调整指令AAM、除法的ASCII调整指令AAD根据AL寄存器的 结果影响SF、ZF和PF。1. 加法指令(Addition):完成加法操作。(1) 格式:ADD/ ADC OPRD1, OPRD2 ; (OPRDl)-(OPRDl) + (OPRD2)(2) 源: data、mem、reg; 目的:reg, mem。(3) ADC 指令主要用于多字节运算中。(4) 8位/16位操作。2. 减法指令(Subtraction):完成减法操作。(1)格式:SUB/ SBB OPRD1, OPRD2; (OPRD1)-(OPRD1) (OPRD2)( 2)规定

11、同加法指令。3. 增量(加1 ) /减量(减1 )指令INC/ DEC:完成+1/-1操作。(1)格式:INC/ DEC OPRD; (OPRD) (OPRD)1( 2)功能:主要用于在循环程序中修改地址指针和循环次数等。( 3)操作数: reg、 mem。4. 求补指令NEG:完成补码操作。( 1 )格式: NEG OPRD( 2)操作数: reg、: mem。5. 比较指令CMP:完成减法操作,结果不回送,反映在标志位上。(1) 格式: CMP OPRD1, OPRD2;(OPRD1)(OPRD2)(2) 功能:主要用于比较两个数之间的关系。在比较指令之后,根据标志即可判断两 者之间的关系

12、。减法操作,结果不回送目的操作数。( 3)两数关系的判断标志 A=B 用 ZF=1 判断; 两个无符号数的大小用CF判断。CF=1, AvB; CF=0, AB。 两个符号数的大小用SFOF判断。SFOF=1, AvB; SFOF=0, AB。JG/JNLE(大于,SF OF=O 且 ZF=0 ) JL/JNGE (小于,SF OF=1 且 ZF=0 )6. 乘法指令MUL/ IMUL:完成无符号乘法/带符号(整数)乘法操作。(1) 格式:MUL/ IMUL OPRD ; 8 位: (AX) (AL)X( OPRD );16 位:(DX) (AX) - (AX)X( OPRD )(2) 源操作

13、数:reg、mem,由指令给出。(3) 目的操作数:默认在AL/AX中。(4) 带符号数乘法指令IMUL当结果的高半部分不是结果的低半部分的符号扩展时, 标志位CF和OF将置位。( 6)可完成字节与字节乘法、字与字乘法操作。7. 除法指令DIV/ IDIV:完成无符号除法/带符号(整数)除法操作。(1) 格式:DIV/ IDIV OPRD; 8 位: (AL) (AX)/( OPRD ) . (AH)(余数);16 位:(AX) - (DX) (AX)/( OPRD)(DX )(余数)( 2 )源/目的操作数规定同乘法指令。(3) 对于符号数,当被除数不够位数时,需要对高8/16 位进行扩展符

14、号扩展。&字节字/转换为字扩展指令CBW/CWD:将AL/AX寄存器的最高位扩展到AH/DX。( 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)格式: D

15、AA:压缩的BCD码加法调整 DAS:压缩的BCD码减法调整 AAA:非压缩的BCD码加法调整 AAS:非压缩的BCD码减法调整 AAM:乘法后的BCD码调整 AAD:除法前的BCD码调整三、逻辑运算和移位指令1. 逻辑运算指令( 1)5 种指令:逻辑与、或、非、异或和测试指令。( 2)指令格式 逻辑与指令 AND OPRD1, OPRD2;(OPRD1) (OPRD1)A(OPRD2) 逻辑或指令 OR OPRD1, OPRD2;(OPRD1) (OPRD1)V(OPRD2 ) 逻辑非指令 NOT OPRD;(OPRD) - (/OPRD) 逻辑异或指令 XOR OPRD1, OPRD2;

16、(OPRD1)-(OPRD1)(OPRD2) 测试指令 TEST OPRD1, OPRD2 ;(OPRD1)A( OPRD2 ),结果不回送。( 3)操作数范围源操作数为reg、mem、data;目的操作数为reg、mem (NOT指令只有一个操作数)。 单操作数指令 NOT 的操作数不能为立即数。双操作数逻辑指令中,必须有一个操作数为寄 存器寻址方式,且目的操作数不能为立即数。(4) 功能:实现相应的逻辑功能。 与指令可实现屏蔽(复位)数据的某些位(使一个字或字节中的某些位清 0,而其 余位不变),提取某些位或拆字。 或指令可实现置位数据的某些位(使一个字或字节中的某些位置1,而其余位不变)

17、, 拼字。 非指令常用于使某个数取反,或取反后+1 而得补码。 异或指令可实现某个寄存器清 0,或使目的操作数的某些位取反(使一个字或字节 中的某些位取反,而其余位不变)。 测试指令通常用于测试。目的操作数的某些位是1还是0,用ZF标志判断。(5) 对标志位的影响 逻辑与、或、异或和测试指令影响ZF, PF, SF标志;CF=O, OF=0; AF无意义。 逻辑非指令不影响标志位。2. 移位指令(1) 4组8种指令:算术移位SA,逻辑移位SH,循环移位RO,带进位位的循环移位 RC。右移R,左移L。( 2)指令格式:操作码 OPRD, MM =1时,只移1位;M1时,可将指令格式中的CNT改为

18、CL寄存器,并在移位指 令前将移位次数预先送入CL寄存器中。(3)功能:将OPRD的内容移位M次。算术移位适用于带符号数的X2,三2。逻辑 移位适用于无符号数的X2,-2O( 4)操作数范围: reg、 mem。(5) 对标志位的影响: 算术/逻辑移位指令影响CF、SF、ZF、PF标志,在移1位时,影响OF标志。不 影响 AF 标志。 循环移位指令只影响CF、OF标志,不影响其他标志位。四、串操作类指令(1)5种指令:串传送MOVS,串比较CMPS,串搜索SCAS,存串STOS,取串LODS。 ( 2)指令格式:操作码 DST, SRCMOVSB (字节)/MOVSW (字) 串传送 MOVS

19、 DST, SRC; (ES: DST) (DS: SRC )MOVSB;(ES: DI)-(DS: SI), SI=SI1, DI=DI1MOVSW;(ES: DI)-(DS: SI), (ES: DI+1)-(DS: SI+1), SI=SI2, DI=DI2 串比较 CMPS DST, SRC; (ES: DI)-(DS: SI); SI=SI1, DI=DI1 串搜索 SCAS DST 存串 STOS DST ; 取串 LODS SRC ;AL (ES: DI); DI=DI1 (ES: DI) AL; DI=DI1 AL (DS: SI); SI=SI1字操作与字节操作类似,ALAX

20、。(3)功能根据方向标志DF及所传送数据的类型(字节/字)对SI及DI进行修改,在指令重复前缀 REP 的控制下实现。 串传送:把数据段中由SI间接寻址的一个字节/字传送到附加段中由DI间接寻址的 一个字节/字单元中。 串比较:把数据段中由 SI 间接寻址的一个字节/字与附加段中由 DI 间接寻址的一个 字节/字进行比较操作,使比较的结果影响标志位。可在两个数据串中寻找第一个不相等的 字节/字,或者第一个相等的字节/字。 串搜索:用指令指定的关键字节/字(分别存放在AL/AX中),与附加段中由DI间接 寻址的字节串中的一个字节进行比较操作,使比较的结果影响标志位。可在指定的数据串中 搜索第一个

21、与关键字节匹配(或者不匹配)的字节。 存串:把指令中指定的字节(或字)串(存放在AL/AX中)传送到附加段中由DI间接 寻址的字节内存单元中。可连续将AL (或AX)的内容存入到附加段中的一段内存区域中 去,该指令不影标志位。 取串:从串中取指令实现从指定的字节(或字)串中读出信息的操作。4)规定 串操作类指令是唯一的一组源和目的操作数均在存储单元的指令。 源串在数据段, 目的串在附加段。各指令所使用的默认寄存器是:源串地址DS: SI;目的串地址ES: DI; 字串长度CX;存取或搜索的默认值 AL 串操作时,地址的修改由方向标志确定。CLD; DF=0, SI/DI 地址作自动增量(自动+

22、1)修改;STD; DF=1, SI/DI 地址作自动减量(自动1)修改。 任何一个串操作指令均可在指令前面加上一个重复操作作为前缀,于是就重复执行, 直至CX、ZF满足要求为止。 重复指令前缀REP;若(CX)=O,则退出;CX=CX-1;执行后续指令;重复-REPE/REPZ;若(CX)=O或ZF=O,则退出;CX=CX-1;执行后续指令;重复一 REPNE/REPNZ;若(CX)=O或ZF=1,则退出;CX=CX-1;执行后续指令;重复一 五、控制转移类指令改变指令执行顺序的指令(1) 6 种指令:无条件转移指令、子程序调用和返回指令、条件转移指令、循环控制 指令、中断指令、处理器控制命

23、令。( 2 )概念 直接转移:转移的目的地址(标号)直接出现在指令码中。 间接转移:转移的目的地址间接存储于某一个寄存器或某一个内存变量中。 段内转移/调用:转移的目的地址和本条指令在同一代码段中,转移时只改变IP,不 改变CS。程序转向的有效地址EA等于当前IP的内容加上8/16位位移量。可分为:段内近转移 NEAR 16位位移量,适用于无条件转移指令和条件转移指令,转移范 围为-32768 +32768。段内短转移 SHORT 8 位位移量,适用于条件转移指令,转移范围为-128 +127 。 段间转移/调用(远转移FAR):转移的目的地址和本条指令不在同一代码段中,转移 时同时改变CS和

24、IP内容,即程序转移到另一个代码段。1. 无条件转移指令JMP 转移方式OPRD;转移到OPRD所指向的存储器单元处执行程序(1) 段内直接短转移指令 JMP SHORT OPRD;(ip)-(ip)+ oprd(2) 段内直接近转移指令 JMP NEAR PTR OPRD;(ip)- (IP)+ OPRD(3) 段内间接转移指令JMP WORD PTR OPRD;(ip)- EA(4) 段间直接(远)转移指令JMP FAR PTR OPRD; (IP)-OPRD的段内偏移地址, (CS)-OPRD所在的段地址。OPRD为直接寻址方式。(5) 段间间接转移指令 JMP DWORD PTR OP

25、RD; (ip) - EA, (CS) - EA+22. 条件转移指令指令助记符 目的地址(1) 标志条件转移指令助记符:J/JN+标志(C, P, S, S, O);(2) 比较条件转移指令助记符:J/JN+比较符(A高于,B低于,E等于,G大于,L小于)(3) 无符号数比较:测试标志位为CF、ZF,分高于A、等于E、低于B等3种情况: ZF=1,等于;CF=0,大于。(4) 符号数比较:测试标志位为ZF、OF和SF,分大于G、等于E、小于L等3种情 况:ZF=1,等于;SFOF =0,大于。3. 子程序调用和返回指令(1)子程序(过程)调用指令CALL 子程序名 DST 段内调用: CAL

26、L NEAR PTR OPRD ;(SP)-(SP) -2,(SP) -2)(SP) -1) - (IP),(IP)-子程序DST的地址(即:IP+16位位移) 段间调用: CALL FAR PTR OPRD ;(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)+1,SP)( SP ) ( SP)+ 2;段间返回( IP )( SP)+1,SP)( SP ) ( SP)+ 2( CS

27、)( SP)+1,SP)( SP )( SP)+ 24. 循环控制指令对CX或标志位ZF进行测试,确定是否循环。(1) LOOP OPRD (短标号);(CX)- (CX) 1,若CXM 0,则循环,否则顺序执行。(2) LOOPNZ/LOOPNE OPRD; (CX)(CX)1,若 CX#0 和 ZF=0,贝V循环,否则顺序执行。(3) LOOPZ/LOOPE OPRD; (CX)(CX)1,若CX#0 和 ZF=1,贝V循环,否则顺序执行。(4) JCXZ OPRD; (CX) (CX) 1 ,若 CX=0,则循环,否则顺序执行。5. 中断指令(1) INT n; (SP)-(SP)2,

28、(SP) -2 ) (SP) -1 ) (FR), FR 入栈;(SP)-(SP)2 , (SP) -2 ) (SP) -1 )-(CS), CS 入栈;(SP)-(SP)2 , (SP) -2)(SP) -1 ) (IP), IP 入栈;(IP) (nX4),(CS) (nX4+2), n中断类型号(2) INTO;同INT 4,算术运算溢出中断指令(3) 中断返回指令 IRET; (IP) (SP)+1 ,(SP), (SP) (SP)+2, IP 出栈; (CS) (SP)+1 ,(SP), (SP) (SP)+2, CS 出栈;(FR)- (SP)+1 ,(SP), (SP) - (S

29、P)+2, FR 出栈6. 处理器控制命令(1)标志操作指令清标志位为CL,置标志位为ST。只对CF、DF和IF三个标志操作CLC清进位标志,CLD清方向标志,CLI关中断标志;STC置进位标志,STD置方向标志,STI开中断标志; CMC进位标志取反。(2)处理器外部同步命令对标志位的影响:不影响标志位 。 暂停指令:HLT;处理器处于什么也不做的暂停状态,可由中断请求、复位等唤醒继续执行。 等待指令:WAIT;处理器处于等待状态,CPU每隔4个时钟周期测试一次TEST引脚线(23 脚),直至TEST引脚线为有效低电平时,CPU才脱离等待状态。 交权指令:ESC; CPU将控制权交给其他协处理器,使协处理器从系统指令流中取得指令。 总线封锁指令:LOCK;可放在任一条指令前作为前缀,使CPU在执行下一条指令期间发出 总线封锁信号(LOCK),将总线封锁,其它的主设备不能控制总线。 空操作指令:NOP;不完成任何操作,只耗费3个时钟周期,用于程序的延时和调试。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!