计算机组成原理 指令.docx

上传人:b****2 文档编号:2245368 上传时间:2022-10-28 格式:DOCX 页数:30 大小:50.53KB
下载 相关 举报
计算机组成原理 指令.docx_第1页
第1页 / 共30页
计算机组成原理 指令.docx_第2页
第2页 / 共30页
计算机组成原理 指令.docx_第3页
第3页 / 共30页
计算机组成原理 指令.docx_第4页
第4页 / 共30页
计算机组成原理 指令.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

计算机组成原理 指令.docx

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

计算机组成原理 指令.docx

计算机组成原理指令

8086/8088指令

除串操作指令外,所有指令只允许有一个操作数在存储器中。

1.传送类指令

(数据传送指令,专用累加器传送指令,标志位传送指令,地址传送指令)

(一)数据传送指令

(1)MOV数据传送指令

指令格式:

MOVDST,SRC;

操作数可以是字节、字,源、目的操作数位数必须一致且不能同时在存储器中。

源操作数:

可在通用R、段R、存储器中、或为立即数。

目的操作数:

不能为立即数。

目的地址是段R名时,源操作数不能是立即数(立即数不能直接传给段R)段R间不能直接传送数据。

例1:

立即数送R或存储单元

•MOVAH,2AH;字节传送;

•MOVCX,1234H;字传送;

•MOVDA_BYTE,02FH;字节传送;

•MOVDA_WORD,1020H;字传送;

例2:

寄存器之间传送MOVAL,BL;MOVES,AX;

例3:

R与M之间传送。

MOVAL,DB_BYTE

例4:

把DA_BYTE1字节单元内容传送到DA_BYTE2字节单元中。

MOVAH,DA_BYTE1

MOVDA_BYTE2,AH

例5:

把立即数1020H传送给DS,ES。

MOVAX,1020H

MOVDS,AX

MOVES,AX

(2)XCHG交换指令

XCHGDST,SRC

☐(SRCDST)将源地址的内容与目的地址内容相互交换。

☐交换数据可为字、字节,只能在通用R之间或R与M之间进行。

不能使用段R、立即数。

例、数据段中定义了两个字变量VAR1和VAR2,(VAR1)=1234H,(VAR2)=5678H;

将这两个字单元内容互换。

MOVAX,VAR1XCHGVAR2,AXMOVVAR1,AX(或:

XCHGVAR1,AX)

(3)PUSH进栈指令格式:

PUSHSRC

<1>8086的堆栈由SS指定的一段存储器(64KB)构成。

自下向上生成的堆栈。

SP初始化:

堆栈段长(MAX:

FFFFH)

SP初始值指向:

(SS)*16+段长;(即:

栈底+2单元

<2>8086/8088堆栈规定:

以字(2个字节)为单位进行存取。

低地址存放字的低字节单元的内容;高地址存放字的高字节单元的内容。

<3>堆栈操作:

设置堆栈:

对堆栈段R(SS)及堆栈指针(SP)赋初值。

编程设置堆栈段。

(4)POP出栈指令格式:

POPDST

(5)、IN(input)输入指令

1、直接I/O端口寻址方式:

INAL,pn(字节)INAX,pn(字)

指令功能:

AL/AX←(pn);其中:

pn表示I/O端口地址(或称作:

I/O端口号)。

2、间接I/O端口寻址方式:

INAL,DX(字节)INAX,DX(字)

指令功能:

AL/AX←(DX);其中:

DX中的内容为I/O端口地址。

例、把I/O端口379H的字节内容传送到主存数据段的VARBYTE字节单元中。

MOVDX,379H

INAL,DX

MOVVARBYTE,AL

(6)OUT(output)输出指令

1、直接I/O端口寻址方式:

OUTpn,AL(字节)OUTpn,AX(字)

指令功能:

pn←(AL/AX);其中:

pn表示I/O端口地址(或称作:

I/O端口号)。

2、间接I/O端口寻址方式:

OUTDX,AL(字节)OUTDX,AX(字)

指令功能:

DX←(AL/AX);其中:

DX中的内容为I/O端口地址。

例、把主存数据段的VARBYTE字节单元中的内容传送到I/O端口230H中。

MOVDX,230H

MOVAL,VARBYTE

OUTDX,AL

(7)XLAT(translate)换码指令

指令格式:

XLAT[TABADDR]

指令功能:

AL←((BX)+(AL))

其中:

[TABADDR]中的方括号表示本项内容可以省略,TABADDR表示换码表首地址的符号地址。

BX的内容为换码表的首地址在数据段中的偏移量,AL的内容是相对于表格首地址的偏移量。

例、把十进制数“3”转换为相应的ASCII码。

在主存的数据段设置一个转换表,内容为09的ASCII码(30H39H),表名为TAB1,位于数据段偏移2字节处,假定(DS)=1200H。

可用下述指令完成转换:

MOVBX,0002H

MOVAL,3

XLATTAB1

指令执行后,(AL)=33H,即:

十进制数“3”的ASCII码。

(二)标志位传送指令对标志位进行存取操作,无操作数

(1)取标志指令LAHF:

将标志R的低八位传送到AH中。

(2)存标志指令SAHF:

将AH内容传送给标志R的低八位。

(设置或恢复SF、ZF、AF、PF、CF,对高八位无影响)。

例:

将标志R的低8位清0。

MOVAH,00H;SAHF

(3)标志R进栈指令:

PUSHF

16位标志R内容送SP所指栈顶字单元中。

(4)标志R出栈指令:

POPF

栈顶字单元内容弹出到标志R中。

(三)地址传送指令

将存储器操作数的地址(偏移量、段基值)传送给R。

(1)装入有效地址指令

LEADST,SRC;将源OP数的有效地址(偏移量)传送到目的地址中。

例:

LEASI,BUF;

•源操作数须是存储器操作数(可以是字节也可以是字)。

•目的操作数只能是16位通用R。

(2)装入地址指针指令(LDS/LES)

存储单元的地址指针:

4个字节

段基值:

存于2个高字节单元中

偏移量:

存于2个低字节单元中

指令功能:

从存放地址指针的4个字节存储单元中,同时取出段基值和偏移量,分别送到段R(DS/ES)和通用R中。

LDSDST,SRC;从存放地址指针的4个单元中,同时取出

•LESDST,SRC;段基值→DS(ES)偏移量→通用R

SRC:

存储器OP数DST:

16位通用R

例:

LDSSI,ADDR_TABLE[BX];

•DS:

ADDR_TABLE[BX]中存放的偏移量→SI,新的段基值→DS。

2、算术运算类指令

(一)加法运算指令

(1)加法指令

指令格式:

ADDDST,SRC;(SRC)+(DST)→DST

设置标志寄存器的OF、SF、ZF、AF、PF、CF标志位。

源操作数:

可在通用R、存储单元中,或为立即数。

目的操作数:

在通用R或存储单元中。

(2)带进位加法指令

指令格式:

ADCDST,SRC;(SRC)+(DST)+CF→DST(主要用于大于16位数的加法运算)

例:

32位无符号数存放在DX(高16),AX(低16位)中,若要加上常数76F1A23H,则用下述指令实现:

ADDAX,1A23H

ADCDX,76FH;(将低16位进位加上)

(3)加“1”指令:

指令格式:

INCDST;(不影响CF)

(DST)+1→DST(OP数:

字、字节、无符号数)

只能在通用寄存器或存储单元中,不能是立即数。

主要用于计数或修改地址指针。

(二)减法运算指令

(1)减法指令

指令格式:

SUBDST,SRC;(DST)-(SRC)→DST

例:

SUBAL,DA_BYTE;

(AL)-(DA_BYTE)→AL

(2)带借位减法指令指令格式:

SBBDST,SRC;(DST)-(SRC)-CF→DST

(3)减“1”指令指令格式:

DECDST;

(DST)-1→DST(不影响CF)(OP数:

字、字节、无符号数)

只能在通用寄存器或存储单元中,不能是立即数。

主要用于计数或修改地址指针。

(4)求负数指令指令格式:

NEGDST;0-(DST)→DST

•字节操作数:

-128;字操作数:

-32768;执行NEG后,操作数不变,OF置“1”。

•操作数为0,NEG后仍为0,CF置0;否则CF置1。

例:

(AL)=25H=(00100101)2

•NEGAL;(AL)=DBH=(11011011)2

(5)比较指令

指令格式:

CMPDST,SRC;(DST)-(SRC)→置标志位,不保留两数相减结果

若:

ZF=1,则(DST)=(SRC)

无符号数:

CF=0:

(DST)≥(SRC);

带符号数:

OF=SF:

(DST)>(SRC);OF≠SF:

(DST)<(SRC);

(三)乘法指令

(1)无符号数乘法指令

指令格式:

MULSRC;(另一操作数在AL或AX中)

•字节无符号数相乘:

(SRC)*(AL)→AX;

•AH为全0,CF=OF=0;否则:

CF=OF=1;

•字无符号数相乘:

(SRC)*(AX)→DX:

AX;

•DX为全0,CF=OF=0;否则:

CF=OF=1;

•只影响CF,OF标志位。

例:

两个字节存储单元BYTE1、BYTE2内容(无符号数)相乘,乘积放在字单元PROC中。

MOVAL,BYTE2

MULBYTE1

MOVPROC,AX

(2)带符号数乘法指令

指令格式:

IMULSRC;

操作数及乘积均带符号,且用补码表示。

若乘积的高半字AH(字节乘法)、或DX(字乘法)不是低半部的符号扩展,则为乘积的符号和有效数:

CF=OF=1;否则,CF=OF=0。

(四)除法指令

(1)无符号数除法指令指令格式:

DIVSRC;

SRC存除数,8位(字节)或16位(字)

字节除法:

(AX)/(SRC)→AL,余数→AH

字除法:

(DX:

AX)/(SRC)→AX,余数→DX

当:

除数为0,即(SRC)=0;或商溢出:

即(AL)>0FFH或(AX)>0FFFFH;

产生0型中断(除法出错中断)。

(2)带符号数除法指令指令格式:

IDIVSRC

操作数、商及余数均带符号且用补码表示。

当除数为0或商超出最大值或最小值时,产生0型中断。

最大正数商:

+127(字节),+32767(字)最小负数商:

-128(字节),-32768(字)

(五)类型转换指令

指令格式:

CBW/CWD;隐含使用AH/DX

CBW:

扩展AL中的符号位至AH中

CWD:

扩展AX中的符号位至DX中

例:

两个8位带符号数存于BYTE1,BYTE2字节单元中,将BYTE1除以BYTE2,商放入QUOT字节单元中。

MOVAL,BYTE1CBWIDIVBYTE2MOVQUOT,AL

3.逻辑运算类指令

(一)逻辑运算指令(按位进行逻辑运算)

指令格式:

逻辑与:

ANDDST,SRC;SF,ZF,PF逻辑或:

ORDST,SRC;

按结果设定逻辑异或:

XORDST,SRC;CF,OF总为0AF不确定

逻辑非指令:

NOTDST;对标志位无影响

例:

(AL)=10100101,ANDAL,0FH指令运算结果:

(AL)=10100101

∧0F=00001111

——————————

00000101→AL

标志位:

SF=0,ZF=0,PF=1

例:

AL中最高位置1;ORAL,80H

例:

AL中最低位求反;XORAL,01H

(二)测试指令

指令格式:

TESTDST,SRC;按位与,结果不

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

当前位置:首页 > 人文社科 > 法律资料

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

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