微机原理第三章指令系统_第1页
微机原理第三章指令系统_第2页
微机原理第三章指令系统_第3页
微机原理第三章指令系统_第4页
微机原理第三章指令系统_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

8086指令系统的特点

★8086的寻址方式

★8086指令系统

第三章8086的指令系统

1.

指令系统的兼容性

2.

灵活的指令格式

3.

指令的寻址能力和数据存取能力强4.具有处理多种类型数据的能力5.便于构成多处理机系统一、8086指令系统的特点

有效地址EA(EffectiveAddress)

寻址方式

8086的指令格式及数据类型二、8086的寻址方式

1.有效地址EA(EffectiveAddress)

当8086CPU的执行部件EU需要读/写存储器操作数时,它必须把一个偏移地址送给总线接口部件BIU。BIU把这个偏移地址和段地址的首址相加,产生20位物理地址,然后执行存取操作数所需的总线周期。寻址所需的偏移地址即为有效地址,用EA表示。它是一个16位的无符号数,代表被寻址的操作数在存储器中的位置距离该段起点的字节数。如图所示:

2.寻址方式

寻址方式大致分为以下类型:立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、基址寻址、变址寻址、基址加变址寻址、串寻址和输入/输出端口寻址。78H56H34H12H34H12H56H78H操作码(1)立即寻址

操作数作为立即数直接存在指令中,可为字节、字、双字。例:

MOVCX,12345678H低地址高地址CS段CX(2)寄存器寻址

操作数在寄存器中,指令中用3位字段指令寄存器号码。对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP;对于8位操作数,寄存器可以是AL、AH、BL、BH、CL、CH、DL、DH。例:

MOVAX,BX

78H56H34H12HAX78H56H34H12HBX34H12H00H操作码(3)直接寻址

指令中的操作数部分直接给出操作数的有效地址EA,操作数可以是16位或32位整数,操作数默认在DS段中,例:MOVAX,[3000H]低地址高地址CS段30H34H12HAXDS段5000053000DS300053000+5000(4)寄存器间接寻址

存储操作数的有效地址,可直接取自基址寄存器或变址寄存器之一。只要对基址寄存器或变址寄存器的值做适合的修改,一条指令就可以对许多不同的存储单元进行操作。这种寻址方式可以用于表格处理,只需修改寄存器内容就可对表格中的不同项进行操作。操作码低地址高地址CS段34H12H34H12HAXSS段7000073000SS7000300073000+MOVAX,[BP]BP(5)基址寻址

在基址寻址中,有效地址是位移量值和寄存器BX或寄存器BP的内容之和。低地址高地址CS段操作码00H15H34H12H34H12HAXFS段7000073500BX150073500+DS700002000MOVDX,[BX+1500](6)变址寻址所谓变址寻址,就是以指定的变址寄存器的内容,加上指令中给定的8位或16位位移量,作为操作数的地址,即EA=[变址寄存器]+位移量。SI、DI为基址寄存器,DS为默认段寄存器。变址寻址适用于对一维数组的元素进行操作。(7)基址加变址寻址

操作数的有效地址是一个基址寄存器和一个变址寄存器的内容再加上指令中指定的8位或16位位移量之和。基址加变址寻址主要用于二维数组操作和二重循环。例:

MOVAX,[BX+SI]MOVEAX,[EDX+EBP](8)串寻址串寻址访问的操作数,不能用通常的存储器寻址方式,而是隐含地运用变址寄存器。当执行串命令时,设定SI指向源字符串的第一个字节或字,DI指向目的字符串的第一个字节或字,且目的字符串必须存放在附加段中。在重复操作中,CPU自动地调整SI和DI的内容,以获得后续的字节或字。

3.8086的指令格式及数据类型

指令由操作码和操作数两部分组成。8086是变字节指令,一条指令一般由1~6个字节组成(加上前缀字节,最长的可为7字节指令)。指令的操作码采用二进制代码表示本指令所执行的操作,通常用指令的第一个字节表示。有时由于用8位不够,因此在指令的第二个字节中还可能占有3位操作码。除此以外的其它字节或位则用来表示操作数。

数据传送指令

算术运算指令

位处理指令模式系统★串操作指令

★程序控制转移指令三、8086指令系统

1.数据传送指令

数据传送指令负责把数据、地址传送到寄存器或存储单元中,以及实现存储器和寄存器、寄存器之间、寄存器AL和AX与I/O端口之间的字节或字的传送。它可分为以下四类:通用数据传送、累加器专用传送(输入/输出数据传送)、目标地址传送和标志寄存器传送。(1)通用数据传送

MOV传送指令格式为:MOVOPRD1,OPRD2

执行操作:(OPRD1)(OPRD1)该指令把一个字节或字操作数从源传送到目的,能实现CPU内部寄存器之间的数据传送、寄存器与存储器之间的数据传送、立即数传送到CPU内部通用寄存器和存储器。但要注意以下几点:1)寄存器不能为IP;2)允许用段寄存器作为一个目的操作数时,不允许用CS段寄存器;3)MOV指令的目的操作数不允许用立即数方式;4)不允许两个段寄存器之间直接传送信息;5)不允许用MOV指令在两个存储单元之间直接传送数据,而应间接通过CPU内部寄存器来实现。

PUSH进栈指令格式为:PUSH

OPRD

执行操作:SPSP-2该指令把一个字操作数从源传送到堆栈的顶部。常用于在调用过程前把参数入栈,16位寄存器(包括段寄存器)、存储器单元的内容都可入栈。

POP出栈指令格式为:POP

OPRD

执行操作:SPSP+2该指令把SP所指向的堆栈顶部的一个字传送到指定目的操作数,同时修改堆栈指针,即SPSP+2。

XCHG交换指令格式为:XCHGOPRD1,OPRD2

执行操作:(OPRD1)(OPRD1)该指令把一个字节或字的源操作数与目的操作数相交换,即该指令的两个操作数中必须有一个为寄存器操作数,且段寄存器不能作为一个操作数。(2)累加器专用传送

IN输入指令长格式为:INAL,PORT;(字节)INAX,PORT;(字)执行操作:(AL)(PORT)(AX)(PORT)

短格式为:INAL,DX;(字节)INAX,DX;(字)执行操作:(AL)(DX)(AX)(DX+1,DX)

该指令把一个字节或字由输入端口传送到AL或AX,端口地址由指令中的PORT或者DX规定。若由PORT所规定可寻址256个端口;若由DX所规定可寻址64K个端口。当端口号大于256时,只能使用短格式,但必须先把端口号放到DX寄存器中。

OUT输入指令长格式为:OUTAL,PORT;(字节)INAX,PORT;(字)执行操作:(AL)(PORT)(AX)(PORT)

短格式为:OUTAL,DX;(字节)OUTAX,DX;(字)执行操作:(AL)(DX)(AX)(DX+1,DX)

XLAT换码指令格式为:XLAT

OPRD

执行操作:AL(BX+AL)该指令完成一个字节的查表转换。(3)目标地址传送LEA有效地址送寄存器指令格式为:LEA

r,src

执行操作:rADR(src);W该指令把源操作数偏移量(而不是它的值)传送到目的操作数所在的16位寄存器。LDS指针装入寄存器和DS指令格式为:LEA

r,src

执行操作:r(EA)DS(EA+2);DW该指令把源操作数的连续四个字节(目标指针,包括一个段地址和一个地址偏移量)的双字存储器传送到一对目的寄存器。LES指针装入寄存器和ES指令格式为:LES

r,src

执行操作:r(EA)ES(EA+2);DW该指令除将地址指针的段地址部分送入ES外,其余与LDS指令类似。(4)标志寄存器传送LAHF标志寄存器低字节送AH指令格式为:LAHF

执行操作:(AH)Flag的低字节该指令把标志寄存器中的SF、ZF、AF、PF和CF分别传送到AH寄存器的相应位,但本身不影响这些标志位。SAHFAH送标志寄存器低字节指令格式为:LAHF

执行操作:Flag的低字节(AH)该指令把AH寄存器的相应位分别传送到标志寄存器中的SF、ZF、AF、PF和CF,但本身不影响溢出标志位OP、方向标志位DF、中断标志位IF和跟踪标志位TF。PUSHF标志进栈指令格式为:PUSHF

执行操作:SPSP-2;(SP+1,SP)Flag该指令把整个标志寄存器推入堆栈保存,同时修改堆栈指针。这条指令对标志位没有影响。POPF标志进栈指令格式为:POPF

执行操作:Flag(SP+1,SP);SPSP+2该指令把现行堆栈指针所指一个字传送给标志寄存器,同时相应地修改堆栈指针。这条指令执行后,8086的标志位取决于原堆栈顶部的内容。2.算术运算指令8086以多种形式提供4种基本的算术运算,可用于字节(8位)或字(16位)的带符号或不带符号的运算。若是带符号运算,则用补码表示。(1)加法运算

ADD加法运算指令格式为:ADDOPRD1,OPRD2;B/W

执行操作:OPRD1

OPRD1+OPRD2该指令完成两个操作数相加,结果送到目标操作数。

ADC加法运算指令格式为:ADCOPRD1,OPRD2;B/W

执行操作:OPRD1

OPRD1+OPRD2该指令与ADD类似,不同之处只是在两个操作数相加时,要把进位标志CF的现行值加上去,结果送到目标操作数。

INC增量指令格式为:ADCOPRD;B/W

执行操作:OPRD

OPRD+1该指令是使操作数的内容加1,然后把结果送回到此操作数。

DAA十进制数加法调整指令格式为:DAA;B该指令为BCD码十进制数加法调整指令,对在AL中的两个组合的BCD码相加后的结果进行校正,以产生正确的BCD码相加的和。

AAA十进制数加法调整指令格式为:AAA;B该指令为ASCII码十进制数加法调整指令,对在AL中的两个非组合的ASCII码相加后的结果进行校正,以产生正确的非组合的ASCII码相加的和。(2)减法运算

SUB减法运算指令格式为:SUBOPRD1,OPRD2;B/W

执行操作:OPRD1

OPRD1-OPRD2该指令完成两个操作数相加,结果送到目标操作数。

SBB减法运算指令格式为:ADCOPRD1,OPRD2;B/W

执行操作:OPRD1

OPRD1-OPRD2-CF该指令与SUB类似,不同之处只是在两个操作数相减时,要把减去进位标志CF的值,结果送到目标操作数。

DEC减量指令格式为:DECOPRD;B/W

执行操作:OPRD

OPRD-1该指令是将操作数的值减1,再将结果送回到此操作数。

NEG取补指令格式为:NEGOPRD;B/W执行操作:OPRD0-OPRD

该指令将指令中给出的操作数取补,再将结果送回。

CMP比较指令格式为:CMPOPRD1,OPRD2

执行操作:(OPRD1)(OPRD1)该指令完成两个操作数相减,结果反映在标志位,并不回送任何操作数。它的执行结果影响标志位AF、CF、OF、PF、SF和ZF。通常在该指令后面跟一条条件转移指令,检查标志位的状态以决定程序的转向。

DAS十进制数减法调整指令格式为:DAS;B该指令为BCD码十进制数减法调整指令,对在AL中的两个组合的BCD码相减后的结果进行校正,以产生正确的BCD码相减的差。

AAS十进制数减法调整指令格式为:AAS;B该指令为ASCII码十进制数减法调整指令,对在AL中的两个非组合的ASCII码相减后的结果进行校正,以产生正确的非组合的ASCII码相减的差。(3)乘法运算

MUL无符号数的乘法指令格式为:MULOPRD;B/W

IMUL带符号数的乘法指令格式为:IMULOPRD;B/WAAMASCII码十进制乘法调整指令格式为:AAM(4)除法运算

DIV无符号数的除法指令格式为:DIVOPRD;B/W

IDIV带符号数的除法指令格式为:IMULOPRD;B/WAADASCII码十进制除法调整指令格式为:AADCBW将带符号的字节数据扩展为字数据的指令格式为:CBW

CWD将带符号的字节数据扩展为双字数据的指令格式为:CWD

3.位处理指令模式系统8086指令系统提供了三组字节和字的位处理指令,分别为:逻辑运算指令、移位指令和循环移位指令。(1)逻辑运算指令

NOT取反指令格式为:NOT;B/W

执行操作:OPRD

OPRD的反码该指令对源操作数各位取反,形成反码,常用于将某个数据先变成反码,再加上1,便得到补码。

AND相“与”指令格式为:ANDOPRD1,OPRD2;B/W

执行操作:OPRD1

OPRD1^OPRD2该指令对两个操作数进行按位逻辑“与”操作,结果送回目的操作数。

OR相“或”指令格式为:OROPRD1,OPRD2;B/W

执行操作:OPRD1

OPRD1^OPRD2该指令对两个操作数进行按位逻辑“或”操作,结果送回目的操作数。

XOR相“异或”指令格式为:XOROPRD1,OPRD2;B/W

执行操作:OPRD1

OPRD1^OPRD2该指令对两个操作数进行按位逻辑“异或”运算,结果送回目的操作数。

TEST检测指令格式为:TESTOPRD1,OPRD2;B/W

执行操作:OPRD1^OPRD2该指令对两个操作数进行按位逻辑“与”操作,修改标志,但不回送结果,即执行该指令后,两个操作数都不变。(2)移位指令

SAL/SHL左移指令格式为:SAL/SHLOPRD,CNT;B/W

SAL和SHL这两条指令的功能完全一样,实际上是同一条指令,实现对字节或字中各位进行左移,右端补零,左移的位数由计数值CNT规定。

SHR右移指令格式为:SHROPRD,CNT;B/WSHR指令对操作数(字或字节)中各位进行右移,右移位数由计数值CNT规定。执行一次移位,操作数右移移位,最低位进入标志CF,最高位补0,进位位CF的原来值丢失。

SAR右移指令格式为:SAROPRD,CNT;B/WSAR指令对操作数(字或字节)中各位进行右移,右移位数由计数值CNT规定。执行一次移位,操作数右移移位,最低位进入标志CF,最高位保持不变,进位位CF的原来值丢失。(3)循环移位指令ROL循环左移指令格式为:ROLOPRD,CNT;B/W

温馨提示

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

评论

0/150

提交评论