微机原理指令小结.docx

上传人:b****0 文档编号:640393 上传时间:2022-10-11 格式:DOCX 页数:13 大小:83KB
下载 相关 举报
微机原理指令小结.docx_第1页
第1页 / 共13页
微机原理指令小结.docx_第2页
第2页 / 共13页
微机原理指令小结.docx_第3页
第3页 / 共13页
微机原理指令小结.docx_第4页
第4页 / 共13页
微机原理指令小结.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

微机原理指令小结.docx

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

微机原理指令小结.docx

微机原理指令小结

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,段寄存器——segreg。

1.通用传送指令:

完成数据传送

(1)指令格式:

MOVOPRD1,OPRD2;[目的操作数OPRD1]—[源操作数OPRD2]

(2)源OPRD2:

data、mem、reg、segreg。

(3)目的OPRD1:

mem、reg、segreg。

(4)通用传送指令MOV和堆栈指令是唯一允许以段寄存器(代码段寄存器CS和指令指针IP除外,即CS、IP不能作为直接操作数)作为操作数的指令,不允许通过MOV

指令直接以立即数方式给段寄存器赋值,不允许直接在两个段寄存器之间直接进行传送。

(5)8位/16位操作。

2.堆栈操作指令:

将数据压入/弹出堆栈

(1)指令格式:

入栈:

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

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

出栈:

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

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

(2)操作数:

mem、reg、segreg。

操作数不能是立即数data。

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

(4)堆栈存取原则为后进先出,只有一个入/出口SS:

SP,SP始终指向栈顶,SP是

自动修改的,SP在初始化中需要设置。

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

3.交换操作指令:

XCHG——数据交换;XLAT——完成一个字节的换码转换

(1)指令格式:

交换操作指令:

XCHGOPRD1,OPRD2;[OPRD1]——[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位端口直接地址);当端口地址》255时,必须用DX(16位端口直接地址)作桥梁。

DX作端口寻址最多可寻找64K个端口。

(3)PORT为直接寻址,8位/16位操作。

5.目的地址传送指令

(1)取有效地址指令:

LEAOPRD1,OPRD2

或:

LEAreg,[add];(reg)—add,add为有效地址

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

将一个16位的通用寄存器作为地址指针。

传送的是有效地址EA。

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

LDSOPRD1,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)

1从源操作数指定的存储单元中取出4字节的地址指针(包括2字节的段地址和2字节的偏移量)传送到DS/ES和reg。

指定将段地址送入DS/ES,偏移量部分送入一个16位的指针寄存器或变址寄存器。

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

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

6.标志传送指令

(1)读标志指令:

LAHF;(AH)—(FR)o~7

功能:

将标志寄存器中的SF、ZF、AF、PF和CF(即低8位)传送至AH寄存器的指定位,空位没有定义。

(2)存标志指令:

SAHF;(FR)7—(AH)

功能:

将寄存器AH的指定位,送至标志寄存器的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种指令:

加法指令、减法指令、增量〃减量指令、求补指令、比较指令、乘法指令、除法指令、字节字/转换为字扩展指令和十进制调整指令。

(2)对标志位的影响:

1力口、减、比较指令(CMP)、取补指令(NEG)指令均影响6个标志位CF、OF、

PF、SF、ZF和AF。

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

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

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

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

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

6减法的ASCII调整指令AAS、十进制调整指令DAS影响2个标志:

CF和AF;其余标志没有意义。

7乘法的ASCII调整指令AAM、除法的ASCII调整指令AAD根据AL寄存器的结果影响SF、ZF和PF。

1加法指令(Addition):

完成加法操作。

(1)格式:

ADD/ADCOPRD1,OPRD2;(OPRD1)・(OPRD1)+(OPRD2)

(2)源:

data、mem、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操作。

(1)格式:

INC/DECOPRD;(OPRD)j(OPRD)±1

(2)功能:

主要用于在循环程序中修改地址指针和循环次数等。

(3)操作数:

reg、mem。

4.求补指令NEG:

完成补码操作。

(1)格式:

NEGOPRD

(2)操作数:

reg、:

mem。

5•比较指令CMP:

完成减法操作,结果不回送,反映在标志位上。

(1)格式:

CMPOPRD1,OPRD2;(OPRD1)-(OPRD2)

(2)功能:

主要用于比较两个数之间的关系。

在比较指令之后,根据标志即可判断两者之间的关系。

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

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

1A=B用ZF=1判断;

2两个无符号数的大小用CF判断。

CF=1,AB。

3两个符号数的大小用SF®OF判断。

SF®OF=1,AB。

JG/JNLE(大于,SF®OF=0且ZF=0)JL/JNGE(小于,SF®OF=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:

完成无符号除法/带符号(整数)除法操作。

(1)格式:

DIV/IDIVOPRD;8位:

(AL)・(AX)/(OPRD)……(AH)(余数)

;16位:

(AX)—(DX)(AX)/(OPRD)……(DX)(余数)

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

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

8.字节字/转换为字扩展指令CBW/CWD:

将AL/AX寄存器的最高位扩展到AH/DX。

(1)格式:

CBW/CWD

(2)功能:

将AL/AX寄存器的最高位扩展到AH/DX,AL.7(AX.15)=0,贝UAH(DX)=0;AL.7(AX.15)=1,贝UAH=0FFH(DX=0FFFFH)。

9.十进制调整指令

(1)压缩BCD码:

每个字节表示两位BCD数;

非压缩BCD码:

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

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

(3)格式:

1DAA:

压缩的BCD码加法调整

2DAS:

压缩的BCD码减法调整

3AAA:

非压缩的BCD码加法调整

4AAS:

非压缩的BCD码减法调整

5AAM:

乘法后的BCD码调整

6AAD:

除法前的BCD码调整

三、逻辑运算和移位指令

1.逻辑运算指令

(1)5种指令:

逻辑与、或、非、异或和测试指令。

(2)指令格式

逻辑与指令

AND

OPRD1,OPRD2;

(OPRD1)—

(OPRD1)

A

(OPRD2)

逻辑或指令

OR

OPRD1,OPRD2;

(O

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1