计算机指令系统_第1页
计算机指令系统_第2页
计算机指令系统_第3页
计算机指令系统_第4页
计算机指令系统_第5页
已阅读5页,还剩129页未读 继续免费阅读

下载本文档

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

文档简介

1、第第4 4章章 指令系统指令系统 计算机指令系统计算机指令系统 本章主要教学内容本章主要教学内容 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 指令寻址方式

3、指令寻址方式 4.2.1 寻寻址方式的基本概念址方式的基本概念 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】 【例【例2.5】MOV AX, 10 执行后(执行后(AX)=? 该例中源操作数为立即寻址方式,立即数为该例中源操作数为立即寻址方式,立即数为10,存,存 放在指令的下一单元。放在指令的

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

7、V BX,5678H ADD AX,BX 该程序中该程序中MOV指令为数据传送指令操作符,指令为数据传送指令操作符,ADD指令指令 为加法指令操作符,三条指令皆为双操作数指令。第一、二为加法指令操作符,三条指令皆为双操作数指令。第一、二 条指令条指令AX、BX皆为目的操作数地址,为寄存器寻址方式。皆为目的操作数地址,为寄存器寻址方式。 第三条指令中,第三条指令中,AX为目的操作数地址,为目的操作数地址,BX为源操作数地址。为源操作数地址。 源地址和目的地址皆为寄存器寻址方式。源地址和目的地址皆为寄存器寻址方式。 第第4 4章章 指令系统指令系统 图形表示:图形表示: 执行:执行:1234HAX

8、 5678HBX (AX)+(BX)AX 执行后:(执行后:(AX)=68ACH,(,(BX)=5678H 返回本节返回本节 第第4 4章章 指令系统指令系统 3. 3. 存储器寻址存储器寻址 如果操作码所需操作数存放在内存储器中,则指令中如果操作码所需操作数存放在内存储器中,则指令中 需要给出操作数的地址信息。为了提高程序的灵活性,需要给出操作数的地址信息。为了提高程序的灵活性, 8086指令系统提供了多种存储器寻址方式指令系统提供了多种存储器寻址方式 (1)直接寻址 (2)寄存器间接寻址 (3)寄存器相对寻址 (4)基址变址寻址 (5)关于段跨跃前缀 第第4 4章章 指令系统指令系统 (1

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

10、X)=? 图形表示:图形表示: 执行:(执行:(32000H)AX 执行后:(执行后:(AX)=4545H返回本节返回本节 第第4 4章章 指令系统指令系统 (2) 寄存器间接寻址寄存器间接寻址 寄存器间接寻址方式中,寄存器的内容为寄存器间接寻址方式中,寄存器的内容为 操作数的偏移地址操作数的偏移地址EAEA,操作数在存储器中。操作数在存储器中。 汇编格式:汇编格式: RR 功能:操作数存放在存储器,寄存器功能:操作数存放在存储器,寄存器R R存放存放 操作数的偏移地址操作数的偏移地址EAEA。 第第4 4章章 指令系统指令系统 寄存器间接寻址示意图:寄存器间接寻址示意图: 例如:例如:MOV

11、 AX,BX 若(若(DS)2000H,(,(BX)1000H,物理地址物理地址20000H 1000H21000H。指令执行前,(指令执行前,(AX)2030H,(,(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作间址寄存

12、器。 BX BX作间址寄存器。 BP BP作间址寄存器。 第第4 4章章 指令系统指令系统 执行指令:执行指令:MOV AX MOV AX ,BP BP 执行后:(执行后:(AXAX)=?=?,(,(BPBP)=?=?,(,(SSSS)=?=?, (20030H20030H)=?=? 图形表示如下:图形表示如下: 【例【例4.44.4】寄存器和存储器内容分别为:】寄存器和存储器内容分别为: (AXAX)=0=0,(,(BPBP)=0030H=0030H,(,(SSSS)=2000H=2000H, (20030H20030H)=1234H=1234H 返回本节返回本节 第第4 4章章 指令系统指

13、令系统 (3) 寄存器相对寻址寄存器相对寻址 寄存器相对寻址方式是在指令中给定一个基址寄存寄存器相对寻址方式是在指令中给定一个基址寄存 器(或变址寄存器)名和一个器(或变址寄存器)名和一个8 8位或位或1616位的相对偏移量,位的相对偏移量, 两者之和作为操作数的有效地址。对两者之和作为操作数的有效地址。对BXBX、SISI、DIDI这三个这三个 间址寄存器,指示的是数据段中的数据,而用间址寄存器,指示的是数据段中的数据,而用BPBP作间址作间址 寄存器,则指示的是堆栈段中的数据。寄存器,则指示的是堆栈段中的数据。 汇编格式:汇编格式:XRXR(X X表示位移量,是表示位移量,是8 8位或位或

14、1616位二进位二进 制补码表示的有符号数)。制补码表示的有符号数)。 功能:操作数存放在存储器,寄存器功能:操作数存放在存储器,寄存器R R的内容加位移量的内容加位移量X X 为操作数的偏移地址为操作数的偏移地址EAEA。 第第4 4章章 指令系统指令系统 偏移地址偏移地址EA计算方法如下计算方法如下: 第第4 4章章 指令系统指令系统 【例【例4.54.5】 设执行前:设执行前: (AX)=0040H,(,(BX)=0030H, (DS)=2000H,(,(20036H)=0050H 执行指执行指令:令:ADD 6BX,AX 执行后:执行后:(AX)=?,(,(BX)=?,(,(DS)=?

15、, (20036H)=? 图形表示如下:图形表示如下: 第第4 4章章 指令系统指令系统 执行:(执行:(20036H)+(AX) 20036H 执行后:(执行后:(AX)=0040H,(,(BX)=0030H,(,(DS) =2000H,(,(20036H)=0090H。 返回本节返回本节 第第4 4章章 指令系统指令系统 (4) 基址变址寻址基址变址寻址 基址变址寻址方式是在指令中给出一个基址寄存器名基址变址寻址方式是在指令中给出一个基址寄存器名 和一个变址寄存器名,两者内容之和作为操作数的有效地和一个变址寄存器名,两者内容之和作为操作数的有效地 址。基址寄存器为址。基址寄存器为BXBX或

16、或BPBP,变址寄存器为变址寄存器为SISI或或DIDI,但指令但指令 中不能同时出现两个基址寄存器或两个变址寄存器。如果中不能同时出现两个基址寄存器或两个变址寄存器。如果 基址寄存器为基址寄存器为BXBX,则段寄存器使用则段寄存器使用DSDS;如果基址寄存器用如果基址寄存器用 BPBP,则段寄存器用则段寄存器用SSSS。 汇编格式:汇编格式: BR+IR BR+IR 功能:操作数存放在存储器,功能:操作数存放在存储器,BRBR的内容加的内容加IRIR的内容加的内容加 位移量位移量X X是操作数的偏移地址是操作数的偏移地址EAEA。 第第4 4章章 指令系统指令系统 操作数偏移地址操作数偏移地

17、址EA计算方法如下计算方法如下 返回本节返回本节 第第4 4章章 指令系统指令系统 【例【例4.64.6】 例如例如 MOV AL,BXSI(MOV AL,BXSI) 若指令执行前,(若指令执行前,(DS)1000H,(,(BX) 0010H,(,(SI)0002H,(,(10012H)45H 则则EA(BX)()(SI)0012H,PA(DS) 10HEA10012H 指令执行后(指令执行后(AL)45H。 返回本节返回本节 第第4 4章章 指令系统指令系统 (5) 跨段问题跨段问题 按前述规定:若选用按前述规定:若选用BPBP作间址基址寄存器、变址寄存器作间址基址寄存器、变址寄存器 或基址

18、寄存器,则操作数在堆栈段,操作数的物理地址或基址寄存器,则操作数在堆栈段,操作数的物理地址PAPA由由 堆栈段寄存器堆栈段寄存器SSSS的内容左移的内容左移4 4位与偏移地址位与偏移地址EAEA相加后形成;否相加后形成;否 则,操作数在数据段,操作数的物理地址则,操作数在数据段,操作数的物理地址PAPA由数据段寄存器由数据段寄存器 DSDS的内容左移的内容左移4 4位与偏移位与偏移EAEA相加后形成。该规定为系统默认状相加后形成。该规定为系统默认状 态。当要否定默认状态,到非约定段寻找操作数时,必须用态。当要否定默认状态,到非约定段寻找操作数时,必须用 跨段前缀指明操作数的段寄存器名。跨段前缀

19、指明操作数的段寄存器名。 汇编格式:段寄存器名:操作数地址。汇编格式:段寄存器名:操作数地址。 功能:段寄存器名指明操作数属哪个段。功能:段寄存器名指明操作数属哪个段。 第第4 4章章 指令系统指令系统 【例【例4.74.7】跨段前缀示例。】跨段前缀示例。 MOVMOVAXAX,DSDS:BP BP MOVMOVCXCX,SSSS:SI SI 该例中,该例中,DSDS:,:,SSSS:均为跨段前缀,此时默认均为跨段前缀,此时默认 状态无效,操作数的物理地址状态无效,操作数的物理地址PAPA由段寄存器内由段寄存器内 容左移容左移4 4位加偏移位加偏移EAEA形成。上述形成。上述2 2条指令的源操

20、条指令的源操 作数物理地址分别为:作数物理地址分别为: PA1 =PA1 =(DSDS)左移左移4 4位位+BPBP PA2 =PA2 =(SSSS)左移左移4 4位位+SISI 返回本节返回本节 第第4 4章章 指令系统指令系统 4.2.3 4.2.3 I/OI/O端口寻址方式端口寻址方式 8086CPU采用独立编址的采用独立编址的I/O端口,可以最多访问端口,可以最多访问64K个字节端口个字节端口 或或32K个字端口,用专门的个字端口,用专门的IN指令和指令和OUT指令访问。指令访问。I/O端口寻址只用端口寻址只用 于这两种指令中。寻址方式有如下两种。于这两种指令中。寻址方式有如下两种。

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

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

23、逻辑运算与移位类指令 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章章 指令系统指令系统 (1 1)传送指令)传送指令MOVMOV 语句格式:

24、语句格式:MOV OPDMOV OPD,OPSOPS 功能:将源操作数传送入目的地址,源功能:将源操作数传送入目的地址,源 地址内容不变。即(地址内容不变。即(OPSOPS)OPDOPD。 下图下图4.14.1描述了描述了MOVMOV指令在传送数据时允指令在传送数据时允 许传送的路径及类型。许传送的路径及类型。 第第4 4章章 指令系统指令系统 图图4.1 MOV指令所允许的数据传送路径及类型指令所允许的数据传送路径及类型 第第4 4章章 指令系统指令系统 MOVMOV指令的形式有如下几种:指令的形式有如下几种: 1)从通用寄存器到通用寄存器)从通用寄存器到通用寄存器 MOV reg1,reg

25、2 2)立即数传送到通用寄存器)立即数传送到通用寄存器 MOV reg ,data 3)通用寄存器和存储单元之间)通用寄存器和存储单元之间 MOV mem (reg),reg (mem) 4)立即数传送到存储单元立即数传送到存储单元 MOV mem, data 5)段寄存器与通用寄存器间的数据传送段寄存器与通用寄存器间的数据传送 MOV seg,reg 或或 MOV reg, seg 6)段寄存器与存储单元间的数据传送段寄存器与存储单元间的数据传送 MOV seg,mem 或或 MOV mem, seg 第第4 4章章 指令系统指令系统 【例【例4.84.8】存储器与寄存器间数据传送。存储器与

26、寄存器间数据传送。 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是个字变量是个字变量 MOV ES ,BUF 第第4 4章章

27、指令系统指令系统 2 2数据交换指令数据交换指令XCHGXCHG 语句格式:语句格式:XCHG OPD,OPS 功能:将源地址与目的地址中的内容互换。即(功能:将源地址与目的地址中的内容互换。即(OPD)OPS, (OPS)OPD。 【例例4.9】寄存器与存储器之间数据交换寄存器与存储器之间数据交换。 MOVAX,5678H;(;(AX)=5678H MOVBX,0FFFFH;(;(BX)=0FFFFH XCHG AX,BX;(;(AX)=0FFFFH ,(,( BX)=5678H 第第4 4章章 指令系统指令系统 (2 2) 堆栈操作指令堆栈操作指令 1)进栈指令进栈指令PUSH 2)出栈指

28、令出栈指令POP 第第4 4章章 指令系统指令系统 1 1)进栈指令)进栈指令PUSHPUSH 语句格式:语句格式: PUSH OPSPUSH OPS 功能:将寄存器、段寄存器或存储器中的一功能:将寄存器、段寄存器或存储器中的一 个字数据压入堆栈,堆栈指针减个字数据压入堆栈,堆栈指针减2 2。 即:(即:(SPSP)SPSP(OPSOPS)158SP158SP (SPSP)SPSP(OPSOPS)70SP70SP 第第4 4章章 指令系统指令系统 2 2)出栈指令)出栈指令POPPOP 语句格式:语句格式: POP OPDPOP OPD 功能:功能: 将栈顶元素弹出送至某一寄存器、段寄存器将栈

29、顶元素弹出送至某一寄存器、段寄存器 (除(除CSCS外)或存储器,堆栈指针加外)或存储器,堆栈指针加2 2。 从从POPPOP指令功能可看出,该指令为指令功能可看出,该指令为PUSHPUSH指令的逆过程。指令的逆过程。 即:(即:( SPSP)(OPDOPD)7070(SPSP)+ +SP SP (SPSP)(OPDOPD)158158 (SPSP)+ +SPSP 返回本节返回本节 第第4 4章章 指令系统指令系统 2.2.累加器专用传送指令累加器专用传送指令 (1)输入)输入/输出指令输出指令 (2)XLAT查表指令查表指令 第第4 4章章 指令系统指令系统 1 1)输入指令)输入指令INI

30、N 输入指令用来从指定的外设寄存器取信息送入输入指令用来从指定的外设寄存器取信息送入 累加器。它有四种形式:累加器。它有四种形式: 语句格式:语句格式:ININALAL,PORT PORT 功能:(功能:(PORTPORT)ALAL 语句格式:语句格式:ININAXAX,PORTPORT 功能:(功能:(PORTPORT)AXAX 语句格式:语句格式:ININALAL,DXDX 功能:(功能:( DXDX)ALAL 语句格式:语句格式:ININAXAX,DXDX 功能:(功能:( DXDX)ALAL 第第4 4章章 指令系统指令系统 2 2)输出指令)输出指令OUTOUT 输出指令用来把累加器

31、的内容送往指定的外设输出指令用来把累加器的内容送往指定的外设 存储器,它有四种形式:存储器,它有四种形式: 语句格式:语句格式:OUTPORT,AL 功能:(功能:(AL)PORT 语句格式:语句格式:OUTPORT,AX 功能:(功能:(AX)PORT 语句格式:语句格式:OUTDX,AL 功能:(功能:(AL)DX 语句格式:语句格式:OUTDX,AX 功能:(功能:(AX)DX 返回本节返回本节 第第4 4章章 指令系统指令系统 (2 2)查表转换指令)查表转换指令 XLATXLAT 语句格式:语句格式:XLAT OPSXLAT OPS或或XLATXLAT 功能:将(功能:将(BXBX)

32、为首址(为首址(ALAL)为位移量为位移量 的字节存储单元中的数据送的字节存储单元中的数据送ALAL寄存器。寄存器。 即(即( BX+ALBX+AL)ALAL。 返回本节返回本节 第第4 4章章 指令系统指令系统 3 3 地址传送指令地址传送指令 (1 1)传送有效地址指令)传送有效地址指令 LEALEA (2 2)传送有效地址及数据段首址指令)传送有效地址及数据段首址指令LDSLDS (3 3)传送有效地址及附加数据段指令)传送有效地址及附加数据段指令LESLES 第第4 4章章 指令系统指令系统 (1 1)传送有效地址指令)传送有效地址指令 LEALEA 语句格式:语句格式: LEA OP

33、DLEA OPD,OPSOPS 功能:主存按源地址的寻址方式计算偏移地址,功能:主存按源地址的寻址方式计算偏移地址, 将偏移地址送入指定寄存器。将偏移地址送入指定寄存器。 【例【例4.104.10】主存偏移地址的获取。主存偏移地址的获取。 MOV BXMOV BX,0100H0100H ;(;(BXBX)=0100H=0100H MOV SIMOV SI, 0210H 0210H;(;(SISI) =0210H =0210H LEA BXLEA BX,1234BX+SI1234BX+SI; (BXBX)=1544H=1544H 第第4 4章章 指令系统指令系统 (2 2)传送有效地址及数据段首

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

35、本节返回本节 第第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位送入位送入AHAH寄存器。寄存器。 即(即(FLAGSFLAGS)7-0AH

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

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

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

39、令 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 功能:将目的操作数与源操作数相加,结果存功能:将目的操作数与源操作数相加,结果存 入目的地址中,源地址的内容不改变。入目的地址中,源地

40、址的内容不改变。 即(即(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=4652H ADDADDAXA

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

42、操作数可以是寄指令是一个单操作数指令,操作数可以是寄 存器或存储器操作数。存器或存储器操作数。 如:如: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 语句格式:语句格

43、式:SUB OPDSUB OPD,OPSOPS 功能:目的操作数减源操作数,结果存于目的地址,功能:目的操作数减源操作数,结果存于目的地址, 源地址内容不变。源地址内容不变。 即(即(OPDOPD)()(OPSOPS)OPDOPD 【例例4.144.14】减法运算。】减法运算。 MOVMOVAX AX ,5678H5678H;(;(AXAX)=5678H=5678H SUBSUBAX AX ,1234H1234H;(;(AXAX)=4444H=4444H MOVMOVBX BX ,3354H3354H;(;(BXBX)=3354H=3354H SUBSUBBX BX ,3340H3340H;(

44、;(BXBX)=0014H=0014H 第第4 4章章 指令系统指令系统 (2 2)带借位减指令)带借位减指令 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,结果送目的地址。即,结果送目的地址。即 (

45、OPDOPD)1OPD1OPD。 DECDEC指令是一个单操作数指令,操作数可以是寄指令是一个单操作数指令,操作数可以是寄 存器或存储器操作数。存器或存储器操作数。 如:如:DEC CXDEC CX。即(即(CXCX)1CX1CX。 减减1 1指令指令DECDEC也一般用于对计数器和地址指针的调也一般用于对计数器和地址指针的调 整。整。 第第4 4章章 指令系统指令系统 (4 4)求补指令)求补指令NEGNEG 语句格式:语句格式:NEG OPDNEG OPD 功能:将目的操作数的每一位求反(包括符号位)后加功能:将目的操作数的每一位求反(包括符号位)后加1 1, 结果送目的地址。结果送目的地

46、址。 即(即(OPDOPD)+1OPD+1OPD。 【例例4.154.15】求补运算。】求补运算。 MOVMOVAXAX,0FF64H0FF64H NEGNEGALAL;(;(AXAX)=0FF9CH=0FF9CH SUBSUBALAL,9DH9DH;(;(AXAX)=0FFFFH=0FFFFH NEGNEGAXAX;(;(AXAX)=0001H=0001H DECDECALAL;(;(AXAX)=0000H=0000H NEGNEGAXAX;(;(AXAX)=0000H=0000H 第第4 4章章 指令系统指令系统 (5 5)比较指令)比较指令 CMPCMP 语句格式:语句格式:CMP OP

47、DCMP OPD,OPSOPS 功能:目的操作数减源操作数,结果只影响标志位,不送入功能:目的操作数减源操作数,结果只影响标志位,不送入 目的地址。目的地址。 即(即(OPDOPD)()(OPSOPS)。)。 【例【例4.164.16】比较】比较ALAL的内容数值大小。的内容数值大小。 CMPCMPALAL,5050;(;(ALAL)5050 JBJBBELOWBELOW ;(;(ALAL)50=50=50,(,( AL AL)50AL50AL INCINCAHAH;(;(AHAH)+1AH+1AH BELOWBELOW: 返回本节返回本节 第第4 4章章 指令系统指令系统 3 乘法运算指令乘

48、法运算指令 (1)无符号数乘法指令无符号数乘法指令MUL (2)有符号乘指令)有符号乘指令IMUL 第第4 4章章 指令系统指令系统 (1 1)无符号数乘法指令)无符号数乘法指令MULMUL 语句格式:语句格式: MUL OPSMUL OPS 功能:功能: 若是字节数据相乘,(若是字节数据相乘,(ALAL)与与OPSOPS相乘得到相乘得到 字数据存入字数据存入AXAX中;若是字数据相乘,则(中;若是字数据相乘,则(AXAX)与与 OPSOPS相乘得到双字数据,高字存入相乘得到双字数据,高字存入DXDX、低字存入低字存入AXAX 中。中。 即字节乘法:(即字节乘法:(ALAL)* * (OPSO

49、PS) AX AX,字乘法:字乘法: (AXAX) * * (OPSOPS) DX DX,AX AX 【例【例2.252.25】无符号数】无符号数0 0A3HA3H与与1111H H相乘相乘。 MOVMOVALAL,0A3H0A3H;(;(ALAL)=0A3H=0A3H MOVMOVBLBL, 11H 11H;(;(BLBL)=11H=11H MULMULBLBL ;(;(AXAX)=0AD3H=0AD3H 第第4 4章章 指令系统指令系统 (2 2)有符号乘指令)有符号乘指令IMULIMUL 语句格式:语句格式:IMUL OPSIMUL OPS 功能:字节乘法:(功能:字节乘法:(ALAL)

50、* *(OPSOPS)AXAX,字乘法:(字乘法:(AXAX)* * (OPSOPS)DXDX、AXAX。 IMULIMUL指令除计算对象是带符号二进制数外,其他都与指令除计算对象是带符号二进制数外,其他都与MULMUL一样,一样, 但计算结果不同。但计算结果不同。 【例【例4.174.17】有符号数】有符号数0 0B4HB4H与与1111H H相乘。相乘。 MOVMOVALAL,0B4H0B4H;(;(ALAL)=B4H=B4H MOVMOVBLBL,11H11H;(;(BLBL)=11H=11H IMULIMULBLBL ;(;(AXAX)=0FAF4H=0FAF4H 返回本节返回本节 第

51、第4 4章章 指令系统指令系统 4 除运算指令除运算指令 (1)无符号除指令无符号除指令DIV (2 2)有符号)有符号除指令除指令IDIV (3)符号扩展指令符号扩展指令 第第4 4章章 指令系统指令系统 (1 1)无符号除指令)无符号除指令DIVDIV 语句格式:语句格式:DIV OPSDIV OPS 功能:功能: 字节除法(字节除法(AXAX)/ /(OPSOPS) AL AL(商)、商)、AHAH(余数)余数) 字除法(字除法(DXDX、AXAX)/ /(OPSOPS) AX AX(商)、商)、DXDX(余数)余数) 【例【例4.184.18】写出实现无符号数】写出实现无符号数0400

52、0400H / 0B4HH / 0B4H运算的程运算的程 序段。序段。 MOVMOVAXAX,0400H0400H ;(;(AXAX)=0400H=0400H MOVMOVBLBL,0B4H0B4H;(;(BLBL)=0B4H=0B4H DIVDIVBLBL ;商(商(ALAL)=05H=05H,余数(余数(AHAH)=7CH =7CH 第第4 4章章 指令系统指令系统 (2 2)有符号有符号除指令除指令IDIVIDIV 语句格式:语句格式:IDIV OPSIDIV OPS 功能:功能: 字节除法:(字节除法:(AXAX)/ /(OPSOPS) AL AL(商)、商)、AHAH(余数)余数)

53、字除法:(字除法:(DXDX,AXAX)/ /(OPSOPS) AX AX (商)、商)、DXDX(余数)余数) 除法指令除法指令DIVDIV和和IDIVIDIV虽然对标志的影响未定义,但可产生溢出。虽然对标志的影响未定义,但可产生溢出。 【例【例4.194.19】写出实现有符号数】写出实现有符号数04000400H /0B4HH /0B4H运算的程序段。运算的程序段。 MOVMOVAXAX,0400H0400H;(;(AXAX)=0400H=0400H MOVMOVBXBX,0B4H0B4H;(;(BXBX)=0B4H=0B4H IDIVIDIVBXBX ;(;(ALAL)=0F3H=0F3

54、H,(,(AHAH)=24H=24H 返回本节返回本节 第第4 4章章 指令系统指令系统 (3) 符号扩展指令符号扩展指令 1)字节转换成字指令字节转换成字指令CBW 2)将字转换成双字指令将字转换成双字指令CWD 第第4 4章章 指令系统指令系统 1 1)字节转换成字指令)字节转换成字指令CBWCBW 语句格式:语句格式:CBWCBW 功能:将功能:将ALAL中的符号位数据扩展至中的符号位数据扩展至AHAH。 【例例4.204.20】将字节数据扩展成字数据。】将字节数据扩展成字数据。 MOVMOVALAL,0A5H0A5H;(;(ALAL)=0A5H=0A5H CBWCBW ;(;(AXAX

55、)=0FFA5H=0FFA5H ADDADDALAL,70H70H;(;(ALAL)=25H=25H CBWCBW ;(;(AXAX)=0025H=0025H 第第4 4章章 指令系统指令系统 2 2)将字转换成双字指令)将字转换成双字指令CWDCWD 语句格式:语句格式:CWDCWD 功能:将功能:将AXAX中的符号位数据扩展至中的符号位数据扩展至DX DX 。 【例例4.214.21】将字数据扩展成双字数据。】将字数据扩展成双字数据。 MOVMOVDXDX, 0 0;(;(DXDX)=0=0 MOVMOVAXAX, 0FFABH 0FFABH;(;(AXAX)=0FFABH=0FFABH

56、CWDCWD;(;(DXDX)=0FFFFH =0FFFFH (AXAX)=0FFABH=0FFABH 返回本节返回本节 第第4 4章章 指令系统指令系统 5 十进制调整指令十进制调整指令 (1)加法的十进制调整指令加法的十进制调整指令DAA DAA (2)减法的十进制调整指令减法的十进制调整指令DASDAS (3)加法的非压缩)加法的非压缩BCD码调整指令码调整指令AAA (4)减)减法的非压缩法的非压缩BCD码调整指令码调整指令AAS 第第4 4章章 指令系统指令系统 (1 1)加法的十进制调整指令)加法的十进制调整指令DAA DAA 语句格式:语句格式:DAADAA 功能:如果功能:如果

57、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、ZFZF、PFPF均有影响。均有影响。 【例【例2.312.31】压缩】压缩BCDBCD码的加法运算。码的加法运算。 MOV ALMOV AL,68H68H ;(;(ALAL)=68H=68H,表示压缩表示压缩BCDBCD码码6868 MOV BLMOV

58、 BL,28H28H ;(;(BLBL)=28H=28H,表示压缩表示压缩BCDBCD码码2828 ADD ALADD AL,BLBL;二进制加法:(二进制加法:(ALAL)=68H+28H=90H=68H+28H=90H DAADAA ;十进制调整:(十进制调整:(ALAL)=96H=96H ;实现压缩实现压缩BCDBCD码加法:码加法:68+28=9668+28=96 第第4 4章章 指令系统指令系统 (2 2)减法的十进制调整指令)减法的十进制调整指令DASDAS 语句格式:语句格式:DASDAS 功能:如果(功能:如果(AFAF)=1=1或或ALAL寄存器中低寄存器中低4 4位大于位大

59、于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码的减法运算。码的减法运算。 MOVMOVALAL,68H 68H ;(;(ALAL)=68H=68H,表示压缩表示压缩BCDBCD码码6868 MOVMOVBLBL,28H 28H ;(;(BLBL)=28H=28H,表示压缩表示压缩BCDBCD码码2828 S

60、UBSUBALAL,BLBL ;二进制减法:(二进制减法:(ALAL)=68H=68H 28H=40H28H=40H DASDAS ;十进制调整:(十进制调整:(ALAL)=40H=40H ;实现压缩实现压缩BCDBCD码减法:码减法:686828=4028=40 第第4 4章章 指令系统指令系统 (3)加法的非压缩)加法的非压缩BCD码调整指令码调整指令AAA 语句格式:语句格式:AAA 功能:如果功能:如果AL的低的低4位大于位大于9或(或(AF)=1,则:则: (AL)=(AL)+6 (AH)=(AH)+1 (AF)=(CF)=1 且且AL高高4位清零。位清零。 否则:(否则:(CF)=

温馨提示

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

评论

0/150

提交评论