《计算机组成原理指令系统.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理指令系统.ppt(161页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、指令系统指令系统4.14.1寻址方式寻址方式寻址方式寻址方式4.1.14.1.1与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式4.1.24.1.2与转移地址有关的寻址方式与转移地址有关的寻址方式与转移地址有关的寻址方式与转移地址有关的寻址方式 第第4章章4.24.2指令系统指令系统指令系统指令系统 4.2.14.2.1数据传送指令数据传送指令数据传送指令数据传送指令4.2.24.2.2算术运算指令算术运算指令算术运算指令算术运算指令4.2.34.2.3逻辑指令逻辑指令逻辑指令逻辑指令4.2.44.2.4串处理指令串处理指令串处理指令串处理指令4.2.54.2.
2、5控制转移指令控制转移指令控制转移指令控制转移指令4.2.64.2.6处理器控制指令处理器控制指令处理器控制指令处理器控制指令u掌握掌握8086 CPU8086 CPU的寻址方式的寻址方式 u掌握汇编语言的指令系统掌握汇编语言的指令系统教教教教 学学学学 要要要要 求求求求 v指令的功能指令的功能该指令能够实现何种操作。通常指令助该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式。记符就是指令功能的英文单词或其缩写形式。v指令支持的寻址方式指令支持的寻址方式该指令中的操作数可以采用何该指令中的操作数可以采用何种寻址方式。种寻址方式。v指令对标志的影响指令对标志的影响该指令
3、执行后是否对各个标志位该指令执行后是否对各个标志位有影响,以及如何影响。有影响,以及如何影响。v其他方面其他方面该指令其他需要特别注意的地方,如指令该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存执行时的约定设置、必须预置的参数、隐含使用的寄存器等。器等。学习指令的要点学习指令的要点学习指令的要点学习指令的要点第第 4.1节节指令基本格式指令基本格式一个一个一个或几个一个或几个一条指令实际上包括两种信息即操作码和地址码。一条指令实际上包括两种信息即操作码和地址码。操操作作码码用用来来表表示示该该指指令令所所要要完完成成的的操操作作,其其长长度度取取决决于于指
4、指令系统中的指令条数;令系统中的指令条数;地地址址码码用用来来描描述述该该指指令令的的操操作作对对象象,或或者者直直接接给给出出操操作作数数或或者者指指出出操操作作数数的的存存储储器器地地址址或或寄寄存存器器地地址址(即即寄寄存存器器名名)。4.1.1 4.1.1 指令格式指令格式指令格式指令格式操作码操作码OPOP地址码地址码 A A指令中提供的地址数指令中提供的地址数存储单元地址码存储单元地址码寄存器编号寄存器编号1.1.指令提供地址的方式指令提供地址的方式 显地址方式显地址方式 隐地址方式隐地址方式:指令中明显指明地址。指令中明显指明地址。:地址隐含约定地址隐含约定,不出现在指令中。不出
5、现在指令中。直接或间接给出直接或间接给出使用隐地址可以减少指令中的地址数,使用隐地址可以减少指令中的地址数,简化地址结构。简化地址结构。4.1.1 4.1.1 指令格式指令格式指令格式指令格式指令和数据的联系和区别指令和数据的联系和区别联系联系:都是以二进制码的形式存储的。都是以二进制码的形式存储的。区别区别:指令的地址是由程序计数器指令的地址是由程序计数器(PC)(PC)规定的;规定的;而而数数据据的的地地址址是是由由指指令令规规定定的的。在在程程序序执执行行过过程程中中,要避免修改指令要避免修改指令,但可以修改数据。但可以修改数据。4.1.1 4.1.1 指令格式指令格式指令格式指令格式
6、指令系统指令系统指令系统指令系统标号:标号:给指令所在的地址取名字。给指令所在的地址取名字。注释:注释:说明程序,汇编程序不对它作任何处理。说明程序,汇编程序不对它作任何处理。操作码:操作码:操作码:操作码:指计算机所要执行的操作,是一种助记符。指计算机所要执行的操作,是一种助记符。操作数:操作数:操作数:操作数:指出在指令执行过程中所需要的操作数,即指出指出在指令执行过程中所需要的操作数,即指出指出在指令执行过程中所需要的操作数,即指出指出在指令执行过程中所需要的操作数,即指出操作数存放于何处操作数存放于何处操作数存放于何处操作数存放于何处 CPU CPU CPU CPU内部的寄存器或内存储
7、器。内部的寄存器或内存储器。内部的寄存器或内存储器。内部的寄存器或内存储器。该字段可以是操作数本身外,也可以是操作数地址或该字段可以是操作数本身外,也可以是操作数地址或该字段可以是操作数本身外,也可以是操作数地址或该字段可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是其它有关操作数的信息。是地址的一部分,还可以是其它有关操作数的信息。是地址的一部分,还可以是其它有关操作数的信息。是地址的一部分,还可以是其它有关操作数的信息。操作数通常为是操作数通常为是操作数通常为是操作数通常为是0 0 0 0个个个个-两个。两个。两个。两个。8086808680868086指令系统的指令大多数
8、是双操作数指令。指令系统的指令大多数是双操作数指令。指令系统的指令大多数是双操作数指令。指令系统的指令大多数是双操作数指令。指令的一般格式指令的一般格式指令的一般格式指令的一般格式 标号:标号:操作码操作码 操作数操作数 ;注释;注释 指令系统指令系统指令系统指令系统 8086 8086指令系统的指令大多数是指令系统的指令大多数是双操作数指令双操作数指令。双操作数指令格式:双操作数指令格式:操作码操作码 目的操作数,源操作数目的操作数,源操作数其中:其中:源操作数源操作数:直接给出参加指令操作的操作数本:直接给出参加指令操作的操作数本 身,或指出操作数放在什么地方;身,或指出操作数放在什么地方
9、;目的操作数:目的操作数:指出参加指令操作的操作数放在何指出参加指令操作的操作数放在何 处,并指出操作结果送至何处。处,并指出操作结果送至何处。指令执行前后,源操作数不变。指令执行前后,源操作数不变。操作数的形式操作数的形式操作数的形式操作数的形式(3 3种)种)种)种)立即数:立即数:立即数:立即数:操作数以常量形式出现(指源操作数)操作数以常量形式出现(指源操作数)寄存器寄存器寄存器寄存器操作数:要操作的数据存在操作数:要操作的数据存在R中。中。内存操作数:要操作的数据存在内存操作数:要操作的数据存在M中。中。4.14.1 寻址方式寻址方式寻址方式寻址方式 指令的寻址方式指令的寻址方式指令
10、的寻址方式指令的寻址方式 操作数可能在哪?操作数可能在哪?地址的表示方法地址的表示方法物理地址物理地址逻辑地址:逻辑地址:段地址:段内偏移量段地址:段内偏移量 就是寻找操作数所在地址的方法。就是寻找操作数所在地址的方法。寻址方式:寻址方式:寻址方式:寻址方式:或者是寻找操作数或者是寻找操作数有效地址(有效地址(EAEA)的方法的方法。注意注意有效地址(有效地址(EAEA)的构成)的构成位移量位移量:disp8位或位或disp16位位基址寄存器基址寄存器:存放在存放在BX或或BP中的内容中的内容变址寄存器址寄存器:存放在存放在SI或或DI中的内容中的内容不同的组合方式不同的组合方式不同的寻址方式
11、不同的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种种种种)AHAL.MOV操作码操作码3412.低地址低地址高地址高地址操作数送寄存器操作数送寄存器AX存储器存储器代代码码段段AX1234 例如例如例如例如:MOV AX MOV AX MOV AX MOV AX,1234H1234H1234H1234H指令执行后,(指令执行后,(指令执行后,(指令执行后,(AXAXAXAX)=1234=1234=1234=1234 示意图如下:示意图如下:示意图如下:示意图如下:例如:例如:例如:例如:MOV AL MOV AL MOV AL MO
12、V AL,34H34H34H34H 指令执行后,(指令执行后,(指令执行后,(指令执行后,(ALALALAL)=34H=34H=34H=34H 例如:例如:例如:例如:MOV AL MOV AL MOV AL MOV AL,34H34H34H34H 指令执行后,(指令执行后,(指令执行后,(指令执行后,(ALALALAL)=34H=34H=34H=34H 1.1.1.1.立即寻址立即寻址立即寻址立即寻址 指令中直接给出操作数指令中直接给出操作数指令中直接给出操作数指令中直接给出操作数演示演示演示演示例如例如例如例如:MOV AX MOV AX MOV AX MOV AX,BXBXBXBX 若执
13、行前(若执行前(若执行前(若执行前(AXAXAXAX)=1234H=1234H=1234H=1234H,(,(,(,(BXBXBXBX)=56EDH=56EDH=56EDH=56EDH,则执行后(则执行后(则执行后(则执行后(AXAXAXAX)=56EDH=56EDH=56EDH=56EDH,BX BX BX BX内容不变。示意图如下:内容不变。示意图如下:内容不变。示意图如下:内容不变。示意图如下:与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种种种种)BX操作数送寄存器操作数送寄存器AX56EDAHALAX56EDBHBL即操作数放在即操作
14、数放在即操作数放在即操作数放在CPUCPUCPUCPU内部寄存器内部寄存器内部寄存器内部寄存器 AX AX AX AX、BXBXBXBX、CXCXCXCX、DXDXDXDX、DIDIDIDI、SISISISI、SPSPSPSP和和和和BPBPBPBP中,不需要访问存储器。中,不需要访问存储器。中,不需要访问存储器。中,不需要访问存储器。2.2.2.2.寄存器寻址寄存器寻址寄存器寻址寄存器寻址指令中给出存储操作数的寄存器号指令中给出存储操作数的寄存器号指令中给出存储操作数的寄存器号指令中给出存储操作数的寄存器号演示演示演示演示1 1演示演示演示演示2 2例如例如例如例如:MOV AXMOV AX
15、MOV AXMOV AX,2000H 2000H 2000H 2000H 默认的段寄存器是默认的段寄存器是默认的段寄存器是默认的段寄存器是DSDSDSDS,如(,如(,如(,如(DSDSDSDS)=3000H=3000H=3000H=3000H,则物理地址则物理地址则物理地址则物理地址 PA=3000H10H PA=3000H10H PA=3000H10H PA=3000H10H2000H2000H2000H2000H例如例如例如例如:MOV AXMOV AXMOV AXMOV AX,ES ES ES ES:2000H2000H2000H2000H 物理地址物理地址物理地址物理地址PA=(ES
16、)10HPA=(ES)10HPA=(ES)10HPA=(ES)10H2000H2000H2000H2000H与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种种种种)3.3.3.3.直接寻址直接寻址直接寻址直接寻址有效地址有效地址有效地址有效地址EAEAEAEA由指令直接给出。由指令直接给出。由指令直接给出。由指令直接给出。物理地址物理地址物理地址物理地址=(DSDSDSDS)10H10H10H10HEA EA EA EA 例如例如例如例如:MOV AXMOV AXMOV AXMOV AX,2000H 2000H 2000H 2000H 如(如(
17、如(如(DSDSDSDS)=3000H=3000H=3000H=3000H,1234AHALAX.MOV操作码操作码0020.低地址低地址高地址高地址操作数送寄存器操作数送寄存器AX存储器存储器代代码码段段数数据据段段3412DS300010H20003200032000演示演示演示演示1 1演示演示演示演示2 2与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种种种种)3.3.3.3.直接寻址直接寻址直接寻址直接寻址 例如:例如:例如:例如:MOV AXMOV AXMOV AXMOV AX,BX BX BX BX 若若若若(DS)=3000H(
18、DS)=3000H(DS)=3000H(DS)=3000H,(,(,(,(BXBXBXBX)=2000H=2000H=2000H=2000H则则则则EA=EA=EA=EA=(BXBXBXBX)=2000H =2000H =2000H =2000H 物理地址物理地址物理地址物理地址 PA=30000H+2000H PA=30000H+2000H PA=30000H+2000H PA=30000H+2000H 执行情况如图执行情况如图执行情况如图执行情况如图 (AXAXAXAX)=(32000320003200032000)=1234H=1234H=1234H=1234H4.1.14.1.1与数据
19、有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种种种种)4.4.4.4.寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址 指令中直接给出操作数指令中直接给出操作数指令中直接给出操作数指令中直接给出操作数EA;EA;EA EA在基址寄存器在基址寄存器在基址寄存器在基址寄存器BPBP、BXBX或变址寄存器或变址寄存器或变址寄存器或变址寄存器SISI、DIDI中中中中,而操作数则在存储器中。而操作数则在存储器中。而操作数则在存储器中。而操作数则在存储器中。uBXBX、SISI、DIDI作间址寄存器,指示作间址寄存器,指示作间址寄存器,指示作间址寄存
20、器,指示数据段数据段数据段数据段中的数据中的数据中的数据中的数据;uBPBP作间址寄存器,则指示的是作间址寄存器,则指示的是作间址寄存器,则指示的是作间址寄存器,则指示的是堆栈段堆栈段堆栈段堆栈段中的数据。中的数据。中的数据。中的数据。与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种种种种)例如:例如:例如:例如:MOV AXMOV AXMOV AXMOV AX,BX BX BX BX 执行情况如图执行情况如图执行情况如图执行情况如图 低地址低地址高地址高地址DS300010H1234AHALAX.操作码操作码操作码操作码.操作数送寄存器操作数
21、送寄存器AX存储器存储器代代码码段段数数据据段段BX200032000320003412 4.4.4.4.寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址演示演示演示演示1 1演示演示演示演示2 2有效地址有效地址=(BX)(BP)(SI)(DI)+8位位16位位位移量位移量与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种种种种)除有段跨越前缀者外,除有段跨越前缀者外,除有段跨越前缀者外,除有段跨越前缀者外,对于寄存器为对于寄存器为对于寄存器为对于寄存器为BXBXBXBX、SISISISI、DIDIDIDI的情况下,段寄存器的情况下,段
22、寄存器的情况下,段寄存器的情况下,段寄存器用用用用DSDSDSDS;寄存器用寄存器用寄存器用寄存器用BPBPBPBP,则使用,则使用,则使用,则使用SSSSSSSS段寄存器的内容作为段段寄存器的内容作为段段寄存器的内容作为段段寄存器的内容作为段地址。地址。地址。地址。例如:例如:例如:例如:MOV AXMOV AXMOV AXMOV AX,COUNTSICOUNTSICOUNTSICOUNTSI 或或或或 MOV AX MOV AX MOV AX MOV AX,COUNT+SICOUNT+SICOUNT+SICOUNT+SI若若若若(DS)=3000H(DS)=3000H(DS)=3000H(
23、DS)=3000H,(SI)=2000H(SI)=2000H(SI)=2000H(SI)=2000H,COUNT=3000H COUNT=3000H COUNT=3000H COUNT=3000H 则则则则 PA=35000H PA=35000H PA=35000H PA=35000H;若若若若(35000H)=1234H(35000H)=1234H(35000H)=1234H(35000H)=1234H,则,则,则,则(AX)=1234H(AX)=1234H(AX)=1234H(AX)=1234H 5.5.5.5.寄存器相对寻址寄存器相对寻址寄存器相对寻址寄存器相对寻址 与数据有关的寻址方式
24、与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种种种种)例如:例如:例如:例如:MOV AXMOV AXMOV AXMOV AX,COUNTSI COUNTSI COUNTSI COUNTSI MOV AXMOV AXMOV AXMOV AX,COUNT+SICOUNT+SICOUNT+SICOUNT+SIDS300010H1234AHALAX.操作码操作码操作码操作码0030.低地址低地址高地址高地址操作数送寄存器操作数送寄存器AX存储器存储器代代码码段段数数据据段段3412SI20003500035000COUNT3000 5.5.5.5.寄存器相对寻址寄存器
25、相对寻址寄存器相对寻址寄存器相对寻址 演示演示演示演示1 1演示演示演示演示2 2有效地址有效地址=(BX)(BP)+(SI)(DI)与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种种种种)使用使用使用使用BXBX作为基址寄存器,作为基址寄存器,作为基址寄存器,作为基址寄存器,则数据则数据则数据则数据默认在数据段默认在数据段默认在数据段默认在数据段;若使用若使用若使用若使用BPBP作为基址寄存作为基址寄存作为基址寄存作为基址寄存器,器,器,器,则默认在堆栈段则默认在堆栈段则默认在堆栈段则默认在堆栈段;允许使用段跨越前缀允许使用段跨越前缀允许使用
26、段跨越前缀允许使用段跨越前缀例如:例如:例如:例如:MOV AXMOV AXMOV AXMOV AX,BXSI BXSI BXSI BXSI如如如如(DS)=2100H(DS)=2100H(DS)=2100H(DS)=2100H(BX)=0158H,(BX)=0158H,(BX)=0158H,(BX)=0158H,(SI)=1200H,(SI)=1200H,(SI)=1200H,(SI)=1200H,则则则则 PA=22358HPA=22358HPA=22358HPA=22358H;若(若(若(若(22358H22358H22358H22358H)=1234H=1234H=1234H=1234
27、H,则则则则(AXAXAXAX)=1234H=1234H=1234H=1234H6 6.基址变址寻址基址变址寻址基址变址寻址基址变址寻址 与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种种种种)例如:例如:例如:例如:MOV AXMOV AXMOV AXMOV AX,BXSIBXSIBXSIBXSI 低地址低地址高地址高地址DS210010H1234AHALAX.操作码操作码操作码操作码.操作数送寄存器操作数送寄存器AX存储器存储器代代码码段段数数据据段段3412BX01582235822358SI12006 6.基址变址寻址基址变址寻址基址变
28、址寻址基址变址寻址 演示演示演示演示1 1演示演示演示演示2 2有效地址有效地址=(BX)(BP)+(SI)(DI)+8位位16位位位移量位移量与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种种种种)例如:例如:例如:例如:MOV AXMOV AXMOV AXMOV AX,MASKBXSI MASKBXSI MASKBXSI MASKBXSI如如如如(DS)=2100H(DS)=2100H(DS)=2100H(DS)=2100H(BX)=0158H,(BX)=0158H,(BX)=0158H,(BX)=0158H,(SI)=10A5H,MASK
29、=0134H (SI)=10A5H,MASK=0134H (SI)=10A5H,MASK=0134H (SI)=10A5H,MASK=0134H则则则则 PA=2148CH PA=2148CH PA=2148CH PA=2148CH;若(若(若(若(2148CH2148CH2148CH2148CH)=5678H=5678H=5678H=5678H 则则则则(AXAXAXAX)=5678H=5678H=5678H=5678H 7.7.相对基址变址寻址相对基址变址寻址相对基址变址寻址相对基址变址寻址 与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式与数据有关的寻址方式(7(7(7(7种
30、种种种)例如:例如:例如:例如:MOV AXMOV AXMOV AXMOV AX,MASKBXSIMASKBXSIMASKBXSIMASKBXSI存储器存储器存储器存储器DS210010HDS210010HAHALAHALAXAX操作数送寄存器操作数送寄存器操作数送寄存器操作数送寄存器AXAXBX0158BX01582148C2148C2148C2148C操作码操作码操作码操作码操作码操作码操作码操作码34340101低地址低地址低地址低地址高地址高地址高地址高地址代代代代码码码码段段段段数数数数据据据据段段段段78785656SI1200SI1200MASK0134MASK013456785
31、6787.7.相对基址变址寻址相对基址变址寻址相对基址变址寻址相对基址变址寻址 演示演示演示演示1 1演示演示演示演示2 2第第 4.2节节4.28086808680868086指令系统按功能可分为指令系统按功能可分为指令系统按功能可分为指令系统按功能可分为6 6 6 6大类:大类:大类:大类:v 数据数据传送指令送指令v 算算术运算指令运算指令v 逻辑指令指令v 程序控制指令程序控制指令v 串串处理指令理指令v 输入入输出出类指令指令v 处理机控制指令理机控制指令 指令系统指令系统数据传送指令数据传送指令数据传送指令数据传送指令 一一一一.通用数据传送指令通用数据传送指令通用数据传送指令通用
32、数据传送指令(1)(1)(1)(1)数据传送数据传送数据传送数据传送MOVMOVMOVMOV指令指令指令指令 指令格式:指令格式:指令格式:指令格式:MOVDSTMOVDST,SRCSRC;指令功能:将数据从源地址传送到目的地址,具有指令功能:将数据从源地址传送到目的地址,具有指令功能:将数据从源地址传送到目的地址,具有指令功能:将数据从源地址传送到目的地址,具有“复制复制复制复制”性质;性质;性质;性质;DSTDST、SRCSRC分别为目的操作数和源操作数分别为目的操作数和源操作数分别为目的操作数和源操作数分别为目的操作数和源操作数.例如:例如:例如:例如:MOVMOVMOVMOVAXAXA
33、XAX,1234H1234H1234H1234H MOV MOV MOV MOVALALALAL,CLCLCLCL注意注意注意注意MOVMOVMOVMOV指令源、目标操作数长度必须一致,指令源、目标操作数长度必须一致,指令源、目标操作数长度必须一致,指令源、目标操作数长度必须一致,目的操作数目的操作数目的操作数目的操作数DSTDSTDSTDST不能为立即数;不能为立即数;不能为立即数;不能为立即数;DSTDSTDSTDST、SRCSRCSRCSRC不能同时为段不能同时为段不能同时为段不能同时为段R R,也不能同时为,也不能同时为,也不能同时为,也不能同时为MM单元;单元;单元;单元;不能使用此
34、指令为不能使用此指令为不能使用此指令为不能使用此指令为CSCSCSCS及及及及IPIPIPIP赋值;赋值;赋值;赋值;MOVMOVMOVMOV指令不影响标志位寄存器指令不影响标志位寄存器指令不影响标志位寄存器指令不影响标志位寄存器PSWPSWPSWPSW的值。的值。的值。的值。1)2)3)4)5)MOVMOV指令传送功能指令传送功能MOVDSTMOVDST,SRCSRC MOV MOV也并非任意传送也并非任意传送立即数立即数段寄存器段寄存器CSCS DS ES SS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存
35、储储器器4.2.1 4.2.1 4.2.1 4.2.1 数据传送指令数据传送指令数据传送指令数据传送指令 具体实现具体实现 1 1)数据在)数据在CPUCPU内部寄存器之间传送内部寄存器之间传送 MOVAL,BL;通用寄存器之通用寄存器之间字字节传送送MOVDI,BX;通用寄存器之通用寄存器之间字字传送送MOVDS,AX;通用寄存器通用寄存器传送到段寄存器送到段寄存器MOVAX,ES;段寄存器段寄存器传送到通用寄存器送到通用寄存器 2 2)立即数传送至)立即数传送至CPUCPU内部通用寄存器或存储器中内部通用寄存器或存储器中MOVDL,58;8位立即数位立即数传送到通用寄存器送到通用寄存器MO
36、VBP,016AH;16位立即数位立即数传送到通用寄存器送到通用寄存器MOVBYTEPTRBX,7BH;8位立即数位立即数传送到存送到存储器器MOVWORDPTRBX,057BH;16位立即数位立即数传送到存送到存储器器4.2.1 4.2.1 4.2.1 4.2.1 数据传送指令数据传送指令数据传送指令数据传送指令 3 3)数据在)数据在CPUCPU内部寄存器与存储器之间的传送内部寄存器与存储器之间的传送MOVCL,BX+5;字字节传送送MOVAX,SI;变址址传送送MOVDS,BX+SI;基址基址变址址传送送MOVAX,DATABPSI;相相对基址基址变址址传送送MOVDI,BX;将将BX内
37、容内容传送到送到DI所指位置所指位置MOVBX,DATA1;将符号地址将符号地址DATA1的存的存储器内容器内容传送到送到BX中中具体实现具体实现4.2.1 4.2.1 4.2.1 4.2.1 数据传送指令数据传送指令数据传送指令数据传送指令 常见错误常见错误 CS CS和和IPIP不能作为目的操作数不能作为目的操作数MOVCS,AX(X)MOVIP,AX(X)不允许数据直接从存储器传送到存储器不允许数据直接从存储器传送到存储器如要把如要把DS段内偏移地址段内偏移地址为ADDR1的存的存储单元的内元的内容,容,传送至同一段内地址送至同一段内地址为ADDR2的存的存储单元中去,元中去,MOVAD
38、DR2,ADDR1MOVAL,ADDR1MOVADDR2,AL(X)(V)4.2.1 4.2.1 4.2.1 4.2.1 数据传送指令数据传送指令数据传送指令数据传送指令 常见错误常见错误 立即数不允许直接送段寄存器,立即数不允许直接送段寄存器,也不允许在两个段寄存器之间直接传送信息。也不允许在两个段寄存器之间直接传送信息。MOVDS,5000H(X)MOVDS,ES(X)可以用通用寄存器可以用通用寄存器(如如AX)为桥梁来梁来实现传送。送。MOVAX,5000HMOVDS,AX(V)4.2.1 4.2.1 4.2.1 4.2.1 数据传送指令数据传送指令数据传送指令数据传送指令 一一一一.通
39、用数据传送指令通用数据传送指令通用数据传送指令通用数据传送指令 指令格式:指令格式:指令格式:指令格式:XCHGXCHG OPR1OPR1,OPR2OPR2;执行操作:执行操作:执行操作:执行操作:OPR1OPR2OPR1OPR2;指令功能:将一个字节或一个字的源操作数和指令功能:将一个字节或一个字的源操作数和指令功能:将一个字节或一个字的源操作数和指令功能:将一个字节或一个字的源操作数和目的操作数相交换;目的操作数相交换;目的操作数相交换;目的操作数相交换;注意注意注意注意两个操作数两个操作数两个操作数两个操作数必须必须必须必须有一个在寄存器中;有一个在寄存器中;有一个在寄存器中;有一个在寄
40、存器中;两个操作数不能同时为存储器;两个操作数不能同时为存储器;两个操作数不能同时为存储器;两个操作数不能同时为存储器;XCHGXCHG指令指令指令指令不影响不影响不影响不影响FRFR的值的值的值的值。1)2)3)(2)(2)(2)(2)交换指令交换指令交换指令交换指令XCHGXCHGXCHGXCHG 交换可在交换可在交换可在交换可在regreg之间、之间、之间、之间、regreg与与与与memmem之间进行。可以是字节交之间进行。可以是字节交之间进行。可以是字节交之间进行。可以是字节交换,也可以是字交换。段寄存器内容不能交换。换,也可以是字交换。段寄存器内容不能交换。换,也可以是字交换。段寄
41、存器内容不能交换。换,也可以是字交换。段寄存器内容不能交换。4.2.1 4.2.1 4.2.1 4.2.1 数据传送指令数据传送指令数据传送指令数据传送指令 1.说明程序功能,寻址方式,判断对错并改正说明程序功能,寻址方式,判断对错并改正(1)MOV2000H,BX(2)MOV2000H,IP(3)MOVSS,2000H(4)MOVDS,SI+DI(5)MOVDS,ES(6)MOVBX+DI,AX(7)MOVBL,BP(8)MOVBX,BX+DI+2000H(9)MOVBH,BP+SI(10)MOVAL,ES:2000H(11)PUSH2000H(12)POPDS2.现有现有:(DS)=200
42、0H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H。试说明下列各指令执行后,试说明下列各指令执行后,AX寄存器的内容。寄存器的内容。(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,1200H(4)MOVAX,BX(5)MOVAX,1100HBX(6)MOVAX,BXSI(7)MOVAX,1100HBXSI复习提问复习提问3.假定:(假定:(DS)=2000H,(,(ES
43、)=2100H,(,(SS)=1500H,(SI)=00A0H,(,(BX)=0100H,(,(BP)=0010H,数据段中数据段中变量名变量名VAL的偏移地址值为的偏移地址值为0050H。指出下列源操作数的寻址方式?有效地址和物理地址值是多少?指出下列源操作数的寻址方式?有效地址和物理地址值是多少?(1)MOVAX,00ABH(2)MOVAX,100H(3)MOVAX,BX(4)MOVAX,BP(5)MOVAX,BX+10(6)MOVAX,BXSI(7)MOVAX,BX(8)MOVAX,VAL(9)MOVAX,ES:BX(10)MOVAX,SI(11)MOVAX,VALBX(12)MOVAX
44、,VALBPSI堆栈:堆栈:在内存中开辟的一片数据存储区在内存中开辟的一片数据存储区 (设置在堆栈段内设置在堆栈段内),存储方式:存储方式:是一端固定,另一端活动,即只允许在一端是一端固定,另一端活动,即只允许在一端向该存储区存入或取出数据,数据的存取遵循向该存储区存入或取出数据,数据的存取遵循“先进后先进后出出”原则。原则。从硬件来看,堆栈由一片存储单元和一个指示器从硬件来看,堆栈由一片存储单元和一个指示器(即堆即堆栈指针栈指针SP)SP)组成。堆栈的固定端称组成。堆栈的固定端称栈底栈底(BOTTOM)(BOTTOM)。堆栈指针堆栈指针SPSP用于指示数据进栈和出栈时偏移地址的变化,用于指示
45、数据进栈和出栈时偏移地址的变化,SPSP所指示的最后进入数据的单元称所指示的最后进入数据的单元称栈顶栈顶(TOP)(TOP),堆栈中堆栈中所有数据的存取都在栈顶进行。所有数据的存取都在栈顶进行。二二二二.堆栈操作指令堆栈操作指令堆栈操作指令堆栈操作指令4.2.1 4.2.1 4.2.1 4.2.1 数据传送指令数据传送指令数据传送指令数据传送指令 SSSP堆栈区堆栈区堆栈底堆栈底存储器存储器堆堆栈栈段段64KBSP=SP-2SSSP堆栈底堆栈底堆堆栈栈段段64KBAX存储器存储器PUSHAX 二二二二.堆栈操作指令堆栈操作指令堆栈操作指令堆栈操作指令4.2.1 4.2.1 4.2.1 4.2.
46、1 数据传送指令数据传送指令数据传送指令数据传送指令(1)(1)(1)(1)压栈指令格式压栈指令格式压栈指令格式压栈指令格式PUSHPUSH 格式为:格式为:格式为:格式为:PUSHSRCPUSHSRC;(先减后压);(先减后压);(先减后压);(先减后压)执行的操作执行的操作执行的操作执行的操作:(:(SP)(SP)SP)(SP)22(SP)(SP)1 1,(SP)(SP)(SRCSRC)SRC可以是内部寄存器、段寄存器、存储器可以是内部寄存器、段寄存器、存储器 二二二二.堆栈操作指令堆栈操作指令堆栈操作指令堆栈操作指令(2)(2)(2)(2)出栈指令格式出栈指令格式出栈指令格式出栈指令格式
47、 POP POP POP POP 格式为:格式为:格式为:格式为:POPDSTPOPDST;(先弹后加);(先弹后加);(先弹后加);(先弹后加)执行的操作执行的操作执行的操作执行的操作:(:(DSTDST)(SP)(SP)1 1,(SP)(SP)(SPSP)(SPSP)2 2;DST可以是内部寄存器、段寄存器可以是内部寄存器、段寄存器(CS除外除外)、存储器。、存储器。4.2.1 4.2.1 4.2.1 4.2.1 数据传送指令数据传送指令数据传送指令数据传送指令(2)(2)(2)(2)堆栈操作指令堆栈操作指令堆栈操作指令堆栈操作指令1)1)堆栈指令必须是堆栈指令必须是堆栈指令必须是堆栈指令
48、必须是1616位双字节数,位双字节数,位双字节数,位双字节数,即每进行一次即每进行一次即每进行一次即每进行一次PUSHPUSH操作,操作,操作,操作,SPSP减减减减2 2;每进行一次每进行一次每进行一次每进行一次POPPOP操作操作操作操作SPSP加加加加2 2;2)2)目的操作数目的操作数目的操作数目的操作数DSTDST,与原操作数,与原操作数,与原操作数,与原操作数SRCSRC都不能为立即数;都不能为立即数;都不能为立即数;都不能为立即数;3)DST3)DST不能为代码段寄存器不能为代码段寄存器不能为代码段寄存器不能为代码段寄存器CSCS;4)4)堆栈指令堆栈指令堆栈指令堆栈指令不影响标
49、志位寄存器不影响标志位寄存器不影响标志位寄存器不影响标志位寄存器FRFR的值。的值。的值。的值。注意注意注意注意例:例:PUSH1234H POPCS 不能用立即不能用立即寻址方式址方式DST不能是不能是CS4.2.1 4.2.1 4.2.1 4.2.1 数据传送指令数据传送指令数据传送指令数据传送指令 例:实现两个字型存储器操作数例:实现两个字型存储器操作数例:实现两个字型存储器操作数例:实现两个字型存储器操作数BUF1BUF1及及及及BUF2BUF2的交换的交换的交换的交换方法方法方法方法1 1:利用寄存器:利用寄存器:利用寄存器:利用寄存器方法方法方法方法1 1:利用堆栈:利用堆栈:利用
50、堆栈:利用堆栈MOVAX,BUF1XCHGAX,BUF2MOVBUF1,AXPUSHBUF1PUSHBUF2POPBUF1POPBUF2例:例:例:例:寄存器间寄存器间寄存器间寄存器间交换交换交换交换MOVAX,1234H;AX=1234HMOVBX,5678H;BX=5678HXCHGAX,BX;AX=5678H,BX=1234HXCHGAH,AL;AX=7856H4.2.1 4.2.1 4.2.1 4.2.1 数据传送指令数据传送指令数据传送指令数据传送指令(2)POPF(2)POPF(2)POPF(2)POPF指令指令指令指令 指令功能:与指令功能:与指令功能:与指令功能:与PUSHFP