第4章-指令系统教案课件_第1页
第4章-指令系统教案课件_第2页
第4章-指令系统教案课件_第3页
第4章-指令系统教案课件_第4页
第4章-指令系统教案课件_第5页
已阅读5页,还剩130页未读 继续免费阅读

下载本文档

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

文档简介

1、第第4 4章章 指令系统指令系统第第4章章 8086指令系统指令系统本章主要教学内容本章主要教学内容 1、8086指令的基本格式指令的基本格式 2、8086指令系统的寻址方式指令系统的寻址方式 3、8086指令的应用指令的应用本章教学目的本章教学目的 使学生掌握指令的寻址方式过程,掌握指令的使学生掌握指令的寻址方式过程,掌握指令的应用。应用。 教学重点:教学重点:指令系统的寻址方式和指令的应用指令系统的寻址方式和指令的应用 教学难点:教学难点:指令的寻址方式指令的寻址方式第第4 4章章 指令系统指令系统第第4章章 8086指令系统指令系统 4.1 指令的基本概念和基本格指令的基本概念和基本格式

2、式4.2 指令指令的寻址方式的寻址方式4.3 8086指令系统指令系统4.4 中中断调用类指令断调用类指令开开 始始第第4 4章章 指令系统指令系统4.1 指令的基本概念和指令格式指令的基本概念和指令格式 机器指令:指挥计算机完成某种操作机器指令:指挥计算机完成某种操作的命令。的命令。 从计算机组成的层次结构来说,计算从计算机组成的层次结构来说,计算机指令有机器指令、伪指令和宏指令之分。机指令有机器指令、伪指令和宏指令之分。 指令格式如下:指令格式如下: 操作符 OPD, OPS OPD:目的操作数 OPS:源操作数第第4 4章章 指令系统指令系统4.2 指令寻址方式指令寻址方式4.2.1 寻

3、寻址方式的基本概念址方式的基本概念4.2.2 与数据有关的寻址与数据有关的寻址方式方式4.2.3 I/O端口寻址端口寻址方式方式返回本章首页返回本章首页第第4 4章章 指令系统指令系统4.2.1 4.2.1 寻址、寻址方式的概念寻址、寻址方式的概念 指令中操作数字段实质上是指出操作数存放指令中操作数字段实质上是指出操作数存放于何处。一般来说,操作数可以跟随在指令操作于何处。一般来说,操作数可以跟随在指令操作码之后,称为立即数;操作数也可以存放在码之后,称为立即数;操作数也可以存放在CPU内部的寄存器中,称为寄存器操作数。绝大多数内部的寄存器中,称为寄存器操作数。绝大多数的操作数存放在内存储器中

4、,称为存储器操作数。的操作数存放在内存储器中,称为存储器操作数。指令指定操作数的位置,即给出地址信息,在执指令指定操作数的位置,即给出地址信息,在执行时需要根据这个地址信息找到需要的操作数。行时需要根据这个地址信息找到需要的操作数。这种寻找操作数的过程称为寻址,而寻找操作数这种寻找操作数的过程称为寻址,而寻找操作数的方法称为寻址方式。的方法称为寻址方式。 第第4 4章章 指令系统指令系统4.2.2 4.2.2 与数据有关的寻址方式与数据有关的寻址方式 1. 立即寻址立即寻址 立即寻址方式中,指令操作码和操作数都在存立即寻址方式中,指令操作码和操作数都在存储器代码段中。储器代码段中。汇编格式:汇

5、编格式:n n(n n为立即操作数,是用为立即操作数,是用8 8位或位或1616位二位二进制补码表示的有符号数)进制补码表示的有符号数) 功能:操作数存放在功能:操作数存放在存储器,指令下一单元的存储器,指令下一单元的内容为立即操作数内容为立即操作数n n。 图形表示如右:图形表示如右:第第4 4章章 指令系统指令系统【例【例4.14.1】 【例【例4.1】MOV AX, 10执行后(执行后(AX)=?该例中源操作数为立即寻址方式,立即数为该例中源操作数为立即寻址方式,立即数为10,存,存放在指令的下一单元。放在指令的下一单元。图形表示:图形表示:执行:执行:10AX执行后:执行后:(AX)=

6、000AH 返回本节返回本节第第4 4章章 指令系统指令系统2. 寄存器寻址寄存器寻址 寄存器寻址方式的操作数在指令指明的寄寄存器寻址方式的操作数在指令指明的寄存器中。存器中。 汇编格式:汇编格式:R 其中其中R表示寄存器名。表示寄存器名。 功能:操作数直接存放在寄存器功能:操作数直接存放在寄存器R中。中。 图形表示:图形表示: R 指令指令操作数操作数第第4 4章章 指令系统指令系统【例【例4.24.2】 下列程序执行后,下列程序执行后,(AX)=?,(?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX 该程序中该程序中MOV指令为数据传送指令操作符,指

7、令为数据传送指令操作符,ADD指令指令为加法指令操作符,三条指令皆为双操作数指令。第一、二为加法指令操作符,三条指令皆为双操作数指令。第一、二条指令条指令AX、BX皆为目的操作数地址,为寄存器寻址方式。皆为目的操作数地址,为寄存器寻址方式。第三条指令中,第三条指令中,AX为目的操作数地址,为目的操作数地址,BX为源操作数地址。为源操作数地址。源地址和目的地址皆为寄存器寻址方式。源地址和目的地址皆为寄存器寻址方式。第第4 4章章 指令系统指令系统图形表示:图形表示:执行:执行:1234HAX 5678HBX (AX)+(BX)AX执行后:(执行后:(AX)=68ACH,(,(BX)=5678H返

8、回本节返回本节第第4 4章章 指令系统指令系统3. 3. 存储器寻址存储器寻址 如果操作码所需操作数存放在内存储器中,则指令中如果操作码所需操作数存放在内存储器中,则指令中需要给出操作数的地址信息。为了提高程序的灵活性,需要给出操作数的地址信息。为了提高程序的灵活性,8086指令系统提供了多种存储器寻址方式指令系统提供了多种存储器寻址方式(1)直接寻址(2)寄存器间接寻址(3)寄存器相对寻址(4)基址变址寻址(5)相对基址变址寻址(6)关于段跨跃前缀第第4 4章章 指令系统指令系统(1) 直接寻址直接寻址汇编格式:含有变量的地址表达式。汇编格式:含有变量的地址表达式。 段寄存器名:段寄存器名:

9、EA 。功能:指令下一字单元的内容是操作数的偏移地功能:指令下一字单元的内容是操作数的偏移地址址EA。图形表示:图形表示:第第4 4章章 指令系统指令系统【例【例4.34.3】 【例【例4.3】寄存器和存储器内容为:(】寄存器和存储器内容为:(AX)=1212H,BUF为数据段定义的变量,其偏移地址是为数据段定义的变量,其偏移地址是2000H,(,(DS)=3000H,(,(32000H)=4545H。执行指令:执行指令:MOV AX ,BUF执行后:(执行后:(AX)=?图形表示:图形表示:执行:(执行:(32000H)AX执行后:(执行后:(AX)=4545H返回本节返回本节第第4 4章章

10、 指令系统指令系统(2) 寄存器间接寻址寄存器间接寻址 寄存器间接寻址方式中,寄存器的内容为寄存器间接寻址方式中,寄存器的内容为操作数的偏移地址操作数的偏移地址EAEA,操作数在存储器中。操作数在存储器中。 汇编格式:汇编格式: RR 功能:操作数存放在存储器,寄存器功能:操作数存放在存储器,寄存器R R存放存放操作数的偏移地址操作数的偏移地址EAEA。第第4 4章章 指令系统指令系统寄存器间接寻址示意图:寄存器间接寻址示意图:例如:例如:MOV AX,BX若(若(DS)2000H,(,(BX)1000H,物理地址物理地址20000H1000H21000H。指令执行前,(指令执行前,(AX)2

11、030H,(,(21000H)0A0H,(,(21001H)50H,指令执行后,(指令执行后,(AX)50A0H,(21000H)0A0H,(,(21001H)50H。指令执行情况如下:指令执行情况如下: AX AH AL 数据段 物理地址 A0H 21000H 50H 20001H 56H 20002H 第第4 4章章 指令系统指令系统偏移地址偏移地址EA计算方法如下:计算方法如下:EA=SISI作间址寄存器。 DIDI作间址寄存器。BX BX作间址寄存器。BP BP作间址寄存器。第第4 4章章 指令系统指令系统执行指令:执行指令:MOV AX MOV AX ,BP BP 执行后:(执行后:

12、(AXAX)=?=?,(,(BPBP)=?=?,(,(SSSS)=?=?,(20030H20030H)=?=?图形表示如下:图形表示如下: 【例【例4.44.4】寄存器和存储器内容分别为:】寄存器和存储器内容分别为:(AXAX)=0=0,(,(BPBP)=0030H=0030H,(,(SSSS)=2000H=2000H,(20030H20030H)=1234H=1234H返回本节返回本节第第4 4章章 指令系统指令系统(3) 寄存器相对寻址寄存器相对寻址 寄存器相对寻址方式是在指令中给定一个基址寄存寄存器相对寻址方式是在指令中给定一个基址寄存器(或变址寄存器)名和一个器(或变址寄存器)名和一个

13、8 8位或位或1616位的相对偏移量,位的相对偏移量,两者之和作为操作数的有效地址。对两者之和作为操作数的有效地址。对BXBX、SISI、DIDI这三个这三个间址寄存器,指示的是数据段中的数据,而用间址寄存器,指示的是数据段中的数据,而用BPBP作间址作间址寄存器,则指示的是堆栈段中的数据。寄存器,则指示的是堆栈段中的数据。 汇编格式:汇编格式:XRXR(X X表示位移量,是表示位移量,是8 8位或位或1616位二进位二进制补码表示的有符号数)。制补码表示的有符号数)。功能:操作数存放在存储器,寄存器功能:操作数存放在存储器,寄存器R R的内容加位移量的内容加位移量X X为操作数的偏移地址为操

14、作数的偏移地址EAEA。第第4 4章章 指令系统指令系统偏移地址偏移地址EA计算方法如下计算方法如下:第第4 4章章 指令系统指令系统【例【例4.54.5】 设执行前:设执行前: (AX)=0040H,(,(BX)=0030H,(DS)=2000H,(,(20036H)=0050H 执行指执行指令:令:ADD 6BX,AX执行后:执行后:(AX)=?,(,(BX)=?,(,(DS)=?,(20036H)=?图形表示如下:图形表示如下: 第第4 4章章 指令系统指令系统执行:(执行:(20036H)+(AX) 20036H执行后:(执行后:(AX)=0040H,(,(BX)=0030H,(,(D

15、S)=2000H,(,(20036H)=0090H。返回本节返回本节第第4 4章章 指令系统指令系统(4) 基址变址寻址基址变址寻址 基址变址寻址方式是在指令中给出一个基址寄存器名基址变址寻址方式是在指令中给出一个基址寄存器名和一个变址寄存器名,两者内容之和作为操作数的有效地和一个变址寄存器名,两者内容之和作为操作数的有效地址。基址寄存器为址。基址寄存器为BXBX或或BPBP,变址寄存器为变址寄存器为SISI或或DIDI,但指令但指令中不能同时出现两个基址寄存器或两个变址寄存器。如果中不能同时出现两个基址寄存器或两个变址寄存器。如果基址寄存器为基址寄存器为BXBX,则段寄存器使用则段寄存器使用

16、DSDS;如果基址寄存器用如果基址寄存器用BPBP,则段寄存器用则段寄存器用SSSS。 汇编格式:汇编格式: BR+IR BR+IR 功能:操作数存放在存储器,功能:操作数存放在存储器,BRBR的内容加的内容加IRIR的内容加的内容加位移量位移量X X是操作数的偏移地址是操作数的偏移地址EAEA。第第4 4章章 指令系统指令系统操作数偏移地址操作数偏移地址EA计算方法如下计算方法如下返回本节返回本节第第4 4章章 指令系统指令系统【例【例4.64.6】 例如例如 MOV AL,BXSI(MOV AL,BXSI)若指令执行前,(若指令执行前,(DS)1000H,(,(BX)0010H,(,(SI

17、)0002H,(,(10012H)45H则则EA(BX)()(SI)0012H,PA(DS)10HEA10012H指令执行后(指令执行后(AL)45H。返回本节返回本节第第4 4章章 指令系统指令系统(5) 相对相对基址变址寻址基址变址寻址 相对基址变址寻址方式是在指令中给出一个基址寄存相对基址变址寻址方式是在指令中给出一个基址寄存器名和一个变址寄存器名及一个器名和一个变址寄存器名及一个8 8位或位或1616位的相对偏移量,位的相对偏移量,三者内容之和作为操作数的有效地址。基址寄存器为三者内容之和作为操作数的有效地址。基址寄存器为BXBX或或BPBP,变址寄存器为变址寄存器为SISI或或DID

18、I,但指令中不能同时出现两个基但指令中不能同时出现两个基址寄存器或两个变址寄存器。如果基址寄存器为址寄存器或两个变址寄存器。如果基址寄存器为BXBX,则段则段寄存器使用寄存器使用DSDS;如果基址寄存器用如果基址寄存器用BPBP,则段寄存器用则段寄存器用SSSS。 汇编格式:汇编格式: XBR+IR XBR+IR (X X表示位移量,是表示位移量,是8 8位或位或1616位位二进制补码表示的有符号数)二进制补码表示的有符号数) 功能:操作数存放在存储器,功能:操作数存放在存储器,BRBR的内容加的内容加IRIR的内容加的内容加位移量位移量X X是操作数的偏移地址是操作数的偏移地址EAEA。第第

19、4 4章章 指令系统指令系统(6) 跨段问题跨段问题 按前述规定:若选用按前述规定:若选用BPBP作间址基址寄存器、变址寄存器作间址基址寄存器、变址寄存器或基址寄存器,则操作数在堆栈段,操作数的物理地址或基址寄存器,则操作数在堆栈段,操作数的物理地址PAPA由由堆栈段寄存器堆栈段寄存器SSSS的内容左移的内容左移4 4位与偏移地址位与偏移地址EAEA相加后形成;否相加后形成;否则,操作数在数据段,操作数的物理地址则,操作数在数据段,操作数的物理地址PAPA由数据段寄存器由数据段寄存器DSDS的内容左移的内容左移4 4位与偏移位与偏移EAEA相加后形成。该规定为系统默认状相加后形成。该规定为系统

20、默认状态。当要否定默认状态,到非约定段寻找操作数时,必须用态。当要否定默认状态,到非约定段寻找操作数时,必须用跨段前缀指明操作数的段寄存器名。跨段前缀指明操作数的段寄存器名。 汇编格式:段寄存器名:操作数地址。汇编格式:段寄存器名:操作数地址。 功能:段寄存器名指明操作数属哪个段。功能:段寄存器名指明操作数属哪个段。 第第4 4章章 指令系统指令系统【例【例4.74.7】跨段前缀示例。】跨段前缀示例。 MOVMOVAXAX,DSDS:BP BP MOVMOVCXCX,SSSS:SI SI 该例中,该例中,DSDS:,:,SSSS:均为跨段前缀,此时默认均为跨段前缀,此时默认状态无效,操作数的物

21、理地址状态无效,操作数的物理地址PAPA由段寄存器内由段寄存器内容左移容左移4 4位加偏移位加偏移EAEA形成。上述形成。上述2 2条指令的源操条指令的源操作数物理地址分别为:作数物理地址分别为:PA1 =PA1 =(DSDS)左移左移4 4位位+BPBPPA2 =PA2 =(SSSS)左移左移4 4位位+SISI返回本节返回本节第第4 4章章 指令系统指令系统4.2.3 4.2.3 I/OI/O端口寻址方式端口寻址方式 8086CPU采用独立编址的采用独立编址的I/O端口,可以最多访问端口,可以最多访问64K个字节端口个字节端口或或32K个字端口,用专门的个字端口,用专门的IN指令和指令和O

22、UT指令访问。指令访问。I/O端口寻址只用端口寻址只用于这两种指令中。寻址方式有如下两种。于这两种指令中。寻址方式有如下两种。1. 直接端口寻址直接端口寻址 在指令中直接给出端口地址,端口地址一般采用在指令中直接给出端口地址,端口地址一般采用2位十六进制数,位十六进制数,也可以用符号表示,这种寻址方式为直接端口寻址。因此,直接端口也可以用符号表示,这种寻址方式为直接端口寻址。因此,直接端口寻址可访问的端口数为寻址可访问的端口数为0255个。个。例如:例如:IN AL,25H2. 寄存器间接端口寻址寄存器间接端口寻址 如果访问的端口地址值大于如果访问的端口地址值大于255,则必须用,则必须用I/

23、O端口的间接寻址方式。端口的间接寻址方式。所谓间接寻址,是指把所谓间接寻址,是指把I/O端口的地址先送到端口的地址先送到DX中,用中,用DX作间接寻址作间接寻址寄存器,而且只能用寄存器,而且只能用DX寄存器。寄存器。例如:例如:MOV DX,378H OUT DX,AL第第4 4章章 指令系统指令系统4.3 80864.3 8086指令系统指令系统 包括数据传送类指令、算术运算类指令、包括数据传送类指令、算术运算类指令、位位操作操作类指令、串操作类指令、控制转移类类指令、串操作类指令、控制转移类指令、处理机控制类指令。后几节将分别介指令、处理机控制类指令。后几节将分别介绍这些指令的语句格式和功

24、能。绍这些指令的语句格式和功能。4.3.1 数据传送类指令 4.3.2 算术运算类指令 4.3.3 逻辑运算与移位类指令 4.3.4 串操作类指令 4.3.5 控制转移类指令 第第4 4章章 指令系统指令系统4.3.1 数据传送类指令数据传送类指令1 通用数据传送指令通用数据传送指令2 累加器专用传送指令累加器专用传送指令3 地址传送指令地址传送指令4 标志寄存器传送指令标志寄存器传送指令返回本章首页返回本章首页第第4 4章章 指令系统指令系统1 1 通用数据传送指令通用数据传送指令(1)传送指令传送指令MOV(2)堆栈指令堆栈指令PUSHPOP(3)数据交换指令数据交换指令XCHG第第4 4

25、章章 指令系统指令系统(1 1)传送指令)传送指令MOVMOV语句格式:语句格式:MOV OPDMOV OPD,OPSOPS功能:将源操作数传送入目的地址,源功能:将源操作数传送入目的地址,源地址内容不变。即(地址内容不变。即(OPSOPS)OPDOPD。下图下图4.14.1描述了描述了MOVMOV指令在传送数据时允指令在传送数据时允许传送的路径及类型。许传送的路径及类型。第第4 4章章 指令系统指令系统图图4.1 MOV指令所允许的数据传送路径及类型指令所允许的数据传送路径及类型第第4 4章章 指令系统指令系统几点说明几点说明1、MOV指令可传送指令可传送8/16位数据,数据形式由寄存器位数

26、据,数据形式由寄存器或立即数决定,传送类型要匹配或立即数决定,传送类型要匹配2、存储器间不能传送、存储器间不能传送3、IP不能作为源或目的地址不能作为源或目的地址4、CS不能作为目的地址不能作为目的地址5、传送指令不影响标志位、传送指令不影响标志位6、当采用、当采用BX、DI、SI来间接寻址时,采用来间接寻址时,采用DS,采用,采用BP来间接寻址时采用来间接寻址时采用SS7、不能用立即数对段寄存器传送数值、不能用立即数对段寄存器传送数值8、立即数只能作为源操作数、立即数只能作为源操作数第第4 4章章 指令系统指令系统MOVMOV指令的形式有如下几种:指令的形式有如下几种: 1)从通用寄存器到通

27、用寄存器)从通用寄存器到通用寄存器 MOV reg1,reg22)立即数传送到通用寄存器)立即数传送到通用寄存器 MOV reg ,data 3)通用寄存器和存储单元之间)通用寄存器和存储单元之间 MOV mem (reg),reg (mem)4)立即数传送到存储单元立即数传送到存储单元 MOV mem, data5)段寄存器与通用寄存器间的数据传送段寄存器与通用寄存器间的数据传送 MOV seg,reg 或或 MOV reg, seg 6)段寄存器与存储单元间的数据传送段寄存器与存储单元间的数据传送MOV seg,mem 或或 MOV mem, seg 第第4 4章章 指令系统指令系统【例【

28、例4.84.8】存储器与寄存器间数据传送。存储器与寄存器间数据传送。MOV AX,BUF ;BUF是变量,源操作数为直接寻址是变量,源操作数为直接寻址MOV BH,DI ;源操作数为寄存器间接寻址源操作数为寄存器间接寻址MOV DI,ES:3SI ;源操作数为变址寻址,使用跨段前缀源操作数为变址寻址,使用跨段前缀MOV BP,3BX+SI;源操作数为相对基址加变址寻址源操作数为相对基址加变址寻址MOV BUFA,DL;BUFA是一字节变量是一字节变量MOV BP,AX;使用使用SS段寄存器段寄存器MOV DS:BP,DL;使用跨段前缀使用跨段前缀MOV BUF,DS;BUF是个字变量是个字变量

29、MOV ES ,BUF第第4 4章章 指令系统指令系统指出下列指令是否错误,错在何处指出下列指令是否错误,错在何处MOV DL,AXMOV DS,0100HMOV IP,0FFFFHMOV AX,BXBPMOV BX,2000H第第4 4章章 指令系统指令系统2 2数据交换指令数据交换指令XCHGXCHG语句格式:语句格式:XCHG OPD,OPS功能:将源地址与目的地址中的内容互换。即(功能:将源地址与目的地址中的内容互换。即(OPD)OPS,(OPS)OPD。【例例4.9】寄存器与存储器之间数据交换寄存器与存储器之间数据交换。MOVAX,5678H;(;(AX)=5678HMOVBX,0F

30、FFFH;(;(BX)=0FFFFHXCHG AX,BX;(;(AX)=0FFFFH ,(,( BX)=5678H第第4 4章章 指令系统指令系统(2 2) 堆栈操作指令堆栈操作指令1)进栈指令进栈指令PUSH2)出栈指令出栈指令POP第第4 4章章 指令系统指令系统1 1)进栈指令)进栈指令PUSHPUSH语句格式:语句格式: PUSH OPSPUSH OPS功能:将寄存器、段寄存器或存储器中的一功能:将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈指针减个字数据压入堆栈,堆栈指针减2 2。即:(即:(SPSP)SPSP(OPSOPS)158SP158SP(SPSP)SPSP(OPSO

31、PS)70SP70SP第第4 4章章 指令系统指令系统2 2)出栈指令)出栈指令POPPOP语句格式:语句格式: POP OPDPOP OPD功能:功能: 将栈顶元素弹出送至某一寄存器、段寄存器将栈顶元素弹出送至某一寄存器、段寄存器(除(除CSCS外)或存储器,堆栈指针加外)或存储器,堆栈指针加2 2。从从POPPOP指令功能可看出,该指令为指令功能可看出,该指令为PUSHPUSH指令的逆过程。指令的逆过程。即:(即:( SPSP)(OPDOPD)7070(SPSP)+ +SP SP (SPSP)(OPDOPD)158158 (SPSP)+ +SPSP返回本节返回本节第第4 4章章 指令系统指

32、令系统2.2.累加器专用传送指令累加器专用传送指令(1)输入)输入/输出指令输出指令 (2)XLAT查表指令查表指令 第第4 4章章 指令系统指令系统1 1)输入指令)输入指令ININ输入指令用来从指定的外设寄存器取信息送入输入指令用来从指定的外设寄存器取信息送入累加器。它有四种形式:累加器。它有四种形式:语句格式:语句格式:ININALAL,PORT PORT 功能:(功能:(PORTPORT)ALAL语句格式:语句格式:ININAXAX,PORTPORT 功能:(功能:(PORTPORT)AXAX语句格式:语句格式:ININALAL,DXDX 功能:(功能:( DXDX)ALAL语句格式:

33、语句格式:ININAXAX,DXDX 功能:(功能:( DXDX)ALAL第第4 4章章 指令系统指令系统2 2)输出指令)输出指令OUTOUT输出指令用来把累加器的内容送往指定的外设输出指令用来把累加器的内容送往指定的外设存储器,它有四种形式:存储器,它有四种形式:语句格式:语句格式:OUTPORT,AL 功能:(功能:(AL)PORT语句格式:语句格式:OUTPORT,AX 功能:(功能:(AX)PORT语句格式:语句格式:OUTDX,AL 功能:(功能:(AL)DX语句格式:语句格式:OUTDX,AX 功能:(功能:(AX)DX返回本节返回本节第第4 4章章 指令系统指令系统(2 2)查

34、表转换指令)查表转换指令 XLATXLAT语句格式:语句格式:XLAT OPSXLAT OPS或或XLATXLAT功能:将(功能:将(BXBX)为首址(为首址(ALAL)为位移量为位移量的字节存储单元中的数据送的字节存储单元中的数据送ALAL寄存器。寄存器。即(即( BX+ALBX+AL)ALAL。返回本节返回本节第第4 4章章 指令系统指令系统3 3 地址传送指令地址传送指令(1 1)传送有效地址指令)传送有效地址指令 LEALEA(2 2)传送有效地址及数据段首址指令)传送有效地址及数据段首址指令LDSLDS(3 3)传送有效地址及附加数据段指令)传送有效地址及附加数据段指令LESLES第

35、第4 4章章 指令系统指令系统(1 1)传送有效地址指令)传送有效地址指令 LEALEA语句格式:语句格式: LEA OPDLEA OPD,OPSOPS功能:主存按源地址的寻址方式计算偏移地址,功能:主存按源地址的寻址方式计算偏移地址,将偏移地址送入指定寄存器。将偏移地址送入指定寄存器。【例【例4.104.10】主存偏移地址的获取。主存偏移地址的获取。MOV BXMOV BX,0100H0100H ;(;(BXBX)=0100H=0100HMOV SIMOV SI, 0210H 0210H;(;(SISI) =0210H =0210HLEA BXLEA BX,1234BX+SI1234BX+S

36、I; (BXBX)=1544H=1544H第第4 4章章 指令系统指令系统(2 2)传送有效地址及数据段首址指令)传送有效地址及数据段首址指令LDSLDS语句格式:语句格式:LDS OPDLDS OPD,OPSOPS功能:将主存中指定字单元数据送入指功能:将主存中指定字单元数据送入指定存储器,下一字单元数据送定存储器,下一字单元数据送DSDS寄存器。寄存器。第第4 4章章 指令系统指令系统(3 3)传送有效地址及附加数据段指令)传送有效地址及附加数据段指令LESLES语句格式:语句格式:LES OPDLES OPD,OPSOPS功能:将主存某字单元内容送指定寄存器。功能:将主存某字单元内容送指

37、定寄存器。即(即(OPSOPS)OPDOPD,(,(OPS+2OPS+2)ESES。返回本节返回本节第第4 4章章 指令系统指令系统4 4 标志寄存器传送指令标志寄存器传送指令(1 1)标志送)标志送AHAH指令指令LAHFLAHF(2 2)AHAH送标志指令送标志指令SAHFSAHF(3 3)标志寄存器进栈指令)标志寄存器进栈指令PUSHFPUSHF(4 4)标志寄存器出栈指令标志寄存器出栈指令POPFPOPF第第4 4章章 指令系统指令系统(1 1)标志送)标志送AHAH指令指令LAHFLAHF语句格式:语句格式:LAHFLAHF功能:将标志寄存器的低功能:将标志寄存器的低8 8位送入位送

38、入AHAH寄存器。寄存器。即(即(FLAGSFLAGS)7-0AH7-0AH。该指令的执行对标志该指令的执行对标志位无影响。位无影响。【例【例4.114.11】标志寄存器传送。】标志寄存器传送。执行前:(执行前:(FLAGSFLAGS)=0485H=0485H,(,(AXAX)=0FFFFH=0FFFFH执行指令:执行指令:LAHFLAHF第第4 4章章 指令系统指令系统(2 2)AHAH送标志指令送标志指令SAHFSAHF语句格式:语句格式:SAHFSAHF功能:将功能:将AHAH的内容送入标志寄存器的低的内容送入标志寄存器的低8 8位,高位,高8 8位不变。位不变。即(即(AHAH) FL

39、AGS7-0. FLAGS7-0.。从该指令功能可看出,从该指令功能可看出,SAHFSAHF为为LAHFLAHF的逆过程。的逆过程。 第第4 4章章 指令系统指令系统(3 3)标志寄存器进栈指令)标志寄存器进栈指令PUSHFPUSHF语句格式:语句格式:PUSHF功能:将标志寄存器的内容压入堆栈。功能:将标志寄存器的内容压入堆栈。即即(FLAGS)(SP)。)。第第4 4章章 指令系统指令系统(4 4)标志寄存器出栈指令)标志寄存器出栈指令POPFPOPF功能:功能: 将栈顶内容弹出送入标志寄存器中。即将栈顶内容弹出送入标志寄存器中。即(SPSP)FLAGSFLAGS。POPFPOPF指令与指

40、令与PUSHFPUSHF指令互为逆过程。指令互为逆过程。【例【例4.124.12】将标志寄存器的单步标志】将标志寄存器的单步标志TFTF置位。置位。PUSHFPUSHF ;(;(FLSGSFLSGS)(SPSP)POP AXPOP AX;(;(SPSP)AXAXOR AXOR AX, 0100H 0100H;设置设置D8=TF=1D8=TF=1PUSH AXPUSH AX;(;(AXAX)(SPSP)POPFPOPF;(;(SPSP)FLAGSFLAGS,即(即(AXAX)FLAGSFLAGS返回本节返回本节第第4 4章章 指令系统指令系统4.3.2 算术运算类指令算术运算类指令1 加法类指令

41、加法类指令2 减运算指令减运算指令3 乘运算指令乘运算指令4 除运算指令除运算指令5 BCD码调整指令码调整指令返回本章首页返回本章首页第第4 4章章 指令系统指令系统1 加法指令加法指令(1)不带进位)不带进位加加法法指令指令ADD(2)带进位加指令带进位加指令ADC(3)加加1指令指令INC第第4 4章章 指令系统指令系统(1 1)不带进位加指令)不带进位加指令ADDADD语句格式:语句格式:ADD OPDADD OPD, OPS OPS功能:将目的操作数与源操作数相加,结果存功能:将目的操作数与源操作数相加,结果存入目的地址中,源地址的内容不改变。入目的地址中,源地址的内容不改变。即(即

42、(OPDOPD)+ +(OPSOPS)OPDOPD。第第4 4章章 指令系统指令系统(2 2)带进位加法指令)带进位加法指令ADCADC语句格式:语句格式:ADC OPDADC OPD,OPSOPS功能:将目的操作数加源操作数再加低位进位,功能:将目的操作数加源操作数再加低位进位,结果送目的地址。结果送目的地址。即即(OPDOPD)+ +(OPSOPS)+CF OPD+CF OPD。【例【例4.134.13】无符号双字加法运算。】无符号双字加法运算。MOVMOVAXAX,4652H4652H;(;(AXAX)=4652H=4652HADDADDAXAX,0F0F0H0F0F0H;(;(AXAX

43、)=3742H=3742H,CF=1CF=1MOVMOVDXDX,0234H0234H;(;(DXDX)=0234H=0234HADCADCDXDX,0F0F0H0F0F0H;(;(DXDX)=0F325H=0F325H,CF=0CF=0返回本节返回本节第第4 4章章 指令系统指令系统(3 3)加)加1 1指令指令 INCINC语句格式:语句格式:INC OPDINC OPD功能:将目的操作数加功能:将目的操作数加1 1,结果送目的地址。即,结果送目的地址。即(OPDOPD)+1OPD+1OPD。INCINC指令是一个单操作数指令,操作数可以是寄指令是一个单操作数指令,操作数可以是寄存器或存储

44、器操作数。存器或存储器操作数。如:如:INC BXINC BX,即(即(BXBX)+1BX+1BX。加加1 1指令可用于对计数器和地址指针进行调整。指令可用于对计数器和地址指针进行调整。 第第4 4章章 指令系统指令系统2 减运算指令减运算指令(1)不带借位减法指令不带借位减法指令SUB(2)带借位减指令带借位减指令 SBB(3)减减1指令指令DEC(4)求补指令求补指令NEG(5)比较指令比较指令 CMP第第4 4章章 指令系统指令系统(1 1)不带借位减法指令)不带借位减法指令SUBSUB语句格式:语句格式:SUB OPDSUB OPD,OPSOPS功能:目的操作数减源操作数,结果存于目的

45、地址,功能:目的操作数减源操作数,结果存于目的地址,源地址内容不变。源地址内容不变。即(即(OPDOPD)()(OPSOPS)OPDOPD【例例4.144.14】减法运算。】减法运算。MOVMOVAX AX ,5678H5678H;(;(AXAX)=5678H=5678HSUBSUBAX AX ,1234H1234H;(;(AXAX)=4444H=4444HMOVMOVBX BX ,3354H3354H;(;(BXBX)=3354H=3354HSUBSUBBX BX ,3340H3340H;(;(BXBX)=0014H=0014H第第4 4章章 指令系统指令系统(2 2)带借位减指令)带借位减

46、指令 SBBSBB语句格式:语句格式:SBB OPD SBB OPD ,OPSOPS功能:目的操作数减源操作数再减低位借功能:目的操作数减源操作数再减低位借位位CFCF,结果送目的地址。结果送目的地址。即(即(OPDOPD)(OPSOPS)CF OPDCF OPD第第4 4章章 指令系统指令系统(3 3)减)减1 1指令指令DECDEC语句格式:语句格式:DEC OPD DEC OPD 功能:将目的操作数减功能:将目的操作数减1 1,结果送目的地址。即,结果送目的地址。即(OPDOPD)1OPD1OPD。DECDEC指令是一个单操作数指令,操作数可以是寄指令是一个单操作数指令,操作数可以是寄存

47、器或存储器操作数。存器或存储器操作数。如:如:DEC CXDEC CX。即(即(CXCX)1CX1CX。减减1 1指令指令DECDEC也一般用于对计数器和地址指针的调也一般用于对计数器和地址指针的调整。整。第第4 4章章 指令系统指令系统(4 4)求补指令)求补指令NEGNEG语句格式:语句格式:NEG OPDNEG OPD功能:将目的操作数的每一位求反(包括符号位)后加功能:将目的操作数的每一位求反(包括符号位)后加1 1,结果送目的地址。结果送目的地址。即(即(OPDOPD)+1OPD+1OPD。【例例4.154.15】求补运算。】求补运算。MOVMOVAXAX,0FF64H0FF64HN

48、EGNEGALAL;(;(AXAX)=0FF9CH=0FF9CHSUBSUBALAL,9DH9DH;(;(AXAX)=0FFFFH=0FFFFHNEGNEGAXAX;(;(AXAX)=0001H=0001HDECDECALAL;(;(AXAX)=0000H=0000HNEGNEGAXAX;(;(AXAX)=0000H=0000H第第4 4章章 指令系统指令系统(5 5)比较指令)比较指令 CMPCMP语句格式:语句格式:CMP OPDCMP OPD,OPSOPS功能:目的操作数减源操作数,结果只影响标志位,不送入功能:目的操作数减源操作数,结果只影响标志位,不送入目的地址。目的地址。即(即(O

49、PDOPD)()(OPSOPS)。)。【例【例4.164.16】比较】比较ALAL的内容数值大小。的内容数值大小。CMPCMPALAL,5050;(;(ALAL)5050JBJBBELOWBELOW ;(;(ALAL)50=50=50,(,( AL AL)50AL50ALINCINCAHAH;(;(AHAH)+1AH+1AHBELOWBELOW:返回本节返回本节第第4 4章章 指令系统指令系统3 乘法运算指令乘法运算指令(1)无符号数乘法指令无符号数乘法指令MUL(2)有符号乘指令)有符号乘指令IMUL第第4 4章章 指令系统指令系统(1 1)无符号数乘法指令)无符号数乘法指令MULMUL语句

50、格式:语句格式: MUL OPSMUL OPS功能:功能: 若是字节数据相乘,(若是字节数据相乘,(ALAL)与与OPSOPS相乘得到相乘得到字数据存入字数据存入AXAX中;若是字数据相乘,则(中;若是字数据相乘,则(AXAX)与与OPSOPS相乘得到双字数据,高字存入相乘得到双字数据,高字存入DXDX、低字存入低字存入AXAX中。中。即字节乘法:(即字节乘法:(ALAL)* * (OPSOPS) AX AX,字乘法:字乘法:(AXAX) * * (OPSOPS) DX DX,AX AX 【例【例2.252.25】无符号数】无符号数0 0A3HA3H与与1111H H相乘相乘。MOVMOVAL

51、AL,0A3H0A3H;(;(ALAL)=0A3H=0A3HMOVMOVBLBL, 11H 11H;(;(BLBL)=11H=11HMULMULBLBL ;(;(AXAX)=0AD3H=0AD3H第第4 4章章 指令系统指令系统(2 2)有符号乘指令)有符号乘指令IMULIMUL语句格式:语句格式:IMUL OPSIMUL OPS功能:字节乘法:(功能:字节乘法:(ALAL)* *(OPSOPS)AXAX,字乘法:(字乘法:(AXAX)* *(OPSOPS)DXDX、AXAX。IMULIMUL指令除计算对象是带符号二进制数外,其他都与指令除计算对象是带符号二进制数外,其他都与MULMUL一样,

52、一样,但计算结果不同。但计算结果不同。 【例【例4.174.17】有符号数】有符号数0 0B4HB4H与与1111H H相乘。相乘。MOVMOVALAL,0B4H0B4H;(;(ALAL)=B4H=B4HMOVMOVBLBL,11H11H;(;(BLBL)=11H=11HIMULIMULBLBL ;(;(AXAX)=0FAF4H=0FAF4H返回本节返回本节第第4 4章章 指令系统指令系统4 除运算指令除运算指令(1)无符号除指令无符号除指令DIV(2 2)有符号)有符号除指令除指令IDIV(3)符号扩展指令符号扩展指令第第4 4章章 指令系统指令系统(1 1)无符号除指令)无符号除指令DIV

53、DIV语句格式:语句格式:DIV OPSDIV OPS功能:功能: 字节除法(字节除法(AXAX)/ /(OPSOPS) AL AL(商)、商)、AHAH(余数)余数) 字除法(字除法(DXDX、AXAX)/ /(OPSOPS) AX AX(商)、商)、DXDX(余数)余数)【例【例4.184.18】写出实现无符号数】写出实现无符号数04000400H / 0B4HH / 0B4H运算的程运算的程序段。序段。MOVMOVAXAX,0400H0400H ;(;(AXAX)=0400H=0400HMOVMOVBLBL,0B4H0B4H;(;(BLBL)=0B4H=0B4HDIVDIVBLBL ;商

54、(商(ALAL)=05H=05H,余数(余数(AHAH)=7CH =7CH 第第4 4章章 指令系统指令系统(2 2)有符号有符号除指令除指令IDIVIDIV语句格式:语句格式:IDIV OPSIDIV OPS功能:功能:字节除法:(字节除法:(AXAX)/ /(OPSOPS) AL AL(商)、商)、AHAH(余数)余数)字除法:(字除法:(DXDX,AXAX)/ /(OPSOPS) AX AX (商)、商)、DXDX(余数)余数)除法指令除法指令DIVDIV和和IDIVIDIV虽然对标志的影响未定义,但可产生溢出。虽然对标志的影响未定义,但可产生溢出。【例【例4.194.19】写出实现有符

55、号数】写出实现有符号数04000400H /0B4HH /0B4H运算的程序段。运算的程序段。MOVMOVAXAX,0400H0400H;(;(AXAX)=0400H=0400HMOVMOVBXBX,0B4H0B4H;(;(BXBX)=0B4H=0B4HIDIVIDIVBXBX ;(;(ALAL)=0F3H=0F3H,(,(AHAH)=24H=24H返回本节返回本节第第4 4章章 指令系统指令系统(3) 符号扩展指令符号扩展指令 1)字节转换成字指令字节转换成字指令CBW2)将字转换成双字指令将字转换成双字指令CWD第第4 4章章 指令系统指令系统1 1)字节转换成字指令)字节转换成字指令CB

56、WCBW语句格式:语句格式:CBWCBW功能:将功能:将ALAL中的符号位数据扩展至中的符号位数据扩展至AHAH。【例例4.204.20】将字节数据扩展成字数据。】将字节数据扩展成字数据。MOVMOVALAL,0A5H0A5H;(;(ALAL)=0A5H=0A5HCBWCBW ;(;(AXAX)=0FFA5H=0FFA5HADDADDALAL,70H70H;(;(ALAL)=25H=25HCBWCBW ;(;(AXAX)=0025H=0025H第第4 4章章 指令系统指令系统2 2)将字转换成双字指令)将字转换成双字指令CWDCWD语句格式:语句格式:CWDCWD功能:将功能:将AXAX中的符

57、号位数据扩展至中的符号位数据扩展至DX DX 。【例例4.214.21】将字数据扩展成双字数据。】将字数据扩展成双字数据。MOVMOVDXDX, 0 0;(;(DXDX)=0=0MOVMOVAXAX, 0FFABH 0FFABH;(;(AXAX)=0FFABH=0FFABHCWDCWD;(;(DXDX)=0FFFFH =0FFFFH (AXAX)=0FFABH=0FFABH返回本节返回本节第第4 4章章 指令系统指令系统5 十进制调整指令十进制调整指令(1)加法的十进制调整指令加法的十进制调整指令DAA DAA (2)减法的十进制调整指令减法的十进制调整指令DASDAS(3)加法的非压缩)加法

58、的非压缩BCD码调整指令码调整指令AAA(4)减)减法的非压缩法的非压缩BCD码调整指令码调整指令AAS第第4 4章章 指令系统指令系统(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)= =(ALAL)+60H+60H且(且(CFCF)=1=1。同时,同时,SFSF、ZF

59、ZF、PFPF均有影响。均有影响。【例【例2.312.31】压缩】压缩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=96H ;实现压缩实现压缩BCDBCD码加法:码加法:68+28=966

60、8+28=96第第4 4章章 指令系统指令系统(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。同时同时SFSF、ZFZF、PFPF均受影响。均受影响。【例【例4.204.20】压缩】压缩BCDBCD码的减法运算。码的减法运算。MOVMO

温馨提示

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

评论

0/150

提交评论