微机原理第三章最终修改_第1页
微机原理第三章最终修改_第2页
微机原理第三章最终修改_第3页
微机原理第三章最终修改_第4页
微机原理第三章最终修改_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

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

文档简介

1、微机原理第3章第第3章章 8086的指令系统的指令系统3.1 8086指令的特点指令的特点3.2 8086的寻址方式的寻址方式3.3 8086的指令格式及数据类型的指令格式及数据类型3.4 8086的指令集的指令集3.1 8086指令的特点指令的特点 1. 指令:指令:让计算机完成某种操作的命令称为指令。让计算机完成某种操作的命令称为指令。内容包括完成什么操作,操作数的来源,结果的存内容包括完成什么操作,操作数的来源,结果的存放,以及下一条指令的位置等等。放,以及下一条指令的位置等等。 2. 指令系统:指令系统:指令的集合即为指令系统。指令的集合即为指令系统。 3. 指令的一般格式:指令的一般

2、格式: 标号:标号: 操作码操作码 操作数操作数 ,操作数,操作数 ;注释注释 计算机中的指令由标号、操作码字段和操作数计算机中的指令由标号、操作码字段和操作数字段组成。字段组成。 :任选项。任选项。n标号字段:标号字段:是一个任选字段,性质为符号偏移量,一般用是一个任选字段,性质为符号偏移量,一般用于标记跳转指令的目的地址。在汇编过程中标号会被替换于标记跳转指令的目的地址。在汇编过程中标号会被替换为一个为一个16位的数值偏移量。标号必须位于语句开头,结尾位的数值偏移量。标号必须位于语句开头,结尾必须使用冒号。必须使用冒号。n操作码字段:操作码字段:也称为指令助记符,指令助记符是必不可少也称为

3、指令助记符,指令助记符是必不可少的,指计算机所要执行的操作,或称为指出操作类型,是的,指计算机所要执行的操作,或称为指出操作类型,是一种助记符。一种助记符。n操作数字段:操作数字段:指在指令执行操作的过程中所需要的操作数。指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。关操作数的信息。n注释字段:注释字段:是一个任选字段,用于说明程序片段或指令的是一个任选字段,用于说明程序片段或指令的功能

4、,汇编过程中不处理这样的字段,它只是用于提高源功能,汇编过程中不处理这样的字段,它只是用于提高源程序的可读性注释必须使用分号作为开始。注释是对该程序的可读性注释必须使用分号作为开始。注释是对该条或该段程序的解释,可选项。条或该段程序的解释,可选项。 不同的计算机有不同的指令系统,汇编语言的指令语句不同的计算机有不同的指令系统,汇编语言的指令语句都与机器指令一一对应,汇编语言通过汇编程序将其翻译成都与机器指令一一对应,汇编语言通过汇编程序将其翻译成机器指令代码(目标代码),让机器指令代码(目标代码),让CPUCPU执行某种操作。执行某种操作。8086指令的特点指令的特点n灵活的指令格式灵活的指令

5、格式n指令格式的一对多形式指令格式的一对多形式n较强的运算指令较强的运算指令n指令有较强的寻址能力指令有较强的寻址能力n指令有处理多种数据的能力指令有处理多种数据的能力n有效地址EA(P48 图3.1)n数据传输指令nMOV 目的操作数,源操作数1 立即寻址立即寻址定义:定义:操作数直接由指令提供的寻址方式称为操作数直接由指令提供的寻址方式称为立即寻址方式。立即寻址方式。在立即寻址方式中所提供的操作数直接包含在指令中。它紧跟在立即寻址方式中所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。如图所示。在操作码的后面,与操作码一起放在代码段区域中。如图所示。例如:

6、例如: MOV AX, 3000H立即数:立即数:直接由指令提供的直接由指令提供的 具体操作数称为立即数。具体操作数称为立即数。特点:特点:(1 1)立即数可以是)立即数可以是8 8位的,也可以是位的,也可以是1616位的。若是位的。若是1616位的,则存位的,则存储时低位在前,高位在后。只能是整数,不能是小数、变量或其储时低位在前,高位在后。只能是整数,不能是小数、变量或其它数据类型。它数据类型。(2 2)立即数只能作为源操作数,立即寻址主要用来给寄存器或)立即数只能作为源操作数,立即寻址主要用来给寄存器或存储器赋初值。存储器赋初值。 (3 3)速度快(操作数直接由指令中获得,不需要运行总线

7、周期)速度快(操作数直接由指令中获得,不需要运行总线周期)(4 4)立即数作为指令操作码的一部分与操作码一起放在代码段)立即数作为指令操作码的一部分与操作码一起放在代码段区域中。区域中。(5 5)指令的长度较长,灵活性较差。)指令的长度较长,灵活性较差。【例【例3.13.1】MOV AXMOV AX, 1010执行后(执行后(AXAX)= =?其中:源操作数为立即寻址方式,立即数为其中:源操作数为立即寻址方式,立即数为1010,存放在指令的下,存放在指令的下一单元。一单元。 图形表示:图形表示:执行:执行:10AX10AX执行后:(执行后:(AXAX)=000AH=000AH2 直接寻址直接寻

8、址定义:定义:操作数采用直接给出被访问内存单元的逻辑地址的方式时,操作数采用直接给出被访问内存单元的逻辑地址的方式时,这种寻址方式称为这种寻址方式称为直接寻址方式直接寻址方式。 在直接寻址方式中操作数地址的在直接寻址方式中操作数地址的1616位偏移量直接包含在指令位偏移量直接包含在指令中,它与操作码中,它与操作码一一起存放在代码段区域,操作数一般在数据段起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄区域中,它的地址为数据段寄存器存器DSDS加上这加上这1616位地址偏移量。位地址偏移量。如图所示。如图所示。例如:例如:MOV AXMOV AX,DSDS:2000H2000H;

9、特点:特点:(1 1)如果指令中没有指明操作数存放在哪一段,则系统默认为)如果指令中没有指明操作数存放在哪一段,则系统默认为数据段数据段DSDS。如上例可写成:。如上例可写成: MOV AXMOV AX,2000H2000H(2 2)操作数的有效地址与操作码)操作数的有效地址与操作码一一起存放在代码段区域,操作起存放在代码段区域,操作数一般在数据段区域中。数一般在数据段区域中。(3 3)直接寻址是对存储器进行访问时可采用的最简单的形式。)直接寻址是对存储器进行访问时可采用的最简单的形式。这种寻址方法是以数据段的地址为基础,可在多达这种寻址方法是以数据段的地址为基础,可在多达64KB64KB的范

10、围内的范围内寻找操作数。寻找操作数。(4 4)操作数的实际地址为数据段寄存器)操作数的实际地址为数据段寄存器DSDS左移左移4 4位加上操作数的位加上操作数的有效地址(有效地址( 1616位地址偏移量)。位地址偏移量)。(5 5)段超越前缀:段超越前缀:如果要对除如果要对除DSDS以外的其他段寄存器(代码段、以外的其他段寄存器(代码段、堆栈段和附加段)所指出的存储区进行直接寻址,应在指令中指堆栈段和附加段)所指出的存储区进行直接寻址,应在指令中指定段寄存器定段寄存器-段超越前缀。如:段超越前缀。如:MOV AXMOV AX,2000H 2000H ;数据段(可省略;数据段(可省略DS DS )

11、MOV BXMOV BX,ESES:3000H 3000H ;操作数在附加段;操作数在附加段ES ES (不能省略(不能省略ES ES )(6 6)直接寻址的地址如果是数值地址,则必须用)直接寻址的地址如果是数值地址,则必须用“ ” ”括起来,括起来,以区别立即数。允许用以区别立即数。允许用符号地址(即程序中的标号)符号地址(即程序中的标号)代替数值地代替数值地址。址。【例【例3.23.2】寄存器和存储器内容为:(寄存器和存储器内容为:(AXAX)=1212H=1212H,BUFBUF为数据为数据段定义的变量,其偏移地址是段定义的变量,其偏移地址是2000H2000H,(,(DSDS)=300

12、0H=3000H,(,(32000H32000H)=4545H=4545H。执行指令:执行指令:MOV AX MOV AX ,BUFBUF执行后:(执行后:(AXAX)=?=?图形表示:图形表示:执行:执行:(32000H32000H)(AXAX)执行后:执行后:(AXAX)=4545H=4545H3 寄存器寻址寄存器寻址定义:定义:操作数直接存放在操作数直接存放在CPUCPU的内部寄存器中(如:寄存器的内部寄存器中(如:寄存器AXAX、BXBX、CXCX、DXDX等)的寻址方式称为寄存器寻址方式。等)的寻址方式称为寄存器寻址方式。例如:例如:MOV DSMOV DS,AXAXMOV ALMO

13、V AL,BHBH特点:特点:(1 1)操作数放在)操作数放在CPUCPU的通用寄存器中。的通用寄存器中。 1616位:位:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、SPSP、IPIP 8 8位位 :AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH、DLDL 通常放在通常放在AXAX、 AHAH、ALAL中,因为中,因为AXAX是累加器,结果一般放在是累加器,结果一般放在AXAX中,这样指令会更短些。中,这样指令会更短些。(2 2)采用寄存器寻址时,操作就在)采用寄存器寻址时,操作就在CPUCPU内部进行,不需要使用总内部进行,不需要使用总线周期,速度快。

14、线周期,速度快。(3 3)一条指令中,既可以对源操作数采用寄存器寻址,也可以对)一条指令中,既可以对源操作数采用寄存器寻址,也可以对目的操作数采用寄存器寻址,也可二者均采用寄存器寻址。目的操作数采用寄存器寻址,也可二者均采用寄存器寻址。【例【例3.33.3】下列程序执行后,(下列程序执行后,(AXAX)= =?,(?,(BXBX)= =? MOV AXMOV AX,1234H1234H MOV BX MOV BX,5678H5678H ADD AX ADD AX,BXBX 该程序中该程序中MOVMOV指令为数据传送指令操作符,指令为数据传送指令操作符,ADDADD指令为加法指指令为加法指令操作

15、符,三条指令皆为双操作数指令。第一、二条指令令操作符,三条指令皆为双操作数指令。第一、二条指令AXAX、BXBX皆为目的操作数地址,为立即数寻址方式。第三条指令中,皆为目的操作数地址,为立即数寻址方式。第三条指令中,AXAX为为目的操作数地址,目的操作数地址,BXBX为源操作数地址。源地址和目的地址皆为寄为源操作数地址。源地址和目的地址皆为寄存器寻址方式。存器寻址方式。4 寄存器间接寻址寄存器间接寻址 操作数是在存储器中,但是,操作数的有效地址操作数是在存储器中,但是,操作数的有效地址EAEA(偏移量)(偏移量)在以下四个寄存器在以下四个寄存器SISI、DIDI、BPBP、BXBX之一中。可以

16、分成两种情况:之一中。可以分成两种情况:(1 1)以)以SISI、DIDI、BXBX间接寻址,则通常操作数在现行数据段区域中,间接寻址,则通常操作数在现行数据段区域中,即数据段寄存器(即数据段寄存器(DSDS)1616加上加上SISI、DIDI、BXBX中的中的1616位偏移量,为操位偏移量,为操作数的地址,作数的地址, 例如:例如:MOV AXMOV AX, SISI ,操作数地址是:,操作数地址是:(DSDS) 16 + 16 +(SISI)(2 2)以寄存器)以寄存器BPBP间接寻址,则操作数在堆栈段区域中。即堆栈段间接寻址,则操作数在堆栈段区域中。即堆栈段寄存器(寄存器(SSSS) 1

17、6 16与与BPBP的内容相加作为操作数的地址,的内容相加作为操作数的地址, 例如:例如:MOV AXMOV AX,BPBP , 操作数地址是:操作数地址是:(SSSS) 16 + 16 +(BPBP) 若在指令中规定是段超越的,则若在指令中规定是段超越的,则BPBP的内容也可以与其它的段寄的内容也可以与其它的段寄存器相加,形成操作数地址。存器相加,形成操作数地址。 例如:例如:MOV AXMOV AX,DSDS:BPBP :操作数地址是:操作数地址是:(DSDS) 16 + 16 +(BPBP)特点:特点:(1 1)指令中的基址寄存器与段寄存器的配对关系为:)指令中的基址寄存器与段寄存器的配

18、对关系为: BXBX、SISI、DI-DSDI-DS, BP-SSBP-SS(2 2)如果要对其他段寄存器所指出的区域进行寻址,则在指令中)如果要对其他段寄存器所指出的区域进行寻址,则在指令中应指出指定超越段前缀。应指出指定超越段前缀。(3 3)寄存器间接寻址方式适用于表格处理。执行完一条指令后,)寄存器间接寻址方式适用于表格处理。执行完一条指令后,只需修改寄存器的内容(只需修改寄存器的内容(+1+1、+2+2、)就可取出表格中的相应项。)就可取出表格中的相应项。(4 4)间接寻址址的寄存器用)间接寻址址的寄存器用“ ”括起来,以区别寄存器寻址。括起来,以区别寄存器寻址。AX AH AL 数据

19、段 物理地址 A0H 21000H 50H 20001H 56H 20002H 【例【例3.43.4】指令指令 MOV AXMOV AX,BXBX若(若(DSDS)2000H2000H,(,(BXBX)1000H1000H,物理地址物理地址20000H20000H1000H1000H21000H21000H。指令执行前,(指令执行前,(AXAX)2030H2030H,(,(21000H21000H)0A0H0A0H,(,(21001H21001H)50H50H,指令执行后,(指令执行后,(AXAX)50A0H50A0H,(,(21000H21000H)0A0H0A0H,(,(21001H210

20、01H)50H50H。指令执行情况如下:指令执行情况如下:115 基址基址/变址寻址(寄存器相对寻址)变址寻址(寄存器相对寻址) 寄存器相对寻址方式是在指令中给定一个基址寄存器(或变址寄存器相对寻址方式是在指令中给定一个基址寄存器(或变址寄存器)名和一个寄存器)名和一个8 8位或位或1616位的相对偏移量,两者之和作为操作数位的相对偏移量,两者之和作为操作数的有效地址的有效地址EAEA。对。对BXBX、SISI、DIDI这三个间址寄存器,指示的是数据段这三个间址寄存器,指示的是数据段中的数据,而用中的数据,而用BPBP作间址寄存器,则指示的是堆栈段中的数据。作间址寄存器,则指示的是堆栈段中的数

21、据。 汇编格式:汇编格式:XRXR(X X表示位移量,是表示位移量,是8 8位或位或1616位二进制补码表示的有位二进制补码表示的有符号数,符号数, R R表示寄存器)。表示寄存器)。功能:功能:操作数存放在存储器,寄存器操作数存放在存储器,寄存器R R的内容加位移量的内容加位移量X X为操作数的为操作数的偏移地址偏移地址EAEA。有效地址有效地址EA计算方法如右:计算方法如右:特点:特点:(1 1)SISI、DIDI、BXBX默认的段寄存器为默认的段寄存器为DSDS,BPBP默认的段寄存器为默认的段寄存器为SSSS。(2 2)可以使用段寄存器超越前缀来寻址其他段。)可以使用段寄存器超越前缀来

22、寻址其他段。(3 3)寄存器相对寻址方式适用于表格处理。表首的地址可设置)寄存器相对寻址方式适用于表格处理。表首的地址可设置为偏移量指针,利用修改基址或变址寄存器的内容来获得表格中为偏移量指针,利用修改基址或变址寄存器的内容来获得表格中的内容。的内容。【例【例3.53.5】设执行前:设执行前: (AXAX)=0040H=0040H,(,(BXBX)=0030H=0030H,(,(DSDS)=2000H=2000H,(,(20036H20036H)=0050H =0050H 执行指令:执行指令:ADD 6BXADD 6BX,AXAX执行后:(执行后:(AXAX)=?=?,(,(BXBX)=?=?

23、,(,(DSDS)=?=?,(,(20036H20036H)=?=?图形表示如下:图形表示如下:执行前:执行前: (AXAX)=0040H=0040H,(,(BXBX)=0030H=0030H,(,(DSDS)=2000H=2000H,(20036H20036H)=0050H =0050H 执行指令:执行指令:ADD 6BXADD 6BX,AXAX执行:(执行:(20036H20036H)+ +(AXAX) (20036H20036H)执行后:(执行后:(AXAX)=0040H=0040H, (BXBX)=0030H=0030H, (DSDS)=2000H=2000H, (20036H2003

24、6H)=0090H=0090H。图形表示如右:图形表示如右:6 基址基址+变址寻址变址寻址 把把BXBX和和BPBP看成是基址寄存器,把看成是基址寄存器,把SISI、DIDI看成是变址寄存器,看成是变址寄存器,把一个基址寄存器(把一个基址寄存器(BXBX或或BPBP)的内容加上一个变址寄存器()的内容加上一个变址寄存器(SISI或或DIDI)的内容,再加上指令中指定的)的内容,再加上指令中指定的8 8位或位或1616位偏移量(当然要以位偏移量(当然要以一个段寄存器作为地址基准)作为操作数的偏移地址,如图所示。一个段寄存器作为地址基准)作为操作数的偏移地址,如图所示。 相对基址变址寻址的表示形式

25、:相对基址变址寻址的表示形式: 6BXSI 6BXSI 或或BX+6SI BX+6SI 或或BX+6+SI BX+6+SI 其中:方括号其中:方括号 有相加的含义有相加的含义【例【例3.63.6】 MOV ALMOV AL,BXBXSISI(或(或MOV ALMOV AL,BXSIBXSI)若指令执行前,(若指令执行前,(DSDS)1000H1000H,(,(BXBX)0010H0010H, (SISI)0002H0002H,(,(10012H10012H)45H45H则则 有效地址有效地址EAEA(BXBX)()(SISI)0012H0012H, 实际地址实际地址PAPA(DSDS)10H1

26、0HEAEA10012H10012H指令执行后(指令执行后(ALAL)45H45H。 操作数在存储器中,其有效地址操作数在存储器中,其有效地址EAEA由(基址寄存器)(变址由(基址寄存器)(变址寄存器)相对偏移量形成。寄存器)相对偏移量形成。特点:特点:同基址变址寻址方式,比基址变址寻址方式更灵活。同基址变址寻址方式,比基址变址寻址方式更灵活。 表表3-1 段寄存器使用的基本约定段寄存器使用的基本约定 访问存储器类型访问存储器类型默认段寄存器默认段寄存器可指定段寄存器可指定段寄存器段内偏移地址来源段内偏移地址来源取指令码取指令码CSCS无无IPIP堆栈操作堆栈操作SSSS无无SPSP串操作源地

27、址串操作源地址 DSDSCSCS、ESES、SSSSSISI串操作目的地址串操作目的地址ESES无无 DIDIBPBP用作基址寄存器用作基址寄存器SSSSCSCS、DSDS、ESES根据寻址方式求得根据寻址方式求得有效地址有效地址一般数据存取一般数据存取 DSDSCSCS、ESES、SSSS根据寻址方式求得根据寻址方式求得有效地址有效地址 8 串寻址串寻址(80868086串指令中使用)串指令中使用) 源操作数的逻辑地址为源操作数的逻辑地址为DS:SIDS:SI; 目的操作数的逻辑地址为目的操作数的逻辑地址为ES:DIES:DI 9 I/O端口寻址端口寻址(当(当I/OI/O端口按独立的端口按

28、独立的I/OI/O空间编址时)空间编址时)端口(端口(PortPort)n对程序员来说,对程序员来说,I/O接口电路由接口寄存器组成,为了区接口电路由接口寄存器组成,为了区别它们,各个寄存器进行了编号,形成别它们,各个寄存器进行了编号,形成I/O地址。地址。n端口就是指端口就是指I/O地址,是微机系统对地址,是微机系统对I/O接口电路中与程接口电路中与程序设计有关的寄存器的编号序设计有关的寄存器的编号n系统实际上就是通过这些端口与外设进行通讯的系统实际上就是通过这些端口与外设进行通讯的n通常采用十六进制数来表达端口通常采用十六进制数来表达端口nIntel 8086支持支持64K个个8位端口位端

29、口n其其I/O地址可以表示为:地址可以表示为:0000H FFFFH 当操作数在外部设备时,使用当操作数在外部设备时,使用I/O指令。此时有两种不同的指令。此时有两种不同的寻址方式访问寻址方式访问I/O端口:端口:直接端口寻址:指令直接提供8位端口地址。 间接端口寻址方式:由DX寄存器给出16位端口地址。例:IN AL,63H;AL (63H) OUT 63H,AL 从I/O地址号为63H的端口中读取数据送到AL中例: MOV DX,3FCH IN AL,DX;(AL) (DX) OUT DX,AL;将AL中的内容输出到地址由DX寄存器内容所指定的端口中多种表达形式n用符号表示位移量在寄存器相

30、对寻址或相对基址变址寻址方式中,位移量可用符号表示:MOV AX,SI+COUNT;COUNT是事先定义的变量或常量(就是数值)MOV AX,BX+SI+WNUM;WNUM也是变量或常量n同一寻址方式可以写成不同的形式:同一寻址方式可以写成不同的形式:nMOV AX,BXSI;等同于;等同于 MOV AX,BX+SInMOV AX,COUNTSI;等同于;等同于MOVAX,SI+COUNTnMOV AX,WNUMBXSI;等同于;等同于MOVAX,WNUMBX+SI; 等同于等同于 MOV AX,BX+SI+WNUMTIPS课堂练习课堂练习(1)MOV AX, SI(2)MOV DI, 100

31、(3)MOV BX,AL(4)MOV BXSI,CX(5)ADD DX, 106HSI(6)AND DS:BP,AX(7)OR AX,DX1 1 分别指出下列指令中的源操作数和目的操作数的寻址方式。分别指出下列指令中的源操作数和目的操作数的寻址方式。 课堂练习课堂练习(1)MOV AX, SI(2)MOV DI, 100(3)MOV BX,AL(4)MOV BXSI,CX(5)ADD DX, 106HSI(6)AND DS:BP,AX(7)OR AX,DX1 1 分别指出下列指令中的源操作数和目的操作数的寻址方式。分别指出下列指令中的源操作数和目的操作数的寻址方式。目的操作数源操作数(1)寄存

32、器寄存器间接(2)寄存器立即(3)寄存器间接寄存器(4)基址变址寄存器(5)寄存器变址(6)带段超越的寄存器间接寄存器(7)寄存器寄存器指令的寻址方式小结指令的寻址方式小结(1)寻址方式不需总线周期,执行速度快。(2)只能作为源数据寻址。(1)两个操作数都可用直接寻址方式。(2)是对存储器进行访问时最简单的方法。(3)前缀指明操作数在哪一段,缺省段为DS。(1)寻址方式不需总线周期,执行速度快。(2)两个操作数都可用寄存器寻址方式。(3)16为操作数采用16位寄存器,8位操作数采用8位寄存器。 寻址方式寻址方式 特点特点指令的寻址方式小结指令的寻址方式小结(1)只能使用BX、BP、SI、DI。

33、(2)前缀指明操作数在哪一段。使用BX时,缺省段为DS;使用BP时,缺省段为SS。(1)在寄存器间接寻址基础上,增加了位移量。(2)位移量可为8位,也可为16位。(3)指令书写时,位移量也可以写在寄存器之前。如:MOV AX, 6BX寻址方式寻址方式 特点特点(e e)基址)基址/ /变址寻址变址寻址指令的寻址方式小结指令的寻址方式小结前缀指明操作数在哪一段。使用BX时,缺省段为DS;使用BP时,缺省段为SS。(1)在基址加变址寻址基础上,增加了位移量。(2)位移量可为8位,也可为16位。(3)前缀指明操作数在哪一段。使用BX时,缺省段为DS;使用BP时,缺省段为SS。寻址方式特点寻址方式特点

34、课后作业课后作业熟记寻址方式及其特点;熟记寻址方式及其特点;n已知:(DS)=3000H,(BX)=0100H,(SS)=3100H,(SI)=0002H, (30100H)=12H,(30101H)=34H(30102H)=5678H,(31200H)=2CH,(31201H)=9AH(31202H)=0B4H,(31203H)=65H,问下列指令中,源操作数属于哪种寻址方式?指令执行完后AX寄存器的内容各是什么?n1)MOV AX,BXn2)MOV AX,1200Hn3)MOV AX,1100HBXn4)MOV AX,1100HBXSIn5)MOV AX,SS:BX+SI+100Hn6)M

35、OV AX,2500H n8086的指令的指令长度是可变长度是可变的,一条指令一般由的,一条指令一般由16个字节组个字节组成(加上前缀字节,最长可为成(加上前缀字节,最长可为7字节)。字节)。n8086指令中通常使用一个或两个操作数,在少数指令中有指令中通常使用一个或两个操作数,在少数指令中有隐含的第三个操作数。隐含的第三个操作数。单操作数指令:单操作数指令:双操作数指令:双操作数指令:三操作数指令:三操作数指令: 少数指令中有少数指令中有3个操作数,不过有一操作数隐含在操作码中。个操作数,不过有一操作数隐含在操作码中。 例例 ADC AX , BX ;(;(AX)=(AX)+(BX)+(CF

36、)3.3 8086的指令格式及数据类型的指令格式及数据类型操作码(Opcode)操作数 指令助记符指令助记符 指令的指令的16进制代码进制代码 INC AX 40H INC BX 43H MOV AL , 04 B004H MOV AX , 04 B80400指令中的数据类型指令中的数据类型n无符号数无符号数 无符号无符号8位数位数00HFFH(0255); 无符号无符号16位数位数0000HFFFFH(065535)n带符号数带符号数 带符号带符号8位数位数80H7FH(-128+127); 带符号带符号16位数位数8000H7FFFH(3276832767)nASCII码码 从键盘输入的数

37、据或符号,在机器中得到的是对应的从键盘输入的数据或符号,在机器中得到的是对应的ASCII码;码; 将数据或字符在屏幕上显示,必须先将其转换为将数据或字符在屏幕上显示,必须先将其转换为ASCII码后码后再输出;程序设计中,再输出;程序设计中,ASCII码用单引号括起来。码用单引号括起来。nBCD数(压缩数(压缩BCD和非压缩和非压缩BCD)3.4 8086指令系统指令系统 8086的指令可以分为五大类的指令可以分为五大类 3.4.1 数据传送指令数据传送指令 3.4.2 算术运算指令算术运算指令 3.4.3. 逻辑运算和移位指令逻辑运算和移位指令 3.4.4 字符串处理指令字符串处理指令 3.4

38、.5 控制转移指令控制转移指令 3.4.1 传送指令传送指令对标志为的影响:对标志为的影响:传送指令除标志传送(传送指令除标志传送(SAHFSAHF、POPFPOPF)外,均不)外,均不影响标志位。影响标志位。分类:分类:传送指令可分为通用传送指令、堆栈操作指令、交换操作传送指令可分为通用传送指令、堆栈操作指令、交换操作指令、指令、I/OI/O操作指令、目的地址传送指令和标志传送指令六类。操作指令、目的地址传送指令和标志传送指令六类。1.通用传送指令通用传送指令一般格式:一般格式:MOV OPRD1MOV OPRD1,OPRD2 OPRD2 ; 目的操作数目的操作数OPRD1 OPRD1 源操

39、作数源操作数OPRD2OPRD2其中:其中:源操作数源操作数OPRD2OPRD2为:为:立即数立即数datadata、存储器单元地址、存储器单元地址memmem、累、累加器加器AXAX、寄存器、寄存器regreg、段寄存器、段寄存器segregsegreg。目的操作数目的操作数OPRD1OPRD1为:为:存储器地址存储器地址memmem、累加器、累加器AXAX、寄存器、寄存器regreg、段寄存器段寄存器segregsegreg、指定段寄存器。、指定段寄存器。功能:功能:完成数据传送完成数据传送 。 规定:规定:(1 1)MOVMOV指令可在指令可在CPUCPU内部寄存器之间或内部寄存器之间或

40、CPUCPU与存储器之间传送与存储器之间传送字(字(1616位)或字节(位)或字节(8 8位)数据,位)数据,但代码段寄存器但代码段寄存器CS和指令指针和指令指针IP除外。除外。 Rdata mem data RR R mem mem R segreg( CS 、IP除外)除外)R或或 mem R segreg如:如: MOV AL,BL; MOV CX,BX; MOV DS,BX MOV CL,4 MOV AX,03FFH MOV SI,057BH MOV 2000H,25H MOV SI,35H MOV AX,1000H MOV AL,BUFFER; BUFFER为标号为标号 MOV AX

41、,SI MOV DI,CX MOV SI,BLOCKBP MOV DS,DATASI+BX MOV DESTBP+DI,ES (2 2)立即数不能作为目的操作数,只能作为源操作数。)立即数不能作为目的操作数,只能作为源操作数。 MOV 1000HMOV 1000H,ALAL;()(3 3) CS CS 、IPIP不能作为目的操作数。不能作为目的操作数。 MOV CSMOV CS, AX AX ;() MOV IPMOV IP, AX AX ;() (4 4)除源操作数为立即数外()除源操作数为立即数外( memmem data data ),两个操作数中),两个操作数中必须有一个为寄存器。即不

42、允许在两个存储器单元之间直接传送必须有一个为寄存器。即不允许在两个存储器单元之间直接传送数据。数据。 MOV 2000H MOV 2000H ,1000H 1000H ;() 如需要把地址如需要把地址( (即段内的地址偏移量即段内的地址偏移量) )为为AREAlAREAl的存储单元的的存储单元的内容,传送至同一段内的地址为内容,传送至同一段内的地址为AREA2AREA2的存储单元中去,的存储单元中去,MOVMOV指令指令不能直接完成这样的传送,但可以不能直接完成这样的传送,但可以CPUCPU内部寄存器为桥梁来完成内部寄存器为桥梁来完成这样的传送:这样的传送: MOV AL,AREAl MOV

43、AREA2,AL(5 5)通用传送指令)通用传送指令MOVMOV是唯一允许以段寄存器作为操作数的指令,是唯一允许以段寄存器作为操作数的指令,但但不允许通过不允许通过MOVMOV指令直接以立即数方式给段寄存器赋值,不允指令直接以立即数方式给段寄存器赋值,不允许在两个段寄存器之间直接传送数据许在两个段寄存器之间直接传送数据。可以通过。可以通过AXAX为桥梁来完成为桥梁来完成这样的传送:这样的传送: MOVAX,0 MOVDS,AX(6 6) MOVMOV指令不影响标志位。指令不影响标志位。2堆栈指令堆栈指令 堆栈:堆栈:在存储器中开辟一段区域,用于存储一些暂时需要保护而在存储器中开辟一段区域,用于

44、存储一些暂时需要保护而以后还要用到数据(如中断现场的保护与恢复、子程序现场的保以后还要用到数据(如中断现场的保护与恢复、子程序现场的保护与恢复等),这个区域称为堆栈。护与恢复等),这个区域称为堆栈。堆栈的特点:堆栈的特点:堆栈存储数据的原则为后进先出。堆栈存储数据的原则为后进先出。堆栈在存储器中的位置由堆栈在存储器中的位置由SS、SP确定。确定。 SP指令可由指令可由MOV指令指令设置。设置。堆栈指针堆栈指针SP在在8086系统中始终指向栈的顶部,即:始终指向最系统中始终指向栈的顶部,即:始终指向最后压入栈中的数据的地址。后压入栈中的数据的地址。8086系统中栈的操作是以字为单位的。执行一次入

45、栈操作,系统中栈的操作是以字为单位的。执行一次入栈操作, SP-2,直至,直至SP=0( SS )栈满为止。执行一次出栈操作,)栈满为止。执行一次出栈操作, SP+2。功能:功能:主要用于保护中间数据、子程序的现场、中断程序的现场主要用于保护中间数据、子程序的现场、中断程序的现场等。等。 包括入栈(包括入栈(PUSH)和出栈()和出栈(POP)指令两类。仅能进行字)指令两类。仅能进行字运算。(操作数不能是立即数)运算。(操作数不能是立即数)格式:格式: 入栈指令:入栈指令:PUSH OPRD 功能:功能:将数据压入堆栈将数据压入堆栈 执行步骤为:执行步骤为:先修改堆栈指针先修改堆栈指针SP,然

46、后将数据压入堆栈。,然后将数据压入堆栈。 SP =SP-2;SP=操作数低操作数低8位;位;SP+1= 操作数高操作数高8位。位。例如:例如:PUSH BX 执行过程为:执行过程为:SP=SP-1,SP=BH;SP=SP-1,SP=BL,如图。,如图。 出栈指令:出栈指令:POP OPRD 功能:功能:将数据弹出堆栈。将数据弹出堆栈。 执行步骤同入栈指令。不同的是:执行步骤同入栈指令。不同的是:先将数据弹出堆栈,然后修先将数据弹出堆栈,然后修改堆栈指针改堆栈指针SP 。(。( SP )= ( SP )+2。例如:。例如: POP BX 规定:规定:(1)堆栈段)堆栈段SS、栈指针、栈指针SP,

47、堆栈只有一个入,堆栈只有一个入/出口。出口。(2)栈指针)栈指针SP在初始化中需要设置。在入、出栈操作中,栈指在初始化中需要设置。在入、出栈操作中,栈指针针SP是自动修改的,以保证是自动修改的,以保证SP始终指向栈顶。始终指向栈顶。(3)操作数)操作数OPRD可以是可以是CPU内部的内部的16位通用寄存器、段寄存器位通用寄存器、段寄存器(CS除外)和内存单元,也可以用除立即寻址外的所有寻址方式,除外)和内存单元,也可以用除立即寻址外的所有寻址方式,但不能使立即数。入、出栈操作对象必须是但不能使立即数。入、出栈操作对象必须是16位数。位数。(4)PUSH、POP指令必须成对使用,在一个程序中不能

48、出现非指令必须成对使用,在一个程序中不能出现非成对的成对的PUSH、POP指令。指令。3交换操作指令交换操作指令 格式:格式:XCHG OPRD1,OPRD2; 目的操作数目的操作数OPRD1 源操作数源操作数OPRD2功能:功能:完成数据交换,把一个字节或一个字的源操作数与目的操完成数据交换,把一个字节或一个字的源操作数与目的操作数相交换。作数相交换。规定:规定:(1)可实现)可实现8位或位或16位数据的交换。两个操作数的位数必须相同。位数据的交换。两个操作数的位数必须相同。(2)交换能在通用寄存器与累加器之间、通用寄存器之间、通)交换能在通用寄存器与累加器之间、通用寄存器之间、通用寄存器与

49、存储器之间进行。两个操作数中必须有一个为寄存器。用寄存器与存储器之间进行。两个操作数中必须有一个为寄存器。即即不允许在两个存储器单元之间直接交换数据不允许在两个存储器单元之间直接交换数据。(3)段寄存器和立即数不能作为一个操作数。)段寄存器和立即数不能作为一个操作数。(4)交换指令)交换指令XCHG不影响标志位。不影响标志位。例如:例如: XCHG AL,CL XCHG AX,DI XCHG BX,SI XCHG AX,BUFFER XCHG DATASI,DH4. I/O操作指令操作指令 I/O操作指令也称为操作指令也称为累加器专用累加器专用传送指令,有三种,输入、输传送指令,有三种,输入、

50、输出和累加器换码指令(查表指令)指令。出和累加器换码指令(查表指令)指令。 功能:功能: I/O操作指令用于完成累加器(操作指令用于完成累加器(AX/AL)与)与I/O端口之间的端口之间的数据传送功能。数据传送功能。(1)输入指令)输入指令IN格式:格式:IN AL,PORT ; ALPORT ( B ) IN AX,PORT ; AXPORT +1PORT ( W ) IN AL,DX ; ALDX ( B ) IN AX,DX ; AXDX+1DX ( W )其中:其中: PORT 为为8位端口直接地址。位端口直接地址。 B为字节操作,为字节操作,W为字操作。为字操作。功能:功能:从从I/

51、O端口输入数据至端口输入数据至AL或或AX。规定:规定: 输入指令允许把一个字节或一个字由一个输入端口传送到输入指令允许把一个字节或一个字由一个输入端口传送到AL或或AX中。中。 当端口地址当端口地址 255时,时,PORT为为8位端口直接地址。位端口直接地址。 当端口地址当端口地址255时,则必须用时,则必须用DX间址(间址( 16位端口直接地址)位端口直接地址)保存端口地址,这样用保存端口地址,这样用DX作端口寻址最多可寻找作端口寻址最多可寻找64K个端口。个端口。 OUT 指令指令格式:格式: OUT PORT,AL ;(;( AL )PORT ( B ) OUT PORT,AX;(;(

52、 AX )PORT +1PORT ( W ) OUT DX,AL ; ( AL ) DX ( B )OUT DX,AX ;(;( AX ) DX+1DX ( W )功能:功能:将将AL或或AX的内容输出至的内容输出至I/O端口。该指令将端口。该指令将AL或或AX中的中的内容传送到一个输出端口。其具体内容传送到一个输出端口。其具体规定规定与与IN指令相同。指令相同。注:注:IN、OUT指令提供了指令提供了8位和位和16位两种使用方式,选用哪一种,位两种使用方式,选用哪一种,取决于外设端口的数据总线的宽度。若外设端口的数据总线为取决于外设端口的数据总线的宽度。若外设端口的数据总线为8位,则只能用位

53、,则只能用8位指令,使用位指令,使用AL;若外设端口的数据总线为;若外设端口的数据总线为16位,位,则只能用则只能用16位指令,使用位指令,使用AX。(3)累加器换码指令)累加器换码指令XLAT格式:格式:XLAT ;(;( AL ) ( (DS)16(BX)+(AL)功能:功能:完成一个字节的换码转换。主要用于数制转换、函数表查完成一个字节的换码转换。主要用于数制转换、函数表查表、代码转换等场合。表、代码转换等场合。规定:规定:寄存器寄存器AL的内容作为某一项到表首的偏移量(的内容作为某一项到表首的偏移量(256字节字节的表的下标)。的表的下标)。 表的基地址在表的基地址在BX中(表首地址)

54、。中(表首地址)。 转换后的结果存放在转换后的结果存放在AL中。中。特点:特点:XLAT 指令不影响标志位。指令不影响标志位。例如:例如: MOV BX,OFFSET TABLE MOV AL,8 XLAT ;查表;查表 OUT 40H,AL ;(;(AL) AAH ;向;向40H口输出口输出AAH AAHTABLE 第第9个字符个字符 表长度表长度256256 【例【例3.73.7】十进制数到共阴极十进制数到共阴极LED七段码显示段码的转换。七段码显示段码的转换。共阳极共阳极LED显示器的段码:显示器的段码:0-9分别为:分别为:C0、F9H、A4H、B0H、99H、92H、82H、F8H、

55、80H、90H。解:解:设计过程设计过程:(1)将段码表存到数据段的一片连续的单元中,表首地址)将段码表存到数据段的一片连续的单元中,表首地址2000H送送BX。(2)将待转换的十进制数送)将待转换的十进制数送AX。(3)换码。)换码。程序:程序:MOV BX,2000H MOV AL,3 XLAT5目的地址传送指令目的地址传送指令 目的地址传送指令共有三条指令目的地址传送指令共有三条指令 取有效地址指令取有效地址指令LEA (Load Effective Address)格式:格式: LEA OPRD1,OPRD2 或:或: LEA reg,add ;(;( reg) add, add为有效

56、地址为有效地址功能:功能:把存储器的有效地址把存储器的有效地址EA送入一个寄存器送入一个寄存器reg 。即把源操作数。即把源操作数OPRD2的的地址偏移量地址偏移量传送至目的操作数传送至目的操作数OPRD1。规定:规定:源操作数必须是一个存储单元地址。目的操作数必须是一源操作数必须是一个存储单元地址。目的操作数必须是一个个16位的通用寄存器。位的通用寄存器。 传送到传送到16位的通用寄存器的是存储器的有效地址位的通用寄存器的是存储器的有效地址EA,而,而不是该存储单元的内容。不是该存储单元的内容。 这条指令通常用于将一个这条指令通常用于将一个16位的通用寄存器作为地址指针。位的通用寄存器作为地

57、址指针。 例:例: LEA BX,2728H ; ( BX )2728H LEA BX,BX+SI ; ( BX ) ( BX+SI )将地址指针装入将地址指针装入DS和另一个寄存器指令和另一个寄存器指令LDS (Load pointer into DS)格式:格式: LDS OPRD1,OPRD2 或:或: LDS reg,add ;(;( reg) ( add+1 )()( add) ( DS) ( add+3 )()( add +2 )功能:功能:把把4字节的地址指针(包括字节的地址指针(包括2字节的段地址和字节的段地址和2字节的偏移量)字节的偏移量)传送到传送到DS和和reg中,完成一

58、个地址指针的传送。指令将段地址送入中,完成一个地址指针的传送。指令将段地址送入DS,偏移量部分送入一个,偏移量部分送入一个16位的指针寄存器或变址寄存器。位的指针寄存器或变址寄存器。规定:规定:源操作数可以是一个存储单元地址,或是用通用寄存器作源操作数可以是一个存储单元地址,或是用通用寄存器作间址的存储单元地址。目的操作数必须是一个间址的存储单元地址。目的操作数必须是一个16位的通用寄存器。位的通用寄存器。 目的操作数的段地址必须送到目的操作数的段地址必须送到DS 中。中。 传送的是存储单元的内容,而不是存储器的有效地址传送的是存储单元的内容,而不是存储器的有效地址EA 。例如:例如:LDS

59、SI,BX ;将把;将把BX所指的所指的32位地址指针的段地址部分位地址指针的段地址部分送入送入DS,偏移量部分送入,偏移量部分送入SI。 将地址指针装入将地址指针装入ES和另一个寄存器指令和另一个寄存器指令LES (Load pointer into ES) 格式:格式: LES OPRD1,OPRD2 或:或: LES reg,add ;(;( reg) ( add+1 )()( add) ( ES) ( add+3 )()( add +2 )规定:规定:这条指令除将地址指针的段地址送入这条指令除将地址指针的段地址送入ES外,其他同外,其他同LDS。例如:例如: LES DI,BX+COU

60、NT如右图所示。如右图所示。6标志寄存器传送指令标志寄存器传送指令标志寄存器传送指令共有四条指令。均影响标志位。标志寄存器传送指令共有四条指令。均影响标志位。标志寄存器标志寄存器FR(即程序状态字(即程序状态字PSW ) LAHF (LOAD AH WITH FLAG)格式:格式: LAHF; (AH) ( FR )07功能:功能:将标志寄存器中的将标志寄存器中的SF(7)、ZF (6) 、AF (4) 、PF (2)和和CF (0) (即低(即低8位)传送至位)传送至AH寄存器的指定位,空位没有定义。寄存器的指定位,空位没有定义。 SAHF (STORE AH WITH FLAG)格式:格式

温馨提示

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

评论

0/150

提交评论