微机原理与接口技术3指令系统和寻址方式.docx

上传人:b****2 文档编号:1826075 上传时间:2022-10-24 格式:DOCX 页数:17 大小:796.41KB
下载 相关 举报
微机原理与接口技术3指令系统和寻址方式.docx_第1页
第1页 / 共17页
微机原理与接口技术3指令系统和寻址方式.docx_第2页
第2页 / 共17页
微机原理与接口技术3指令系统和寻址方式.docx_第3页
第3页 / 共17页
微机原理与接口技术3指令系统和寻址方式.docx_第4页
第4页 / 共17页
微机原理与接口技术3指令系统和寻址方式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术3指令系统和寻址方式.docx

《微机原理与接口技术3指令系统和寻址方式.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术3指令系统和寻址方式.docx(17页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术3指令系统和寻址方式.docx

微机原理与接口技术3指令系统和寻址方式

操作码:

指令。

操作数:

描述该指令的操作对象,存放在指令的地址码字段中;存放在寄

存器中;存放在存储器的数据段、堆栈段或附加数据段中。

与对

应的三种操作数是:

立即操作数、寄存器操作数和存储器操作数。

①寻址方式:

确定操作数存放地址的方法。

1)立即寻址方式:

操作数直接给出,即数字表达式。

(不需要访问存储器)。

说明:

立即数可为8位,可位16位;只能为整数;只能做源操作数。

2)寄存器寻址方式:

操作数在CPU内部的寄存器中,指令中给出寄存器名。

说明:

寄存器为16位(AX,BX,CX,DX,SI,DI,SP,BP)

8位(AH,AL,BH,BL,CH,CL,DH,DL);

源操作数和目的操作数都(同时)可以使用寄存器寻址。

3)存储器寻址:

操作数在存储器中。

3)(1直接寻址方式:

存储单元的有效地址由指令直接给出。

说明:

默认的段寄存器DS,如果不是,则需要用前缀指出

如MOVBX,EX:

[3100H]

3)(2寄存器间接寻址方式:

存储单元的有效地址在寄存器中。

说明:

寄存器可为基址寄存器(BX,BP),变址寄存器(SI,DI);

默认的段寄存器位DS,当寄存器为BP时,段寄存器为SS。

3)(3寄存器相对寻址方式:

操作数的偏移地址是指定寄存器与一个整数之和。

3)(4基址变址寻址:

操作数的偏移地址是两个指定寄存器的值之和。

3)(相对基址变址寻址方式:

操作数的偏移地址是指定寄存器的值与相对偏移量

之和

②对操作数的说明:

立即操作数:

(1)只能做源操作数

(2)指令中的立即操作数不应超过其8位或16位的取值范围

MOVAL,100H,错误,应该为MOVAX,100H

寄存器操作数:

(1)存放在通用寄存器(AX-DX),地址指针(IP)或变址寄存器

(SI,DI),以及段寄存器(SS,DS)

存储器操作数:

(1)存储器操作数可以作为源操作数,也可以作为目的操作数,

(2)多数指令不允许源操作数、目的操作数同时为存储器操作数。

③8088/8086CPU的指令系统:

【{********}:

表示汇编格式】

1)数据传送指令:

(1)通用传送指令

1、最基本的传送指令:

{MOV目的操作数源操作数}

目的操作数←源操作数

说明:

1:

不能将立即数直接传送给段寄存器

2:

两个段寄存器之间不允许直接传送数据

3:

两内存单元之间不能直接传送数据

4:

CS,IP,PSW不能做目的操作数,即值用

户无权改变

5:

目的操作数不能是立即寻址方式

6:

源操作数与目的操作数必须字长相等

7:

MOV指令不影响标志位

2、堆栈操作指令:

PUSH和POP(按先进后出,后进先出的原则)

{PUSH源操作数}(压栈:

操作:

(SP)←(SP)-2

((SP)+1,(SP))←操作数

{POP目的操作数}(弹栈:

操作:

操作数←((SP)+1,(SP))

(SP)←(SP)+2

说明:

1:

PUSH、POP指令的操作数不能使用立即寻

址方式。

POP指令的操作数不能使用CS寄

存器。

2:

PUSH、POP指令只能做字操作。

3:

不影响标志位。

3、交换指令:

XCHG(两者互换)

{XCHG目的操作数,源操作数}

说明:

1:

目的和源都不能为立即数或段寄存器,IP。

2:

不能同时为内存单元。

3:

目的操作数和源的取值范围要相同,同为8位

或者16位。

4:

不影响标志位。

(2)累加器专用传送

1、换码指令:

XLAT(用于编码制的转换)

{XLAT或XLAT地址标号}

说明:

1:

内存中必须有码表。

2:

不影响标志位。

2、输入/输出指令IN,OUT(16位时,端口只能放在DX中)

1、输入指令:

IN(CPU从外设端口接收数据)

2、输出指令:

OUT(CPU向外设端口发送数据)

说明:

8位:

INAL,I/O口地址表达式

OUT地址表达式,AL

16位:

MOVDX,地址表达式MOVDX,地址表达式

INAX,DXOUTDX,AX

(3)地址传送指令

1、偏移地址送寄存器指令:

LEA(loadeffectiveaddress取有效地址指

令)(将内存单元的地址送到某一个寄存器中)

{LEA16位寄存器名,存储器寻址方式}

说明:

1:

16位寄存器不包括段寄存器。

2:

不影响标志位。

2、指针送指定寄存器和DS寄存器指令:

LDS(loadpointerintoregister

DS取地址指针装入DS和另一个寄存器的指令)

(将4个字节的内存单元地址(一个段地址和偏移

量送到两个目的寄存器中,后2个字节送入DS)

{LDS16位寄存器名,存储器寻址方式}

说明:

1:

16位寄存器不允许是段寄存器。

2:

不影响标志位。

3、指针送指定寄存器和ES寄存器指令:

LES(loadpointerintoregister

DS取地址指针装入ES和另一个寄存器的指令)

{LES16位寄存器名,存储器寻址方式}

说明:

1:

16位寄存器不允许段寄存器。

2:

不影响标志位。

(4)标志传送指令

1、读取标志指令:

LAHF(loadAHwithFlags)读取标志位置AH中

{LAHF}

2、设置标志指令:

SAHF(storeAHontoFlags)将AH设置到A标志位

{SAHF}

3、标志入栈指令:

PUSHF{PUSHF}

标志出栈指令:

POPF{POPF}

2)算术运算指令:

(1)加法指令

1、不带进位位的加法指令:

ADD(addition)

汇编格式:

ADD目的操作数,源操作数

执行的操作:

(目的操作数)←源操作数+目的操作数

2、带进位位的加法指令:

ADC(additionwithcarry)(实现多字节相加)

汇编格式:

ADC目的操作数,源操作数

执行的操作:

(目的操作数)←源操作数+目的操作数+CF

3、增量指令:

INC(incrementdestinationby1)

汇编格式:

INC操作数

执行的操作:

(操作数)←操作数+1

说明:

1:

除增量指令不影响CF标志位,其他标志位均受指令影响

2:

CF标志位表示无符号数有无溢出,OF标志位表示有符号

数有无溢出

(2)减法指令

1、不考虑借位的减法指令:

SUB(subtract)

汇编格式:

SUB目的操作数,源操作数

执行的操作:

(目的操作数)←目的操作数-源操作数

2、考虑借位的减法指令:

SBB(subtractwithborrow)

汇编格式:

SBB目的操作数,源操作数

执行的操作:

(目的操作数)←目的操作数-源操作数-CF

3、减量指令:

DEC(decrementdestinationby1)

汇编格式:

DEC操作数

执行的操作:

(操作数)←操作数-1

4、求补指令:

NEG(negate)

汇编格式:

NEG操作数

执行的操作:

(操作数)←0-操作数

5、比较指令CMP(comparetwooperands)

汇编格式:

CMP目的操作数,源操作数

执行的操作:

目的操作数-源操作数。

说明:

结果不回送,两个操作数保持原值,影响标志位。

说明:

1、除DEC不影响CF标志位,其余标志位均受指令影响。

2、ZF标志位表示零标志位,SF表示符号标志位。

(3)乘法指令

1、无符号数的乘法指令:

MUL(multiplyaccumulatorby

register-or-memory;unsigned)

汇编格式:

MUL源操作数

执行的操作:

若为字节操作(AX)←(AL)×源操作数

若为字操作(DX),(AX)←(AX)×源操作数

2、有符号数的乘法指令:

IMUL(integermultiplyaccumulatorbyregister-

or-memory;signed)

汇编格式:

IMUL源操作数

执行的操作:

与MUL相同,只是处理的数据是有符号数,

而MUL处理的数据是无符号数。

说明:

1:

乘法指令的源操作数不能为立即寻址方式。

2:

乘法指令对除CF和OF以外的标志位无定义。

(4)除法指令

1、无符号数的乘法指令:

DIV(division;unsigned)

汇编格式:

DIV源操作数

执行的操作:

若为字节操作:

(AL)←(AX)/源操作数的商

(AH)←(AX)/源操作数的余数

若为字操作:

(AX)←(DX、AX)/源操作数的商

(DX)←(DX、AX)/源操作数的余数

商和余数均为无符号数。

2、有符号数的乘法指令:

IDIV(integerDivision;signed)

汇编格式:

IDIV源操作数

执行的操作:

与DIV相同,只是操作数是有符号数,商和余数均

为有符号数,余数符号同被除数符号。

说明:

1、乘法对所有的标志位未定义。

2、源操作数的寻址方式不能为立即寻址方式。

3、除法指令可能导致的错误:

①除数位0,②除法溢出。

产生除法错中断警告,优先级为0最高。

(5)符号扩展指令(正数将AH或DX清0,负数将AH或DX置1)

1、字节转换为字指令:

CBW

汇编格式:

CBW

执行的操作:

将(AL)的符号扩展到(AH)中去。

如果(AL)的最高有

效位为0,则(AH)=00H;如(AL)的最高有效位为1,

则(AH)=0FFH。

2、字转换为双字指令:

CWD

汇编格式:

CWD

执行的操作:

将(AX)的符号扩展到(DX)中去。

如果(AX)的最高

有效位为0,则(DX)=00H;如(AX)的最高有效位

为1,则(DX)=0FFH。

说明:

这两条指令都不影响标志位。

(6)十进制调整指令:

1、组合BCD码的运算调整指令

加法调整指令DAA(decimaladjustforaddition)

减法调整指令DAS(decimaladjustforsubtraction)

汇编格式:

DAA

执行的操作:

调整(AL)中的二进制BCD码的和。

调整方法如下:

若AF=1或者(AL)的低4位是在AH~FH之间,则

(AL)加06H,且自动置AF=1;

若CF=1或者(AL)的高4位是在AH~FH之间,则

(AL)加60H,且自动置CF=1。

汇编格式:

DAS

执行的操作:

调整(AL)中的差。

调整方法如下:

若AF=1,则(AL)减06H;

若CF=1,则(AL)减60H。

2、非组合BCD码调整指令

加法调整指令{AAA}

减法调整指令{AAS}

乘法调整指令{AAM}

除法调整指令{AAD}

3)逻辑运算指令和移位指令

(1)逻辑运算指令

说明:

AND、OR、XOR和TEST四条指令的使用形式很相似,都是双

操作数指令,操作数的寻址方式的规定与算术运算指令相同,对

标志位的影响也相同,使CF=0,OF=0,AF位无定义,SF、ZF、

PF根据运算结果设置。

1、AND逻辑与指令汇编格式:

AND目的操作数,源操作数

2、OR逻辑或指令汇编格式:

OR目的操作数,源操作数

3、XOR逻辑异或指令汇编格式:

XOR目的操作数,源操作数

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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