寻址方式和指令系统

上传人:博****1 文档编号:584745644 上传时间:2024-08-31 格式:PPT 页数:120 大小:382.51KB
返回 下载 相关 举报
寻址方式和指令系统_第1页
第1页 / 共120页
寻址方式和指令系统_第2页
第2页 / 共120页
寻址方式和指令系统_第3页
第3页 / 共120页
寻址方式和指令系统_第4页
第4页 / 共120页
寻址方式和指令系统_第5页
第5页 / 共120页
点击查看更多>>
资源描述

《寻址方式和指令系统》由会员分享,可在线阅读,更多相关《寻址方式和指令系统(120页珍藏版)》请在金锄头文库上搜索。

1、第第3 3章章 寻址方式和指令系统寻址方式和指令系统第第3章章 寻址方式和指令系统寻址方式和指令系统3.1 寻址方式寻址方式3.2 指令系统指令系统3.3 数据传送类指令数据传送类指令3.4 算术运算类指令算术运算类指令3.5 逻辑操作类指令逻辑操作类指令3.5 逻辑操作类指令逻辑操作类指令3.6 程序控制类指令程序控制类指令3.7 串操作类指令串操作类指令开开始始第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.1寻址方式寻址方式3.1.1 立即寻址立即寻址3.1.2 寄存器寻址寄存器寻址3.1.3 直接寻址直接寻址3.1.4 寄存器间接寻址寄存器间接寻址3.1.5 寄存器相对变址寻址

2、寄存器相对变址寻址3.1.6 寄存器基址加变址寻址寄存器基址加变址寻址3.1.7 寄存器相对基址加变址寻址寄存器相对基址加变址寻址返回本章首页返回本章首页第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.1 寻址方式寻址方式指令中用于说明操作数地址的方法称为寻址方式。寻址就是正确获取指令指令中用于说明操作数地址的方法称为寻址方式。寻址就是正确获取指令中的操作数。操作数是指令或程序的主要处理对象。中的操作数。操作数是指令或程序的主要处理对象。 在在8086/8088系统中,操作数可分为数据操作数和转移地址操作数两大类。系统中,操作数可分为数据操作数和转移地址操作数两大类。1数据操作数数据操

3、作数数据操作数指与数据有关的操作数,其指令中操作的对象是数据。数据操数据操作数指与数据有关的操作数,其指令中操作的对象是数据。数据操作数包括:立即数操作数、寄存器操作数、存储器操作数和作数包括:立即数操作数、寄存器操作数、存储器操作数和I/O操作数。操作数。2转移地址操作数转移地址操作数这一类指令中操作的对象不是数据,而是程序要转移的目标地址。它也可这一类指令中操作的对象不是数据,而是程序要转移的目标地址。它也可以分为:立即数操作数、寄存器操作数和存储器操作数。以分为:立即数操作数、寄存器操作数和存储器操作数。对于双操作数指令,在操作中保持不变的一个称为源操作数,保存结果的对于双操作数指令,在

4、操作中保持不变的一个称为源操作数,保存结果的另一个操作数称为目的操作数。另一个操作数称为目的操作数。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.1.1 立即寻址立即寻址立立即即寻寻址址方方式式中中,指指令令操操作作码码和和操操作作数数都都在在存存储器代码段中。储器代码段中。汇汇编编格格式式:n n(n n为为立立即即操操作作数数,是是用用8 8位位或或1616位位二进制补码表示的有符号数)二进制补码表示的有符号数)功功能能:操操作作数数存存放放在在存存储储器器,指指令令下下一一单单元元的的内容为立即操作数内容为立即操作数n n。图形表示:图形表示: 第第3 3章章 寻址方式和指令系

5、统寻址方式和指令系统【例【例3.1】 MOV AX,0102H执行后(执行后(AX)=?该该例例中中源源操操作作数数为为立立即即寻寻址址方方式式,立立即即数数为为0102,存存放在指令的下一单元。放在指令的下一单元。图形表示:图形表示:返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.1.2 寄存器寻址寄存器寻址在在指指令令中中用用寄寄存存器器的的名名字字代代替替该该操操作作数数,通通过过引引用用寄寄存存器器来来使使用用操操作作数数的的寻寻址址方方式式称称为为寄寄存存器寻址方式。器寻址方式。汇编格式:汇编格式:R 其中其中R表示寄存器名。表示寄存器名。功能:操作数直接存放

6、在寄存器功能:操作数直接存放在寄存器R中。中。图形表示:图形表示: R 指令指令操作数操作数第第3 3章章 寻址方式和指令系统寻址方式和指令系统寄存器寻址方式是比较常用的寻址方式,源和目的操作数都可以是寄存器。根据寄存器的位置,通常分为以下三种类型:1源操作数是寄存器寻址方式例如:ADD VAR1, AX ADD VAR2, BL其中:VAR1是字类型的内存变量,VAR2是字节类型的内存变量。2目的操作数是寄存器寻址方式例如:ADD BH, 56H ADD AX, 0BA52H3源和目的操作数都是寄存器寻址方式例如:MOV AX, BX MOV DH, BL第第3 3章章 寻址方式和指令系统寻

7、址方式和指令系统【例例3.2】MOV AX,BX ,其中,其中BX=8A12H。指令执行后,(指令执行后,(AX)=8A12H,BX保持不变。保持不变。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.1.3 直接寻址直接寻址指令所要的操作数存放在存储单元中,在指令中直接指令所要的操作数存放在存储单元中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址给出该操作数的有效地址,这种寻址方式为直接寻址方式。方式。在这种寻址方式中,操作数通常存放在数据段中,其在这种寻址方式中,操作数通常存放在数据段中,其物理地址由数据段寄存器物理地址由数据段寄存器DS和指令中的有效地址直接和指令中的

8、有效地址直接形成,但如果使用段前缀,操作数也可存放在其它段形成,但如果使用段前缀,操作数也可存放在其它段汇编格式:汇编格式:含有变量的地址表达式。含有变量的地址表达式。段寄存器名:段寄存器名: EA EA 。功能:指令下一字单元的内容是操作数的偏移地址功能:指令下一字单元的内容是操作数的偏移地址EAEA。图形表示:图形表示:第第3 3章章 寻址方式和指令系统寻址方式和指令系统【例【例3.3】 指令:指令:MOV AX, 100H,在执行时,在执行时,(DS)=4000H,内存单元,内存单元40100H的值为的值为1234H。求。求指令执行后寄存器指令执行后寄存器AX的值?的值?返回本节返回本节

9、物理地址的计算式物理地址的计算式为:为:2000H(段基(段基地址)地址)+200H(偏(偏移地址)移地址)=20200H(物理地(物理地址)图给出了寻址址)图给出了寻址方式示意图。指令方式示意图。指令执行后的结果为:执行后的结果为:(AX)=1234H第第3 3章章 寻址方式和指令系统寻址方式和指令系统在访问数据段时,一般默认使用的寄存器是为在访问数据段时,一般默认使用的寄存器是为DS,如果要指定访问其它段内的数据,可在指令中,如果要指定访问其它段内的数据,可在指令中用段前缀的方式显式地书写出来。指令用段前缀的方式显式地书写出来。指令MOVAX,ES:1234H就是带有段前缀的直接寻址方式。

10、就是带有段前缀的直接寻址方式。直接寻址方式常用于处理内存单元的数据,其操直接寻址方式常用于处理内存单元的数据,其操作数是内存变量的值,该寻址方式可在作数是内存变量的值,该寻址方式可在64K字节字节的段内进行寻址。立即寻址方式和直接寻址方式的段内进行寻址。立即寻址方式和直接寻址方式的书写格式不同,直接寻址的地址要写在括号的书写格式不同,直接寻址的地址要写在括号“”,“”内。在程序中,直接地址通常用内存变内。在程序中,直接地址通常用内存变量名来表示。量名来表示。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.1.4 寄存器间接寻址寄存器间接寻址寄寄存存器器间间接接寻寻址址方方式式中中,寄寄

11、存存器器的的内内容容为为操操作数的偏移地址作数的偏移地址EAEA,操作数在存储器中。操作数在存储器中。汇编格式:汇编格式: RR功功能能:操操作作数数存存放放在在存存储储器器,寄寄存存器器R R存存放放操作数的偏移地址操作数的偏移地址EAEA。第第3 3章章 寻址方式和指令系统寻址方式和指令系统偏移地址偏移地址EA计算方法如下:计算方法如下:EA=SISI作间址寄存器。 DIDI作间址寄存器。BX BX作间址寄存器。BP BP作间址寄存器。其一、如果指令中使用的寄存器是其一、如果指令中使用的寄存器是BX、SI、DI,则用,则用DS寄存器寄存器的内容作为段地址,即操作数的物理地址为:物理地址的内

12、容作为段地址,即操作数的物理地址为:物理地址=10H(DS)+(BX、SI或或DI三者之一)这种情况称为数据段三者之一)这种情况称为数据段基址间接寻址方式。基址间接寻址方式。其二、如果指令中用其二、如果指令中用BP寄存器,则操作数的段地址在寄存器,则操作数的段地址在SS中,即中,即堆栈段,所以操作数的物理地址为:物理地址堆栈段,所以操作数的物理地址为:物理地址=10H(SS)+(BP)这种情况称为堆栈段基址间接寻址方式。)这种情况称为堆栈段基址间接寻址方式。第第3 3章章 寻址方式和指令系统寻址方式和指令系统则则物物理理地地址址的的计计算算式式为为:20000H(数数据据段段地地址址)+100

13、0H(偏偏移移地地址址)=21000H(物物理理地地址址)。图图3.4给给出出了了寻寻址址方方式式示示意意图图。指指令令执执行行后后的的结结果为(果为(AX)=1234H。【例例3.4】假设有指令:假设有指令:MOVAX,BX,在执行时,在执行时,(DS)=2000H,(BX)=1000H,存储单元,存储单元21000H的内容是的内容是1234H。求指令执行后寄存器。求指令执行后寄存器AX的值?的值?返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.1.5 寄存器的相寄存器的相对变址寻址变址寻址变变址址寻寻址址方方式式操操作作数数的的偏偏移移地地址址EAEA为为寄寄存存器

14、器的的内容加位移量,操作数在存储器中。内容加位移量,操作数在存储器中。汇汇编编格格式式:XRXR(X X表表示示位位移移量量,是是8 8位位或或1616位位二进制补码表示的有符号数)二进制补码表示的有符号数)功功能能:操操作作数数存存放放在在存存储储器器,寄寄存存器器R R的的内内容容加加位移量位移量X X为操作数的偏移地址为操作数的偏移地址EAEA。图形表示如下:图形表示如下:第第3 3章章 寻址方式和指令系统寻址方式和指令系统偏移地址EA计算方法如下:与寄存器间接寻址方式类似,如果指令中使用寄存器为与寄存器间接寻址方式类似,如果指令中使用寄存器为BX、SI、DI,则段寄存器用,则段寄存器用

15、DS,则物理地址为:,则物理地址为:物理地址物理地址=16(DS)+(BX、SI或或DI三者之一)三者之一)+8位(或位(或16位)位移量位)位移量当寄存器为当寄存器为BP时,则使用时,则使用SS段寄存器的内容作为段地址,段寄存器的内容作为段地址,此时物理地址为:此时物理地址为:物理地址物理地址=16(SS)+(BP)+8位(或位(或16位)位移量。位)位移量。第第3 3章章 寻址方式和指令系统寻址方式和指令系统【例【例3.5】假设有指令例:假设有指令例:MOV AX,200HSI,(DS)=2000H,(SI) =1000H,存储单元,存储单元21200H的值是的值是1234H,求,求AX的

16、值?的值?则物理地址的计算式为:则物理地址的计算式为:20000H(段地址)(段地址)+1000H(变址)(变址)+200H(位移量)(位移量)=21200H图图3.5给出给出了寻址方式示意图。指令执行的结果是了寻址方式示意图。指令执行的结果是(AX)=1234H第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.1.6 基址加变址寻址基址加变址寻址基基址址加加变变址址寻寻址址方方式式中中,操操作作数数的的偏偏移移地地址址EAEA是是指指令令中中基基址址寄寄存存器器内内容容、变变址址寄寄存存器器内内容容、位移量三项之和,操作数在存储器中。位移量三项之和,操作数在存储器中。汇编格式:汇编格式

17、:X BR+IRX BR+IR功功能能:操操作作数数存存放放在在存存储储器器,BRBR的的内内容容加加IRIR的的内容加位移量内容加位移量X X是操作数的偏移地址是操作数的偏移地址EAEA。图形表示:图形表示:第第3 3章章 寻址方式和指令系统寻址方式和指令系统操作数偏移地址操作数偏移地址EA计算方法如下计算方法如下返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统则其物理地址的计算的形成如下:则其物理地址的计算的形成如下:第第3 3章章 寻址方式和指令系统寻址方式和指令系统【例例3.6】指令指令MOVAX,BXDI,(,(DS)=2000H,(BX)=1000H,(,(DI

18、)=3000H,求指令执行后寄存器,求指令执行后寄存器AX的值?的值?物理地址的计算式为:物理地址的计算式为:20000H(段基地址)(段基地址)+1000H(基址)(基址)+3000H(变址)(变址)=24000H,指令执行后的结果为,指令执行后的结果为(AX)=1234H。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.1.7相对基址加变址寻址方式相对基址加变址寻址方式在相对基址加变址寻址方式中,寄存器在相对基址加变址寻址方式中,寄存器BX和和BP一般作为基址寄存器,寄存器一般作为基址寄存器,寄存器SI和和DI作为变作为变址寄存器。把一个基址寄存器址寄存器。把一个基址寄存器BX或或

19、BP的内容,的内容,加上变址寄存器加上变址寄存器SI或或DI的内容,再加上给定的的内容,再加上给定的8位或位或16位位移量,并以一个段寄存器作为地址位位移量,并以一个段寄存器作为地址基准,作为操作数的地址。基准,作为操作数的地址。第第3 3章章 寻址方式和指令系统寻址方式和指令系统操作数物理地址计算方法如下操作数物理地址计算方法如下相对基址加变址寻址方式有多种等价的书写方式,下面的相对基址加变址寻址方式有多种等价的书写方式,下面的书写格式都是正确的,并且其寻址含义也是一致的。书写格式都是正确的,并且其寻址含义也是一致的。MOVAX,BX+SI+2000HMOVAX,2000HBX+SIMOVA

20、X,2000HBXSIMOVAX,2000HSIBX第第3 3章章 寻址方式和指令系统寻址方式和指令系统【例例3.7】指令指令MOVAX,BP+SI+123H,如果,如果(SS)=2000H,(BP)=4200H,(SI)=1200H,内存单元,内存单元25523H的内容为的内容为1234H。求指令执行后寄存器。求指令执行后寄存器AX的值?的值?则物理地址的计算式为:则物理地址的计算式为:EA=4200H(基址)(基址)+1200H(变(变址)址)+123H(位移量)(位移量)=5523H,20000H(段基地址)(段基地址)+5523H(EA)=25523H(物理地址),指令执行后的结(物理

21、地址),指令执行后的结果为(果为(AX)=1234H。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.2 8086CPU3.2 8086CPU的指令系统的基本指令的指令系统的基本指令 一、汇编语言指令格式指令通常是由操作码和操作数组成,其一般格式如下:操作码操作数其中,操作码告诉计算机指令执行何种操作;操作数告诉计算机参加该操作的数据的来源和目的。根据指令的不同,操作数的个数可以是:0、1、2、3个不等,称之为无操作数指令,单操作数指令,双操作数指令和三操作数指令。在8086微处理器的指令系统中操作数最多只能有2个(即双操作数指令); 第第3 3章章 寻址方式和指令系统寻址方式和指令系

22、统80868086CPUCPU的指令的共同的规律的指令的共同的规律 l l大大多多数数数数据据传传送送类类指指令令、算算术术运运算算类类指指令令、位位操操作作类类指指令令及及串串操操作作类类指指令令,其其双双操操作作数数指指令令有有相相同同的的语句格式和操作规定。语句格式和操作规定。 语句格式:语句格式:标号:标号: 操作符操作符 OPD, OPS ;注释注释l l算算术术运运算算和和位位操操作作类类指指令令的的部部分分单单操操作作数数指指令令有有相同的语句格式和操作规定。相同的语句格式和操作规定。语句格式:语句格式:标号:标号: 操作符操作符 OPD ;注释注释包包括括数数据据传传送送类类指

23、指令令、算算术术运运算算类类指指令令、位位操操作作类类指指令令、串串操操作作类类指指令令、控控制制转转移移类类指指令令、处处理理机机控控制制类类指指令令。后后几几节节将将分分别别介介绍绍这这些些指指令令的的语语句格式和功能。句格式和功能。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.3数据传送类指令数据传送类指令3.3.1 通用数据传送指令通用数据传送指令3.3.2 堆栈操作指令堆栈操作指令3.3.3 标志寄存器传送指令标志寄存器传送指令3.3.4 地址传送指令地址传送指令3.3.5 输入输出指令输入输出指令返回本章首页返回本章首页第第3 3章章 寻址方式和指令系统寻址方式和指令系统

24、3.3.1 3.3.1 通用数据传送指令通用数据传送指令1传送指令传送指令MOV2数据交换指令数据交换指令XCHG3查表转换指令查表转换指令 XLAT第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1传送指令传送指令MOVMOV语句格式:语句格式:MOV OPDMOV OPD,OPSOPS功功能能:将将源源操操作作数数传传送送入入目目的的地地址址,源源地址内容不变。即(地址内容不变。即(OPSOPS)OPDOPD。下下图图2.12.1描描述述了了MOVMOV指指令令在在传传送送数数据据时时允允许传送的路径及类型。许传送的路径及类型。第第3 3章章 寻址方式和指令系统寻址方式和指令系统图

25、图2.1MOV指令所允许的数据传送路径及类型指令所允许的数据传送路径及类型第第3 3章章 寻址方式和指令系统寻址方式和指令系统1.寄存器与寄存器之间的数据传送指令寄存器与寄存器之间的数据传送指令MOV AX, BXMOV CL, ALMOV DX, ESMOV DS, AXMOV BP, SIMOV BX, CS代码段寄存器代码段寄存器CS不能为目的操作数,即禁止给段寄存器不能为目的操作数,即禁止给段寄存器CS赋值。如指令赋值。如指令MOV CS, BX是不正确,但可作为源操作数,是不正确,但可作为源操作数,如指令如指令MOV BX, CS是正确的。两个操作数不能同时为段寄是正确的。两个操作数

26、不能同时为段寄存器,如存器,如MOV ES, DS 也是不正确的。也是不正确的。第第3 3章章 寻址方式和指令系统寻址方式和指令系统2.立即数到通用寄存器的数据传送指令立即数到通用寄存器的数据传送指令MOVAL,5BHMOVBX,0504HMOVCH,0AHMOVSP,4200HMOVBX,-100HMOVCX,2000H在指令中使用立即数时,立即数只能作为源操在指令中使用立即数时,立即数只能作为源操作数使用,不能作为目的操作数使用,如:作数使用,不能作为目的操作数使用,如:MOV100H,AX是错误的。立即数也不能直接传是错误的。立即数也不能直接传值给段寄存器,如值给段寄存器,如MOVDS,

27、100H也是不正确的。也是不正确的。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.寄存器与存储器之间的数据传送指令寄存器与存储器之间的数据传送指令MOVAL,VAR1MOVAX,VAR2MOVBL,4000HMOVDI,DLMOVAX,BX+SIMOVBX+DI+200H,CL上面指令中的上面指令中的VAR1是字节类型变量,是字节类型变量,VAR2是字类型变量,都代表数据存储单元的符号是字类型变量,都代表数据存储单元的符号地址。存储器与存储器之间不能进行数据之地址。存储器与存储器之间不能进行数据之间传送。若要实现存储单元之间的数据传送,间传送。若要实现存储单元之间的数据传送,可以借助

28、于寄存器作为中介来进行。可以借助于寄存器作为中介来进行。第第3 3章章 寻址方式和指令系统寻址方式和指令系统4.立即数到存储器的数据传送立即数到存储器的数据传送MOVVAR1,20HMOVVAR1,1234HMOVBYTEPTRSI,6AH存储器变量的类型可以在数据定义时指定,也可存储器变量的类型可以在数据定义时指定,也可以在指令中另行指定,应保证其与立即数的类型以在指令中另行指定,应保证其与立即数的类型一致。一致。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3 3查表转换指令查表转换指令 XLAXLA语句格式:语句格式:XLAT OPSXLAT OPS或或XLATXLAT功功能能:将

29、将(BXBX)为为首首址址(ALAL)为为位位移移量量的的字字节节存存储储单单元元中中的的数数据据送送ALAL寄寄存存器器。即(即( BX+ALBX+AL)ALAL。返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.3.2 3.3.2 堆栈操作指令堆栈操作指令1进栈指令进栈指令PUSH2出栈指令出栈指令POP堆栈是一种先进后出的数据结构,即最后进栈的元素将堆栈是一种先进后出的数据结构,即最后进栈的元素将被最先出栈。数据进入堆栈称为压栈,数据退出堆栈称被最先出栈。数据进入堆栈称为压栈,数据退出堆栈称为出栈。堆栈从栈低开始存储数据,最后入栈的元素称为出栈。堆栈从栈低开始存储数

30、据,最后入栈的元素称为栈顶元素。在为栈顶元素。在8086/8088计算机中,堆栈一般是内存中计算机中,堆栈一般是内存中从(从(SS)16+0000H存储单元处开始设置,最大长度为存储单元处开始设置,最大长度为64KB的一块存储区域。用寄存器的一块存储区域。用寄存器SP作为堆栈指针,指作为堆栈指针,指向栈顶元素,由向栈顶元素,由SP的值就可以知道栈顶元素的位置。的值就可以知道栈顶元素的位置。第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1进栈指令进栈指令PUSHPUSH语句格式:语句格式: PUSH OPSPUSH OPS是是16位的操作数,可以是寄存器或存储器操作数。位的操作数,可以

31、是寄存器或存储器操作数。PUSH指令的操作过程为:(指令的操作过程为:(SP)(SP)-2,(SP)(OPS)。)。即先修改堆栈指针即先修改堆栈指针SP(入栈时(入栈时SP自动减自动减2),再将),再将指定的操作数送入新的栈顶位置。指定的操作数送入新的栈顶位置。(SP)OPD,相当于:,相当于:(SS)10H+(SP)OPD。第第3 3章章 寻址方式和指令系统寻址方式和指令系统2 2出栈指令出栈指令POPPOP语句格式:语句格式: POP OPDPOP OPD功功能能: 将将栈栈顶顶元元素素弹弹出出送送至至某某一一寄寄存存器器、段段寄寄存存器器(除(除CSCS外)或存储器,堆栈指针加外)或存储

32、器,堆栈指针加2 2。OPD(SP),(),(SP)(SP)+2。与入栈指令的操作相反,是先弹出栈顶的数与入栈指令的操作相反,是先弹出栈顶的数据,然后再修改指针据,然后再修改指针SP的内容。的内容。返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.3 3.3 数据交换指令数据交换指令XCHGXCHG语句格式:语句格式:XCHG OPD,OPS功功能能:将将源源地地址址与与目目的的地地址址中中的的内内容容互互换换。即即(OPD)OPS,(OPS)OPD。数据传送指令单方向地将源操作数送至目的操作数存储数据传送指令单方向地将源操作数送至目的操作数存储单元,而数据交换指令则将两

33、个操作数相互交换位置。单元,而数据交换指令则将两个操作数相互交换位置。寄存器不能是段寄存器,两个操作数也不能同时为内存寄存器不能是段寄存器,两个操作数也不能同时为内存变量。变量。XCHG指令不影响状态标志位,段寄存器内容不能用指令不影响状态标志位,段寄存器内容不能用XCHG指令来交换。指令来交换。【例例2.9】寄存器与存储器之间数据交换寄存器与存储器之间数据交换。MOVAX,5678H;(;(AX)=5678HMOVBX,0FFFFH;(;(BX)=0FFFFHXCHG AX,BX;(;(AX)=0FFFFH ,(,( BX)=5678H第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.

34、3.4 3.3.4 标志位操作指令标志位操作指令 标志位操作指令是一组对标志位进行读取、设置等标志位操作指令是一组对标志位进行读取、设置等操作的指令,这一指令都没有操作数。操作的指令,这一指令都没有操作数。1进位进位CF操作指令操作指令指令各式如下:指令各式如下:CLCSTCCMC指令指令CLC的作用是将进位的作用是将进位CF置置0,指令,指令CTC将进位将进位CF置置1,指令,指令CMC将进位将进位CF取反。取反。第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1标志送标志送AHAH指令指令LAHFLAHF语句格式:语句格式:LAHFLAHF功能:将标志寄存器的低功能:将标志寄存器的

35、低8 8位送入位送入AHAH寄存器。寄存器。即即(FLAGSFLAGS)7-0AH7-0AH。该该指指令令的的执执行行对对标标志志位无影响。位无影响。【例【例2.132.13】标志寄存器传送。】标志寄存器传送。执行前:(执行前:(FLAGSFLAGS)=0485H=0485H,(,(AXAX)=0FFFFH=0FFFFH执行指令:执行指令:LAHFLAHF第第3 3章章 寻址方式和指令系统寻址方式和指令系统2方向位方向位DF操作指令操作指令指令各式如下:指令各式如下:CLDSTD指令指令CLD的作用是将方向位的作用是将方向位DF置置0,指令,指令CTD将将DF置置1。3中断允许位中断允许位IF

36、操作指令操作指令指令各式如下:指令各式如下:CLISTI指令指令CLD的作用是将中断允许位的作用是将中断允许位IF置置0,指令,指令CTD是将是将IF置置1 第第3 3章章 寻址方式和指令系统寻址方式和指令系统4取标志位操作指令取标志位操作指令指令各式如下:指令各式如下:LAHFSAHF指令指令LAHF是取标志寄存器低是取标志寄存器低8位至位至AH,并不影响标志寄存器,并不影响标志寄存器的原来内容,的原来内容,AH只是复制了标志寄存器的低只是复制了标志寄存器的低8位的内容。位的内容。指令指令SAHF将将AH存至标志寄存器的低存至标志寄存器的低8位,即用位,即用AH的内容改的内容改写写FLAG中

37、的中的SF、ZF、AF、PF和和CF标志位,从而改变原来标志位,从而改变原来的标志位。的标志位。第第3 3章章 寻址方式和指令系统寻址方式和指令系统5标志位堆栈操作指令标志位堆栈操作指令指令各式如下:指令各式如下:PUSHFPOPF指令指令PUSHF把把16位标志寄存器进栈,相位标志寄存器进栈,相反,指令反,指令POPF将将16位标志寄存器出栈。位标志寄存器出栈。返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.3.5 3.3.5 地址传送指令地址传送指令1 1传送偏移地址指令传送偏移地址指令 LEALEA2 2传送偏移地址及数据段首址指令传送偏移地址及数据段首址指令LD

38、SLDS3 3传送偏移地址及附加数据段指令传送偏移地址及附加数据段指令LESLES第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1传送偏移地址指令传送偏移地址指令 LEALEA语句格式:语句格式: LEA OPDLEA OPD,OPSOPS功功能能:主主存存按按源源地地址址的的寻寻址址方方式式计计算算偏偏移移地地址址,将偏移地址送入指定寄存器。将偏移地址送入指定寄存器。【例【例2.152.15】主存偏移地址的获取。主存偏移地址的获取。MOV BXMOV BX,0100H0100H ;(;(BXBX)=0100H=0100HMOV SIMOV SI, 0210H 0210H;(;(SI

39、SI) =0210H =0210HLEA BXLEA BX,1234BX+SI1234BX+SI ; (BXBX)=1544H=1544H第第3 3章章 寻址方式和指令系统寻址方式和指令系统2 2传送偏移地址及数据段首址指令传送偏移地址及数据段首址指令LDSLDS语句格式:语句格式:LDS OPDLDS OPD,OPSOPS功功能能:将将主主存存中中指指定定字字单单元元数数据据送送入入指指定存储器,下一字单元数据送定存储器,下一字单元数据送DSDS寄存器。寄存器。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3 3传送偏移地址及附加数据段指令传送偏移地址及附加数据段指令LESLES语句格

40、式:语句格式:LES OPDLES OPD,OPSOPS功功能能:将将主主存存某某字字单单元元内内容容送送指指定定寄寄存存器器。即(即(OPSOPS)OPDOPD,(,(OPS+2OPS+2)ESES。返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.4算术运算类指令算术运算类指令3.4.1 加法指令加法指令3.4.2 减运算指令减运算指令3.4.3 乘运算指令乘运算指令3.4.4 除运算指令除运算指令3.4.5 符号扩展指令符号扩展指令 3.4.6 十进制调整指令十进制调整指令返回本章首页返回本章首页第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.4.1 加法指

41、令加法指令1加加1指令指令 INC2加指令加指令ADD3带进位加指令带进位加指令ADC第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1加加1 1指令指令 INCINC语句格式:语句格式:INC OPDINC OPD功功能能:将将目目的的操操作作数数加加1 1,结结果果送送目目的的地地址址。即(即(OPDOPD)+1OPD+1OPD。INCINC指指令令是是一一个个单单操操作作数数指指令令,操操作作数数可可以以是是寄存器或存储器操作数。寄存器或存储器操作数。如:如:INC BXINC BX,即(即(BXBX)+1BX+1BX。加加1 1指令可用于对计数器和地址指针进行调整。指令可用于对

42、计数器和地址指针进行调整。 第第3 3章章 寻址方式和指令系统寻址方式和指令系统2 2加指令加指令ADDADD语句格式:语句格式:ADD OPDADD OPD, OPS OPS功功能能:将将目目的的操操作作数数与与源源操操作作数数相相加加,结结果存入目的地址中,源地址的内容不改变。果存入目的地址中,源地址的内容不改变。即(即(OPDOPD)+ +(OPSOPS)OPDOPD。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3 3带进位加指令带进位加指令ADCADC语句格式:语句格式:ADC OPDADC OPD,OPSOPS功功能能:将将目目的的操操作作数数加加源源操操作作数数再再加加低低

43、位位进进位位,结果送目的地址。结果送目的地址。即(即(OPDOPD)+ +(OPSOPS)+CF OPD+CF OPD。【例【例3.83.8】无符号双字加法运算。无符号双字加法运算。MOVMOVAXAX,4652H4652H;(;(AXAX)=4652H=4652HADDADDAXAX,0F0F0H0F0F0H;(;(AXAX)=3742H=3742H,CF=1CF=1MOVMOVDXDX,0234H0234H;(;(DXDX)=0234H=0234HADCADCDXDX,0F0F0H0F0F0H;(;(DXDX)=0F325H=0F325H,CF=0CF=0返回本节返回本节第第3 3章章 寻

44、址方式和指令系统寻址方式和指令系统3.4.2 减运算指令减运算指令1减减1指令指令DEC2减指令减指令SUB3求补指令求补指令NEG4带借位减指令带借位减指令 SBB5比较指令比较指令 CMP第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1减减1 1指令指令DECDEC语句格式:语句格式:DEC OPD DEC OPD 功功能能:将将目目的的操操作作数数减减1 1,结结果果送送目目的的地地址址。即即(OPDOPD)1OPD1OPD。DECDEC指指令令是是一一个个单单操操作作数数指指令令,操操作作数数可可以以是是寄寄存器或存储器操作数。存器或存储器操作数。如:如:DEC CXDEC

45、CX。即(即(CXCX)1CX1CX。减减1 1指指令令DECDEC也也一一般般用用于于对对计计数数器器和和地地址址指指针针的的调调整。整。第第3 3章章 寻址方式和指令系统寻址方式和指令系统2 2减指令减指令SUBSUB语句格式:语句格式:SUB OPDSUB OPD,OPSOPS功功能能:目目的的操操作作数数减减源源操操作作数数,结结果果存存于于目的地址,源地址内容不变。目的地址,源地址内容不变。即(即(OPDOPD)()(OPSOPS)OPDOPD【例例3.9】减法运算。减法运算。MOV AX ,5678H ;(;(AX)=5678HSUB AX ,1234H ;(;(AX)=4444H

46、MOV BX ,3354H ;(;(BX)=3354HSUB BX ,3340H ;(;(BX)=0014H第第3 3章章 寻址方式和指令系统寻址方式和指令系统3 3求补指令求补指令NEGNEG语句格式:语句格式:NEG OPDNEG OPD功功能能:将将目目的的操操作作数数的的每每一一位位求求反反(包包括括符号位)后加符号位)后加1 1,结果送目的地址。,结果送目的地址。即(即(OPDOPD)+1OPD+1OPD。【例例】求补运算。求补运算。MOVMOVAXAX,0FF64H0FF64HNEGNEGALAL;(;(AXAX)=0FF9CH=0FF9CHSUBSUBALAL,9DH9DH;(;

47、(AXAX)=0FFFFH=0FFFFHNEGNEGAXAX;(;(AXAX)=0001H=0001HDECDECALAL;(;(AXAX)=0000H=0000HNEGNEGAXAX;(;(AXAX)=0000H=0000H第第3 3章章 寻址方式和指令系统寻址方式和指令系统4 4带借位减指令带借位减指令 SBBSBB语句格式:语句格式:SBB OPD SBB OPD ,OPSOPS功功能能:目目的的操操作作数数减减源源操操作作数数再再减减低低位借位位借位CFCF,结果送目的地址。结果送目的地址。即(即(OPDOPD)(OPSOPS)CF OPDCF OPD第第3 3章章 寻址方式和指令系统

48、寻址方式和指令系统5 5比较指令比较指令 CMPCMP语句格式:语句格式:CMP OPDCMP OPD,OPSOPS功功能能:目目的的操操作作数数减减源源操操作作数数,结结果果只只影影响响标标志志位位,不不送入目的地址。送入目的地址。即(即(OPDOPD)()(OPSOPS)。)。【例【例】比较比较ALAL的内容数值大小。的内容数值大小。CMPCMPALAL,5050;(;(ALAL)5050JBJBBELOWBELOW ;(;(ALAL)50=50=50,(,( AL AL)50AL50ALINCINCAHAH;(;(AHAH)+1AH+1AHBELOWBELOW:返回本节返回本节第第3 3

49、章章 寻址方式和指令系统寻址方式和指令系统3.4.3 乘运算指令乘运算指令1无符号数乘法指令无符号数乘法指令MUL2有符号乘指令有符号乘指令IMUL乘法指令的被乘数都是隐含操作数,乘数在乘法指令的被乘数都是隐含操作数,乘数在指令中必须显式地写出。指令中必须显式地写出。CPU会根据乘数是会根据乘数是8位、位、16位,还是位,还是32位操作数,来自动选用位操作数,来自动选用被乘数:被乘数:AL、AX或或EAX。第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1无符号数乘法指令无符号数乘法指令MULMUL语句格式:语句格式: MUL OPSMUL OPS功功能能: 若若是是字字节节数数据据相

50、相乘乘,(ALAL)与与OPSOPS相相乘乘得得到到字字数数据据存存入入AXAX中中;若若是是字字数数据据相相乘乘,则则(AXAX)与与OPSOPS相相乘乘得得到双字数据,高字存入到双字数据,高字存入DXDX、低字存入低字存入AXAX中。中。即字节乘法:(即字节乘法:(ALAL)* * (OPSOPS) AX AX,字乘法:(字乘法:(AXAX) * * (OPSOPS) DX DX,AX AX 【例【例2.252.25】无符号数】无符号数0 0A3HA3H与与1111H H相相乘。乘。MOVMOVALAL,0A3H0A3H;(;(ALAL)=0A3H=0A3HMOVMOVBLBL, 11H

51、11H;(;(BLBL)=11H=11HMULMULBLBL ;(;(AXAX)=0AD3H=0AD3H第第3 3章章 寻址方式和指令系统寻址方式和指令系统2 2有符号乘指令有符号乘指令IMULIMUL语句格式:语句格式:IMUL OPSIMUL OPS功功能能:字字节节乘乘法法:(ALAL)* *(OPSOPS)AXAX,字字乘乘法法:(AXAX)* *(OPSOPS)DXDX、AXAX。IMULIMUL指令除计算对象是带符号二进制数外,其他都与指令除计算对象是带符号二进制数外,其他都与MULMUL一样,但计算结果不同。一样,但计算结果不同。 【例【例3.113.11】有符号数有符号数0 0

52、B4HB4H与与1111H H相乘。相乘。MOVMOVALAL,0B4H0B4H;(;(ALAL)=B4H=B4HMOVMOVBLBL,11H11H;(;(BLBL)=11H=11HIMULIMULBLBL ;(;(AXAX)=0FAF4H=0FAF4H返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.4.4 除运算指令除运算指令1无符号除指令无符号除指令DIV2有符号有符号除指令除指令IDIV除法指令的被除数是隐含操作数,除数在除法指令的被除数是隐含操作数,除数在指令中必须显式地写出。指令中必须显式地写出。CPU会根据除数会根据除数是是8位、位、16位,或位,或32位,

53、来自动选用被除数位,来自动选用被除数AX、DX-AX,还是,还是EDX-EAX。第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1无符号除指令无符号除指令DIVDIV语句格式:语句格式:DIV OPSDIV OPS功能:字节除法:(功能:字节除法:(AXAX)/ /(OPSOPS) AL AL(商)、商)、AHAH(余数)余数)字除法:(字除法:(DXDX、AXAX)/ /(OPSOPS) AX AX(商)、商)、DXDX(余数)余数)【例【例3.123.12】写出实现无符号数写出实现无符号数04000400H / 0B4HH / 0B4H运算的程序段。运算的程序段。MOVMOVAXA

54、X,0400H0400H;(;(AXAX)=0400H=0400HMOVMOVBLBL,0B4H0B4H;(;(BLBL)=0B4H=0B4HDIVDIVBLBL ;商(商(ALAL)=05H=05H,余数(余数(AHAH)=7CH=7CH 第第3 3章章 寻址方式和指令系统寻址方式和指令系统2 2有符号有符号除指令除指令IDIVIDIV语句格式:语句格式:IDIV OPSIDIV OPS功功能能:字字节节除除法法:(AXAX)/ /(OPSOPS) ALAL(商商)、AHAH(余数)余数)字字除除法法:(DXDX,AXAX)/ /(OPSOPS) AX AX (商商)、DXDX(余余数)数)

55、除除法法指指令令DIVDIV和和IDIVIDIV虽虽然然对对标标志志的的影影响响未未定定义义,但但可可产产生溢出。生溢出。【例例3.133.13】写写出出实实现现有有符符号号数数04000400H H /0B4H/0B4H运运算算的的程程序序段。段。MOVMOVAXAX,0400H0400H;(;(AXAX)=0400H=0400HMOVMOVBXBX,0B4H0B4H;(;(BXBX)=0B4H=0B4HIDIVIDIVBXBX ;(;(ALAL)=0F3H=0F3H,(,(AHAH)=24H=24H返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.4.5 符号扩展指令

56、符号扩展指令 1字节转换成字指令字节转换成字指令CBW2将字转换成双字指令将字转换成双字指令CWD第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1字节转换成字指令字节转换成字指令CBWCBW语句格式:语句格式:CBWCBW功能:将功能:将ALAL中的符号位数据扩展至中的符号位数据扩展至AHAH。【例例3.143.14】将字节数据扩展成字数据。将字节数据扩展成字数据。MOVMOVALAL,0A5H0A5H;(;(ALAL)=0A5H=0A5HCBWCBW ;(;(AXAX)=0FFA5H=0FFA5HADDADDALAL,70H70H;(;(ALAL)=25H=25HCBWCBW ;(

57、;(AXAX)=0025H=0025H第第3 3章章 寻址方式和指令系统寻址方式和指令系统2 2将字转换成双字指令将字转换成双字指令CWDCWD语句格式:语句格式:CWDCWD功能:将功能:将AXAX中的符号位数据扩展至中的符号位数据扩展至DX DX 。【例例3.153.15】将字数据扩展成双字数据。将字数据扩展成双字数据。MOVMOVDXDX, 0 0;(;(DXDX)=0=0MOVMOVAXAX, 0FFABH 0FFABH;(;(AXAX)=0FFABH=0FFABHCWDCWD;(;(DXDX)=0FFFFH =0FFFFH (AXAX)=0FFABH=0FFABH返回本节返回本节第第

58、3 3章章 寻址方式和指令系统寻址方式和指令系统3.4.6 十进制调整指令十进制调整指令1压缩压缩BCD码调整指令码调整指令2非压缩非压缩BCD码调整指令码调整指令第第3 3章章 寻址方式和指令系统寻址方式和指令系统(1 1)加法的十进制调整指令)加法的十进制调整指令DAA DAA 语句格式:语句格式:DAADAA功功能能:如如果果ALAL寄寄存存器器中中低低4 4位位大大于于9 9或或辅辅助助进进位位(AFAF)=1=1,则则( ALAL) = =( ALAL) +6+6且且 ( AFAF) =1=1; 如如 果果 ( ALAL) =0A0H=0A0H或或(CFCF)=1=1,则则(ALAL

59、)= =(ALAL)+60H+60H且且(CFCF)=1=1。同同时时,SFSF、ZFZF、PFPF均有影响。均有影响。【例【例3.163.16】压缩压缩BCDBCD码的加法运算。码的加法运算。MOV ALMOV AL,68H68H;(ALAL)=68H=68H,表示压缩表示压缩BCDBCD码码6868MOV BLMOV BL,28H28H;(BLBL)=28H=28H,表示压缩表示压缩BCDBCD码码2828ADD ALADD AL,BLBL;二进制加法:二进制加法:(ALAL)=68H+28H=90H=68H+28H=90HDAADAA ;十进制调整:十进制调整:(ALAL)=96H=96

60、H ;实现压缩实现压缩BCDBCD码加法:码加法:68+28=9668+28=96第第3 3章章 寻址方式和指令系统寻址方式和指令系统(2 2)减法的十进制调整指令)减法的十进制调整指令DASDAS语句格式:语句格式:DASDAS功功 能能 : 如如 果果 ( AFAF) =1=1或或 ALAL寄寄 存存 器器 中中 低低 4 4位位 大大 于于 9 9, 则则( ALAL) = =( ALAL) 6 6且且 ( AFAF) =1=1; 如如 果果 ( ALAL) =0A0H=0A0H或或(CFCF)=1=1,则则(ALAL)= =(ALAL)60H60H且且(CFCF)=1=1。同同时时SF

61、SF、ZFZF、PFPF均受影响。均受影响。【例【例3.173.17】压缩压缩BCDBCD码的减法运算。码的减法运算。MOVMOVALAL,68H 68H ;(ALAL)=68H=68H,表示压缩表示压缩BCDBCD码码6868MOVMOVBLBL,28H 28H ;(BLBL)=28H=28H,表示压缩表示压缩BCDBCD码码2828SUBSUBALAL,BLBL ;二进制减法:二进制减法:(ALAL)=68H=68H28H=40H28H=40HDASDAS ;十进制调整:十进制调整:(ALAL)=40H=40H ;实现压缩实现压缩BCDBCD码减法:码减法:686828=4028=40第第

62、3 3章章 寻址方式和指令系统寻址方式和指令系统2 2非压缩非压缩BCDBCD码调整指令码调整指令(1)加法的非压缩)加法的非压缩BCD码调整指令码调整指令AAA(2)减)减法的非压缩法的非压缩BCD码调整指令码调整指令AAS(3)乘法的非压缩)乘法的非压缩BCD码调整指令码调整指令AAM(4)除法的非压缩除法的非压缩BCD码调整指令码调整指令AAD第第3 3章章 寻址方式和指令系统寻址方式和指令系统(1)加法的非压缩)加法的非压缩BCD码调整指令码调整指令AAA语句格式:语句格式:AAA 功能:如果功能:如果AL的低的低4位大于位大于9或(或(AF)=1,则:则:(AL)=(AL)+6(AH

63、)=(AH)+1(AF)=(CF)=1 且且AL高高4位清零。位清零。否则:(否则:(CF)=(AF)=0AL高高4位清零。位清零。第第3 3章章 寻址方式和指令系统寻址方式和指令系统(2 2)减法的非压缩)减法的非压缩BCDBCD码调整指令码调整指令AASAAS语句格式:语句格式:AAS AAS 功能:如果功能:如果ALAL的低的低4 4位大于位大于9 9或(或(AFAF)=1=1,则:则:(ALAL)= =(ALAL)6 6(AHAH)= =(AHAH)1 1(AFAF)= =(CFCF)=1=1ALAL高高4 4位清零。位清零。否则:(否则:(CFCF)= =(AFAF)=0=0 AL

64、AL高高4 4位清零。位清零。其他标志位其他标志位OFOF、PFPF、SFSF、ZFZF不确定。不确定。第第3 3章章 寻址方式和指令系统寻址方式和指令系统(3 3)乘法的非压缩)乘法的非压缩BCDBCD码调整指令码调整指令AAMAAM语句格式:语句格式:AAM AAM 功功能能:被被调调整整的的乘乘积积在在AXAX中中,对对ALAL按按1010取取模模,则:则: (ALAL)0AHAH0AHAH(商):商):ALAL(余数)余数)其中其中AHAH为商,为商,ALAL为余数,标志位为余数,标志位AFAF、CFCF、OFOF、PFPF、SFSF、ZFZF受影响。受影响。 第第3 3章章 寻址方式

65、和指令系统寻址方式和指令系统(4 4)除法的非压缩)除法的非压缩BCDBCD码调整指令码调整指令AADAAD语句格式:语句格式:AAD AAD 功能:除法运算前,先调整被除数功能:除法运算前,先调整被除数AXAX内容,使:内容,使: (ALAL)= =(ALAL)+ +(AHAH)*0AH*0AH (AHAH)=0=0即把非压缩型十进制数变成二进制数。即把非压缩型十进制数变成二进制数。返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.5位操作类指令位操作类指令3.5.1 逻辑运算指令逻辑运算指令3.5.2 移位指令移位指令 返回本章首页返回本章首页第第3 3章章 寻址方式

66、和指令系统寻址方式和指令系统3.5.1 逻辑运算指令逻辑运算指令1 1逻辑与指令逻辑与指令ANDAND2 2逻辑或指令逻辑或指令OROR3 3求反指令求反指令NOTNOT4 4按位异或指令按位异或指令XORXOR5 5测试指令测试指令TESTTEST第第3 3章章 寻址方式和指令系统寻址方式和指令系统1逻辑与指令逻辑与指令AND指令格式:指令格式:AND OPD, OPS 功能:把源操作数中的每位二进制与目的操作数功能:把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑中的相应二进制进行逻辑“与操作与操作”,操作结果,操作结果存入目标操作数中。该指令影响标志位存入目标操作数中。该指令影

67、响标志位PF、SF、ZF,并使,并使CF=0、OF=0。【例例3.17】将将AL中第中第3位和第位和第7位清零。位清零。MOV AL,0FFHAND AL,77H本指令主要用于修改操作数或置某些位为零。本指令主要用于修改操作数或置某些位为零。第第3 3章章 寻址方式和指令系统寻址方式和指令系统2逻辑或运算指令逻辑或运算指令OR指令格式:指令格式:OR OPD,OPS功能:把源操作数中的每位二进制与目的操作功能:把源操作数中的每位二进制与目的操作数中的相应二进制进行逻辑数中的相应二进制进行逻辑或操作或操作,操作结,操作结果存入目标操作数中。果存入目标操作数中。【例例3.18】将将AL寄存器中第寄

68、存器中第3位和第位和第7位置位置1。MOV AL,0 OR AL,88H 本指令可以进行字节或字的本指令可以进行字节或字的“或或”运算。运算。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3逻辑非运算指令逻辑非运算指令NOT指令格式:指令格式:NOT OPD功能:完成对操作数的按位求反运算,结果功能:完成对操作数的按位求反运算,结果送回给原操作数,本指令可以进行字节或字送回给原操作数,本指令可以进行字节或字的的“非非”运算,不影响标志位。运算,不影响标志位。【例例3.19】逻辑非运算。逻辑非运算。MOV AX,878AH ;(;(AX)=878AHNOT AX, ;(;(AX)=7875

69、H第第3 3章章 寻址方式和指令系统寻址方式和指令系统4逻辑异或运算指令逻辑异或运算指令XOR指令格式:指令格式:XOR OPD,OPS功能:实现两个操作数按位功能:实现两个操作数按位“异或异或”的运算,的运算,结果送至目的操作数中。它可以进行字节或结果送至目的操作数中。它可以进行字节或字的字的“异或异或”运算。即(运算。即(OPD)(OPS) OPD。【例例3.20】按位加运算。按位加运算。MOV AL,45H ;(;(AL)=45HXOR AL,31H ;(;(AL)=74H第第3 3章章 寻址方式和指令系统寻址方式和指令系统5测试指令测试指令TEST指令格式:指令格式:TEST OPRD

70、1,OPRD2 功能:对两个操作数进行按位的功能:对两个操作数进行按位的“与与”运算,不运算,不将结果送目的操作数,即该指令对两个操作数的将结果送目的操作数,即该指令对两个操作数的内容均不进行修改,仅是在逻辑内容均不进行修改,仅是在逻辑“与与”操作后,操作后,对标志位对标志位ZF重新置位。即(重新置位。即(OPD)(OPS)。)。 【例例3.21】测试测试AX中的第中的第12位是否为位是否为0,不为,不为0则转则转L。TEST AX,1000HJNE L返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.5.2 3.5.2 移位指令移位指令 移移位位指指令令包包括括算算术术

71、移移位位指指令令、逻逻辑辑移移位位指指令令和和循循环环移移位位指指令令,分分别别进进行行左左移移和和右右移移操操作作。这这些指令均有统一的语句格式:些指令均有统一的语句格式: 标标号号: 操操作作符符OPDOPD,1 1或或 标标号号: 操操作作符符OPDOPD,CLCL其其功功能能为为将将目目的的操操作作数数的的所所有有位位按按操操作作符符规规定定的的方方式式移移 动动 1 1位位或或 按按 寄寄 存存 器器CLCL规规 定定 的的次次 数数(02550255)移移动动,结结果果送送入入目目的的地地址址。目目的的操操作作数是数是8 8位(或位(或1616位)的寄存器数据或存储器数据。位)的寄

72、存器数据或存储器数据。第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1算术左移和逻辑左移指令算术左移和逻辑左移指令SALSAL(SHLSHL)语句格式:语句格式:SAL OPDSAL OPD,1 1 或或SHL OPDSHL OPD,1 1 SAL OPD SAL OPD,CLCL或或SHL OPDSHL OPD,CLCL功功能能:将将(OPDOPD)向向左左移移动动CLCL指指定定的的次次数数,最最低低位位补补入入相相应应的的,的的内内容容为为最最后后移移入入位位的的值。值。第第3 3章章 寻址方式和指令系统寻址方式和指令系统2 2算术右移指令算术右移指令SARSAR语句格式:语句

73、格式:SAR OPDSAR OPD,1 1或或SAR OPDSAR OPD,CLCLCFCF功能:将(功能:将(OPDOPD)向右移动向右移动CLCL指定的次数且最指定的次数且最高位保持不变;高位保持不变;CFCF的内容为最后移入位的值。的内容为最后移入位的值。第第3 3章章 寻址方式和指令系统寻址方式和指令系统【例【例3.223.22】算术右移运算。算术右移运算。MOVMOVBHBH,0F4H0F4H;(;(BHBH)=0F4H=0F4HMOVMOVCLCL, 2 2;(;(CLCL)=2=2SARSARBHBH, CL CL;(;(BHBH)=0FDH=0FDH,(,(CFCF)=0=0该

74、该例例语语句句“SARSAR BHBH,CL”CL”实实际际上上完完成成了了(BHBH)BHBH的的运运算算,所所以以,用用SARSAR指指令令可可以以实实现现对对有有符符号号数数除除2 2n n的的运运算算(n n为为移移位位次次数数)。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3 3逻辑右移指令逻辑右移指令SHRSHR语句格式:语句格式:SHR OPDSHR OPD,1 1或或SHR OPDSHR OPD,CLCL功功能能:将将(OPDOPD)向向右右移移动动CLCL规规定定的的次次数数,最最高高位位补补入入相相应应个个数数的的,CFCF的的内内容容为为最最后后移移入入位位的值。

75、的值。 第第3 3章章 寻址方式和指令系统寻址方式和指令系统4 4循环左移指令循环左移指令ROLROL语句格式:语句格式:ROL OPDROL OPD,1 1或或ROL LPDROL LPD,CLCL功功能能:将将目目的的操操作作数数的的最最高高位位与与最最低低位位连连成成一一个个环环,将将环环中中的的所所有有位位一一起起向向左左移移动动CLCL规规定定的的次数。次数。CFCF的内容为最后移入位的值。的内容为最后移入位的值。第第3 3章章 寻址方式和指令系统寻址方式和指令系统5 5循环右移指令循环右移指令RORROR语句格式:语句格式: ROR OPDROR OPD,1 1或或ROR OPDR

76、OR OPD,CLCL功功能能:将将目目的的操操作作数数的的最最高高位位与与最最低低位位连连成成一一个个环环,将将环环中中的的所所有有位位一一起起向向右右移移动动CLCL规规定定的的次数,次数,CFCF的内容为最后移入位的值。的内容为最后移入位的值。第第3 3章章 寻址方式和指令系统寻址方式和指令系统6 6带进位的循环左移指令带进位的循环左移指令RCLRCL语句格式:语句格式: RCL OPDRCL OPD, 1 1或或RCL OPDRCL OPD,CLCL功能:将目的操作数连同功能:将目的操作数连同CFCF标志一起向左循环标志一起向左循环移动移动CLCL规定的次数。规定的次数。 第第3 3章

77、章 寻址方式和指令系统寻址方式和指令系统7 7带进位的循环右移指令带进位的循环右移指令RCRRCR语句格式:语句格式:RCR OPDRCR OPD,1 1或或RCR ODRCR OD,CLCL功能:将目的操作数连同功能:将目的操作数连同CFCF标志一起向右循环标志一起向右循环移动所规定的次数。移动所规定的次数。 返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.6控制转移类指令控制转移类指令2.6.1 无条件转移指令无条件转移指令2.6.2 条件转移指令条件转移指令2.6.3 循环指令循环指令 2.6.4 子程序调用指令子程序调用指令2.6.5 中断指令中断指令返回本章首

78、页返回本章首页第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.6.1 无条件转移指令无条件转移指令表表2.4 无条件转移指令的语句格式及功能无条件转移指令的语句格式及功能返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.6.2 条件转移指令条件转移指令1 1简单条件转移指令简单条件转移指令2 2无符号数条件转移指令无符号数条件转移指令3. 3. 有符号数条件转移指令有符号数条件转移指令 它们都有通用的语句格式和功能。它们都有通用的语句格式和功能。语句格式:语句格式: 标号:标号: 操作符操作符 短标号短标号功功能能:如如果果条条件件满满足足,则则(IPIP)位位移

79、移量量IPIP。第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1简单条件转移指令简单条件转移指令第第3 3章章 寻址方式和指令系统寻址方式和指令系统第第3 3章章 寻址方式和指令系统寻址方式和指令系统2 2无符号数条件转移指令无符号数条件转移指令表表2.2无符号数条件转移指令无符号数条件转移指令第第3 3章章 寻址方式和指令系统寻址方式和指令系统【例例3.233.23】比比较较无无符符号号数数大大小小,将将较较大大的的数数存存放放AXAX寄存器。寄存器。CMPCMPAXAX, BX BX ;(;(AXAX)()(BXBX)JNBJNBNEXTNEXT ;若若AX=BXAX=BX,转移

80、到转移到NEXTNEXTXCHGXCHG AXAX,BX BX ;若若AXBXAX=BXAX=BX,转移到转移到NEXTNEXTXCHGXCHG AXAX,BXBX;若若AXBXAXBX,交换交换NEXTNEXT:返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.6.3 3.6.3 循环指令循环指令 1循环指令循环指令LOOP2相等相等/为零循环指令为零循环指令LOOPE3不相等不相等/不为零循环指令不为零循环指令LOOPNE 4CX为零转移指令为零转移指令JCXZ第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1循环指令循环指令LOOPLOOP语句格式:语句格式

81、: LOOP LOOP 短标号短标号功功能能:(CXCX)1 1 00,则则程程序序转转移移(循循环环);否则,顺序执行。;否则,顺序执行。说明:使用说明:使用LOOPLOOP指令可代替两条指令:指令可代替两条指令:DEC CXDEC CXJNE JNE 短标号短标号第第3 3章章 寻址方式和指令系统寻址方式和指令系统2 2相等相等/ /为零循环指令为零循环指令LOOPELOOPE语句格式:语句格式: LOOPE LOOPE 短标号短标号 LOOPZ LOOPZ 短标号短标号功功能能:(CXCX)1 1 00且且ZF=1ZF=1,则则程程序序转转移移(循环);否则,顺序执行。(循环);否则,顺

82、序执行。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3 3不相等不相等/ /不为零循环指令不为零循环指令LOOPNELOOPNE语句格式:语句格式: LOOPNE LOOPNE 短标号短标号 LOOPNZ LOOPNZ 短标号短标号功功能能:(CXCX)1010,则则程程序序转转移移(循循环);否则,顺序执行。环);否则,顺序执行。第第3 3章章 寻址方式和指令系统寻址方式和指令系统4 4CXCX为零转移指令为零转移指令JCXZJCXZ语句格式:语句格式: JCXZ JCXZ 短标号短标号功功能能:(CXCX)1010,则则程程序序转转移移(循环);否则,顺序执行。(循环);否则,顺序

83、执行。返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统3.7串操作类指令串操作类指令串操作指令串操作指令 :数据传送类指令每次只能传送一个数据,数据传送类指令每次只能传送一个数据,若要传送大批数据就需要重复编程,这若要传送大批数据就需要重复编程,这样就浪费了大量的时间和空间。为此样就浪费了大量的时间和空间。为此8086提供了一组处理主存中连续存放数提供了一组处理主存中连续存放数据串的指令据串的指令,这就是,这就是串操作指令。串操作指令。 返回本章首页返回本章首页第第3 3章章 寻址方式和指令系统寻址方式和指令系统利用字符串操作指令的实质是对一片连续存储单利用字符串操作指令的

84、实质是对一片连续存储单元进行处理,这片存储单元是由隐含指针元进行处理,这片存储单元是由隐含指针DS:SI或或ES:DI来指定的。字符串操作指令可对内存单来指定的。字符串操作指令可对内存单元按字节或字进行处理,并能根据操作对象的字元按字节或字进行处理,并能根据操作对象的字节数使变址寄存器节数使变址寄存器SI(和和DI)增减增减1或或2。具体规定。具体规定如下:如下:1)当当DF=0时,变址寄存器时,变址寄存器SI(和和DI)增加增加1或或2;2)当当DF=1时,变址寄存器时,变址寄存器SI(和和DI)减少减少1或或2;注:在串操作指令中,目的串的段基址在注:在串操作指令中,目的串的段基址在ES寄

85、寄存器中。存器中。DF的设定需要两条指令:的设定需要两条指令:1)CLD指令的功能:指令的功能:DF=02)STD指令的功能:指令的功能:DF=1第第3 3章章 寻址方式和指令系统寻址方式和指令系统1 1传送指令传送指令MOVSMOVS语句格式:语句格式: MOVSBMOVSB字节串传送字节串传送 MOVSWMOVSW字串传送字串传送功功能能:将将以以SISI为为指指针针的的源源串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据传传送送至至以以DIDI为为指指针针的的目目的的地地址址中中去去,并并自自动修改指针,使之指向下一个字节(或字)存储单元。动修改指针,使之指向下一

86、个字节(或字)存储单元。即:即:(DSDS:SISI)ESES:DIDI。 当当DF=0DF=0时,(时,(SISI)和(和(DIDI)增量。增量。当当DF=1DF=1时,(时,(SISI)和(和(DIDI)减量。减量。第第3 3章章 寻址方式和指令系统寻址方式和指令系统2 2串比较指令串比较指令CMPS CMPS 语句格式:语句格式: CMPSBCMPSB字节串比较字节串比较 CMPSWCMPSW字串比较字串比较功功能能:将将SISI所所指指的的源源串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据与与DIDI所所指指的的目目的的串串中中的的一一个个字字节节(或或字字)

87、存存储储单单元元中中的的数数据据相相减减,并并根根据据相相减减的的结结果果设设置置标标志志,但但结结果并不保存。果并不保存。即:即:( SISI)()(DIDI)。)。 修改串指针,使之指向串中的下一个元素。修改串指针,使之指向串中的下一个元素。当当DF=0DF=0时时,(SISI)和和(DIDI)增增量量。当当DF=1DF=1时时,(SISI)和和(DIDI)减量。减量。第第3 3章章 寻址方式和指令系统寻址方式和指令系统3 3串搜索指令串搜索指令SCASSCAS语句格式:语句格式: SCASBSCASB字节串搜索字节串搜索 SCASWSCASW字串搜索字串搜索功功能能:ALAL(字字节节)

88、或或AXAX(字字)中中的的内内容容与与DIDI所所指指的的目目的的串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据相相减减,根根据据相减结果设置标志位,结果不保存,相减结果设置标志位,结果不保存,即即: 字字节节操操作作:(ALAL)(DIDI),字字操操作作:(AXAX)()(DIDI)。)。 修改指针使之指向串中的下一个元素。修改指针使之指向串中的下一个元素。当当DF=0DF=0时,(时,(DIDI)增量。当增量。当DF=1DF=1时,(时,(DIDI)减量。减量。第第3 3章章 寻址方式和指令系统寻址方式和指令系统4 4从源串中取数指令从源串中取数指令LODSL

89、ODS语句格式:语句格式: LODSBLODSB从字节串中取数从字节串中取数 LODSWLODSW从字串中取数从字串中取数功功能能:将将SISI所所指指的的源源串串中中的的一一个个字字节节(或或字字)存存储储单单元元中的数据取出来送入中的数据取出来送入ALAL(或或AXAX)中。中。即即 : 字字 节节 操操 作作 : ( SISI) ALAL, 字字 操操 作作 :( SISI)AXAX。 修改指针修改指针SISI,使它指向串中的下一个元素。使它指向串中的下一个元素。当当DF=0DF=0时,(时,(SISI)增量。当增量。当DF=1DF=1时,(时,(SISI)减量。减量。 第第3 3章章

90、寻址方式和指令系统寻址方式和指令系统5 5往目的串中存数指令往目的串中存数指令STOSSTOS语句格式:语句格式: STOSBSTOSB往字节串中存数往字节串中存数(2 2)STOSWSTOSW往字串中存数往字串中存数功功能能:将将ALAL或或AXAX中中的的数数据据送送入入DIDI所所指指的的目目的的串串中中的的字字节节(或字)存储单元中。(或字)存储单元中。即即 : 字字 节节 操操 作作 : ( ALAL) DIDI, 字字 操操 作作 :(AXAX)DIDI。 修改指针修改指针DIDI,使之指向串中的下一个元素。使之指向串中的下一个元素。当当DF=0DF=0时,(时,(DIDI)增量)

91、。当增量)。当DF=1DF=1时,(时,(DIDI)减量。减量。第第3 3章章 寻址方式和指令系统寻址方式和指令系统6 6重复前缀指令重复前缀指令REP REPZ REPNZREP REPZ REPNZ(1 1)REP REP REPREP前缀用在前缀用在MOVSMOVS、STOS STOS 、LODSLODS指令前。指令前。功功能能:每每执执行行一一次次串串指指令令(CXCX)1 1,直直到到(CXCX)=0=0,重重复复执执行行结结束。束。(2 2)REPZ REPZ 该指令一般用在该指令一般用在CMPCMP、SCASSCAS指令前。指令前。功功能能:每每执执行行一一次次串串指指令令(CX

92、CX)1 1,并并判判断断ZFZF标标志志是是否否为为0 0,只只要(要(CXCX)=0=0或或ZF=0ZF=0,则重复执行结束。则重复执行结束。(3 3)REPNZ REPNZ 该指令一般用在该指令一般用在CMPSCMPS、SCAS SCAS 指令前。指令前。功功能能:每每执执行行一一次次串串指指令令(CXCX)1 1,并并判判断断ZFZF标标志志是是否否为为0 0,只只要(要(CXCX)=0=0或或ZF=1ZF=1,则重复执行结束。则重复执行结束。第第3 3章章 寻址方式和指令系统寻址方式和指令系统图图3.33.3流程图总结了串操作的过程。流程图总结了串操作的过程。图图3.3串操作流程图串

93、操作流程图第第3 3章章 寻址方式和指令系统寻址方式和指令系统【例例3.23】串传送类指令串传送类指令假设在数据段中有一个长度为假设在数据段中有一个长度为17的字符串的字符串STR1(字节),要求把它附加段的字符串变(字节),要求把它附加段的字符串变量量STR2中,则实现的操作的部分程序段为:中,则实现的操作的部分程序段为: LEA SI,STR1 LEA DI,STR2 MOV CX,17 CLD REP MOVSB ;或者;或者 REP MOVS ES:STR2,STR1 注:在串传送指令中,注:在串传送指令中,MOVSB和和MOVSW的的地址是隐藏的,默认从数据段传串给附加段,地址是隐藏

94、的,默认从数据段传串给附加段,而而MOVS指令要指明源串和目的串,当定义源指令要指明源串和目的串,当定义源串指明了传送类型时,直接传,如上例;如果串指明了传送类型时,直接传,如上例;如果没有指明,需要在没有指明,需要在 返回本章首页返回本章首页第第3 3章章 寻址方式和指令系统寻址方式和指令系统【例例3.24】串比较指令串比较指令比较比较STR1和和STR2两个字符串,是不是完全不相等,它们的长度为两个字符串,是不是完全不相等,它们的长度为20,如果是完全不相等,输出,如果是完全不相等,输出“Y”,如果不是,则输出第一个相等,如果不是,则输出第一个相等的字符。的字符。假设假设STR1被存储在被

95、存储在DS段,段,STR2被存储在被存储在ES段。则实现的操作的段。则实现的操作的部分程序段为:部分程序段为:LEA SI,STR1LEA DI,STR2MOV CX,20CLDREPNE CMPSBJCXZ T1MOV DL,SIMOV AH,02H ;在屏幕上显示一个字符的;在屏幕上显示一个字符的DOS调用功能号调用功能号INT 21HJMP EXITT1:MOV DL,YMOV AH,02HINT 21HEXIT:返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统【例【例3.26】取出串指令取出串指令从内存的从内存的BUF单元中存放着单元中存放着26个字母大写的个字母大

96、写的ASCII码,码,要将其转换成小写并显示出来。则实现的操作的部要将其转换成小写并显示出来。则实现的操作的部分程序段为:分程序段为:LEA SI,BUFMOV CX,26CLDT1:LODSB ;用串指令装入;用串指令装入ADD AL,20H ;转换成小写;转换成小写MOV DL,ALINT 21HDEC CXJNZ T1 返回本节返回本节第第3 3章章 寻址方式和指令系统寻址方式和指令系统【例例3.27】存入串指令存入串指令将内存将内存BUFF起的连续起的连续20个存储个存储单元存入字母单元存入字母A。则实现的则实现的操作的部分程序段为:操作的部分程序段为:LEADI,BUFFMOVAL,41HMOVCX,20CLDREPSTOSB第第3 3章章 寻址方式和指令系统寻址方式和指令系统THANK YOU VERY MUCH本章到此结束,本章到此结束,谢谢您的光临!谢谢您的光临!返回本章首页返回本章首页结结束束

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号