第03章指令系统.pptx

上传人:可****阿 文档编号:69827694 上传时间:2023-01-09 格式:PPTX 页数:286 大小:1.80MB
返回 下载 相关 举报
第03章指令系统.pptx_第1页
第1页 / 共286页
第03章指令系统.pptx_第2页
第2页 / 共286页
点击查看更多>>
资源描述

《第03章指令系统.pptx》由会员分享,可在线阅读,更多相关《第03章指令系统.pptx(286页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第3章 指令系统汇编语言与微机接口21 1汇编语言简介汇编语言简介2 2数据寻址方式数据寻址方式3 3指令的机器码表示指令的机器码表示4 4数据传送指令数据传送指令第第3章章指令系统指令系统5 5算术运算指令算术运算指令总目录总目录36 6逻辑运算和移位指令逻辑运算和移位指令7 7程序控制指令程序控制指令8 8串操作指令串操作指令9 9处理器控制指令处理器控制指令第第3章章指令系统指令系统43.1汇编语言简介汇编语言简介 1 1、操作码操作码 2 2、操作数操作数 3 3、寻址方式寻址方式 4 4、指令指令 5 5、指令系统指令系统 53.1指令格式指令格式1 1、操作码、操作码 是指令操作功

2、能的记述是指令操作功能的记述 。2 2、操作数、操作数 指出指令执行的操作所需指出指令执行的操作所需要数据的来源要数据的来源。OPCodeOperand63.1指令格式(续)指令格式(续)3 3、寻址方式、寻址方式 就是寻找就是寻找操作数操作数或或操作数操作数地址的方式地址的方式。MOVMOVAX,1234HAX,1234H;B83412;B83412MOVMOVAX,1234HAX,1234H;A13412;A13412操作码操作数7指令与指令系统4、指令:控制计算机完成某种操作的命令。指令中应包含的信息:运算数据的来源、运算结果的去向、执行的操作。5、指令系统:处理器所能识别的所有指令的集

3、合。83.2数据寻址方式数据寻址方式 3.2.3.2.1 1 立即寻址立即寻址 3.2.2 3.2.2 寄存器寻址寄存器寻址 3.2.3 3.2.3 直接寻址直接寻址 3.2.4 3.2.4 寄存器间接寻址寄存器间接寻址 3.2.5 3.2.5 寄存器相对寻址寄存器相对寻址 3.2.6 3.2.6 基址加变址寻址基址加变址寻址 3.2.7 3.2.7 相对的基址加变址寻址相对的基址加变址寻址 3.2.8 3.2.8 隐含寻址隐含寻址9 1 1、逻辑地址逻辑地址LALA 2 2、有效地址有效地址EAEA 3 3、物理地址物理地址PA PA 3.2数据寻址方式数据寻址方式 三种地址三种地址103.

4、2数据寻址方式数据寻址方式 1 1、逻辑地址、逻辑地址:(LogicalAddress)2 2、有效地址、有效地址:(EffectiveAddress)指令中给出的操作数地址指令中给出的操作数地址,叫逻辑地址。叫逻辑地址。以以段基值:偏移量段基值:偏移量形式呈现。形式呈现。如:如:DSDS:BX BX 在寻址方式中,逻辑地址的形成是由多个分量组合而在寻址方式中,逻辑地址的形成是由多个分量组合而成,该组合中的偏移地址又叫有效地址。成,该组合中的偏移地址又叫有效地址。有效地址有效地址EAEA是一个是一个1616位无符号数,表示位无符号数,表示操作数操作数所在所在单元到段首的距离。即单元到段首的距离

5、。即逻辑地址逻辑地址的的偏移地址偏移地址。113.2数据寻址方式数据寻址方式 3 3、物理地址、物理地址:(PhysicalAddress)4 4、PAPA的实际意义:的实际意义:在在存储器存储器里以里以字节字节为单位存储信息为单位存储信息,每一个字节单元每一个字节单元给以一个唯一的给以一个唯一的存储器地址存储器地址,称为物理地址,称为物理地址。PA就是,出现在就是,出现在CPU外部地址总外部地址总线上的寻址物理内存的地址信号线上的寻址物理内存的地址信号 12 目的操作数和源操作数均可采用不同的寻址方式;目的操作数和源操作数均可采用不同的寻址方式;目的操作数和源操作数均可采用不同的寻址方式;目

6、的操作数和源操作数均可采用不同的寻址方式;两个操作数的类型必需一致。两个操作数的类型必需一致。两个操作数的类型必需一致。两个操作数的类型必需一致。5 5、MOVMOV数据传送指令数据传送指令格式格式:MOVdest,source目的目的源源13操操作作数数可可能能存存放放的的场场所所操作数就在指令中操作数就在指令中 操作数在操作数在CPUCPU的的RegisterRegister中中操作数在操作数在MemoryMemory中中143.2.13.2.1立即寻址(立即寻址(Immediate addressingImmediate addressing)例:例:例:例:MOVMOVBL,20HBL

7、,20H;B320B320MOVMOVAX,34EAHAX,34EAH;B8EA34B8EA34 n操作数就在指令中,紧跟在操作码后面。作为指操作数就在指令中,紧跟在操作码后面。作为指令一部分存放在内存的代码段中。令一部分存放在内存的代码段中。n这种操作数称为立即数。这种操作数称为立即数。153.2.13.2.1立即寻址立即寻址(ImmediateImmediateaddressingaddressing)立即数只能作为源操作数。立即数只能作为源操作数。立即数可以是无符号数或带符号数。立即数可以是无符号数或带符号数。其数值应在可以取值的范围内。其数值应在可以取值的范围内。16 图3.2 立即寻

8、址 17 MOV AL,80H MOV AX,1090H MOV EAX,12345678H18例:例:MOVAL,BL;88D8MOVAX,1234H;B83412MOVAL,AH;88E0 3.2.2寄存器寻址(Register addressing)n操作数在操作数在CPUCPU中的寄存器中。中的寄存器中。n指令中源操作数和目的操作数都可用这种寻址方式。指令中源操作数和目的操作数都可用这种寻址方式。19 3.2.2寄存器寻址(Register addressing)20存储器寻址存储器寻址在大多数情况下,操作数在存储器中。有效地址(EffectiveAddress)EA=基址基址+变址变

9、址比例因子比例因子+位移量位移量21例例:MOVAX,2100H;A10021MOV1234H,AL;A234123.2.3 3.2.3 直接寻址直接寻址(Direct addressing)n有效地址在指令中直接给出;有效地址在指令中直接给出;n默认段基地址在默认段基地址在DSDS段寄存器,可使用段超越前段寄存器,可使用段超越前缀改变。缀改变。22MOVAX,2000H有效地址EA=2000H其过程如图3.3所示。指令中的16位段内偏移地址的低字节在前,高字节在后。23图3.3 直接寻址 24两个概念两个概念u段超越:段超越:MOVAX,2100HMOVAX,ES:2100Hu符号地址:符号

10、地址:MOVAX,RESULT25(Registerindirectaddressing)MOV AX,BXMOVAX,SIMOVAX,DIMOVAX,BP3.2.4寄存器间接寻址寄存器间接寻址n 内存单元的逻辑偏移地址通过寄存器间接给出。内存单元的逻辑偏移地址通过寄存器间接给出。26n由寄存器间接给出操作数的偏移地址;n存放偏移地址的寄存器称为间址寄存器间址寄存器,它们是:BX,BP,SI,DIn操作数的段地址(数据处于哪个段)取决于选择哪一个间址寄存器:3.2.4寄存器间接寻址寄存器间接寻址BP默认在堆栈段SSBX,SI,DI默认在数据段DS27n例:MOVAX,SIn其过程如图3.5(a

11、)所示。n例:MOVAX,BPn其过程如图3.5(b)所示。28图3.5 寄存器间接寻址 29(RegisterRelativeAddressing)EA=+DISP BP BX EA=+DISP DI SI 3.2.5 寄存器相对寻址寄存器相对寻址n这种寻址方式中提出位移量的概念。这种寻址方式中提出位移量的概念。n即在寄存器间接寻址给出的偏移地址上,加一相即在寄存器间接寻址给出的偏移地址上,加一相对位移量。对位移量。305 5、寄存器相对寻址、寄存器相对寻址(续)(续)当使用当使用BXBX或或BPBP寄存器时,称寄存器时,称基址寻址基址寻址。使用使用SISI或或DIDI寄存器时,称寄存器时,

12、称变址寻址变址寻址。例例:MOVCX,BX+36HMOVBP20,ALDISP 可以为8位、16位或32位补码。31在一般情况下,若用BX、SI或DI进行相对寻址时,以数据段寄存器DS作为地址基准。而用BP寻址时,则以堆栈段寄存器作为地址基准。例:MOVAX,DISPSI其过程如图3.6所示。32图3.6 寄存器相对寻址 33 (Based Indexed addressing addressing)EA=+BP DI BX SI 3.2.6 基址加变址寻址n将基址寄存器和变址寄存器联合起来进行将基址寄存器和变址寄存器联合起来进行的寻址就称为基址加变址寻址。的寻址就称为基址加变址寻址。34BX

13、BPSIDI基址寄存器变址寄存器EA=EA=基址基址+变址变址35同理,若用BX作为基地址,则操作数应放在数据段DS区域中;若用BP作为基地址,则操作数应放在堆栈段SS区域中。例:MOVAX,BXSI其过程如图3.7所示。36 图3.7 基址、变址寻址 37(Relative BasedIndexedaddressing)例例:MOVAX,8AHBXSI该例中该例中EABXSI8AHPADS10HBXSI8AH 3.2.7 3.2.7 相对的基址加变址寻址相对的基址加变址寻址n它的它的EAEA是由三部分组成的。是由三部分组成的。n基址寄存器基址寄存器BXBX或或BPBP的内容,加上变址寄存的内

14、容,加上变址寄存器的内容,再加位移量。器的内容,再加位移量。38 3.2.7 3.2.7 相对的基址加变址寻址(续)相对的基址加变址寻址(续)EA=+BP DI 位移量BX SI 8位或16位n基址、变址、相对寻址方式实际上是第基址、变址、相对寻址方式实际上是第6 6种寻址方种寻址方式的扩充。式的扩充。n即操作数的地址是由基址、变址方式得到的地址再即操作数的地址是由基址、变址方式得到的地址再加上由指令指明的加上由指令指明的8 8位或位或1616位的相对位移地址而得位的相对位移地址而得到的。到的。39例:MOV AX,DISPBXSI其过程如图3.8所示。40图3.8 基址、变址、相对寻址 41

15、的使用规定的使用规定立即数在立即数在中表示直接地址,如中表示直接地址,如1000H;有相加的意思,下面几种写法是等价的有相加的意思,下面几种写法是等价的6BXSI,BX+6SI,BX+SI+6;只有只有BX,BP,SI,DI可以出现在可以出现在内,表示间内,表示间接地址。它们可以单独出现,也可以组合。接地址。它们可以单独出现,也可以组合。但但BX和和BP不允许出现在同一个不允许出现在同一个中中,SI和和DI也一样;也一样;若若中含中含BP,则隐含使用,则隐含使用SS来提供段基来提供段基址,其它均隐含用址,其它均隐含用DS。均可以段超越。均可以段超越。42433.2.8隐含寻址隐含寻址n 在指令

16、中没有明显的标出,而指定寄存器在指令中没有明显的标出,而指定寄存器参加操作,称之为参加操作,称之为“隐含寻址隐含寻址”。DAAMULBLPUSHAXPOPCX.44 8.隐含寻址(续)隐含寻址(续)n在有些指令的指令码中,不仅包含有操作码在有些指令的指令码中,不仅包含有操作码信息,而且还隐含了操作数地址的信息。信息,而且还隐含了操作数地址的信息。n例如乘法指令例如乘法指令MULMUL的指令码中只需指明一个的指令码中只需指明一个乘数的地址,另一个乘数和积的地址是隐含乘数的地址,另一个乘数和积的地址是隐含固定的。固定的。n 这种将操作数的地址隐含在指令操作码中的这种将操作数的地址隐含在指令操作码中

17、的寻址方式称为隐含寻址。寻址方式称为隐含寻址。4546 9.9.相对的带比例因子的变址寻址相对的带比例因子的变址寻址n即操作数的即操作数的EAEA地址是由变址寄存器之值乘以比例地址是由变址寄存器之值乘以比例因子后,再加上由指令指明的因子后,再加上由指令指明的8 8位或位或1616位的相对位的相对位移量而得到的。位移量而得到的。n比例因子为比例因子为K=1K=1、2 2、4 4、8 8。n方便处理:字节、字、双字和四字数据。方便处理:字节、字、双字和四字数据。EA=变址变址比例因子比例因子+位移量位移量例如:IMULEBX,ESI*4+07H4710.10.基址加比例因子的变址寻址基址加比例因子

18、的变址寻址n即操作数的即操作数的EAEA地址是由基址寄存器内容,地址是由基址寄存器内容,与变址寄存器之值乘以比例因子的乘积与变址寄存器之值乘以比例因子的乘积之和而得到的。之和而得到的。EA=基址基址+变址变址比例因子比例因子48例如:MOVEAX,EBXESI*4MOVECX,EDI*8EAX4911.11.相对的基址加比例因子的变址寻址相对的基址加比例因子的变址寻址EA=EA=基址基址+变址变址比例因子比例因子+位移量位移量n即操作数的即操作数的EAEA地址是由基址寄存器内容,与地址是由基址寄存器内容,与变址寄存器之值乘以比例因子的乘积之和,变址寄存器之值乘以比例因子的乘积之和,n再加上由指

19、令指明的再加上由指令指明的8 8位或位或1616位的相对位移量位的相对位移量而得到的。而得到的。50例如:MOVEAX,EBXESI*4+1200HMOVEAX,EDI*4EBP+80511.若若CS=A000H,求当前代码段在存储器中的物理地求当前代码段在存储器中的物理地址范围是什么?若数据段位于址范围是什么?若数据段位于52000H到到61FFFH的的64K范围内,问范围内,问DS=?2.若当前若当前SS=3500H,SP=0800H,说明堆栈段在存储说明堆栈段在存储器中的物理地址,若此时入栈器中的物理地址,若此时入栈10个字节,个字节,SP内容是内容是什么?若再出栈什么?若再出栈6个字节

20、,个字节,SP为什么值?为什么值?3.某程序数据段中存放了两个字某程序数据段中存放了两个字1EE5H和和2A8CH,已已知(知(DS)=7850H,数据存放的偏移地址为数据存放的偏移地址为3121H及及285AH。试画图说明它们在存储器中的存放情况。试画图说明它们在存储器中的存放情况。若要读取这两个字,需要对存储器进行几次操作?若要读取这两个字,需要对存储器进行几次操作?523.3指令的机器码表示指令的机器码表示 3.3.1 3.3.1 转移地址的寻址方式转移地址的寻址方式 3.3.2 3.3.2 指令格式和数据类型指令格式和数据类型 3.3.3 3.3.3 编码目的和特点编码目的和特点 3.

21、3.4 3.3.4 指令代码的编制指令代码的编制53 3.3.1 3.3.1 转移地址的寻址方式转移地址的寻址方式 1 1、段内直接寻址段内直接寻址 2 2、段内间接寻址段内间接寻址 3 3、段间直接寻址段间直接寻址 4 4、段间间接寻址段间间接寻址54四、四、转移地址的寻址方式(续转移地址的寻址方式(续1)(1 1)、程序转移:)、程序转移:(2 2)、段内转移:)、段内转移:取指令的地址由取指令的地址由CS和和IP决定。决定。所谓程序转移,就是修改所谓程序转移,就是修改CS和和IP的值。的值。只修改IP的值就是段内转移。55四、四、转移地址的寻址方式(续转移地址的寻址方式(续2)(3 3)

22、、段间转移:)、段间转移:(4 4)、直接转移和间接转移:)、直接转移和间接转移:同时修改同时修改CS和和IP的值,就是的值,就是 段间转移。段间转移。无论段内转移还是段间转移都有 直接转移和间接转移之分。56指令由操作码和操作数(地址码)组指令由操作码和操作数(地址码)组指令由操作码和操作数(地址码)组指令由操作码和操作数(地址码)组成。成。成。成。8086808680868086的指令长度是可变的,一条指的指令长度是可变的,一条指的指令长度是可变的,一条指的指令长度是可变的,一条指令一般由令一般由令一般由令一般由1 1 1 16 6 6 6个字节组成。个字节组成。个字节组成。个字节组成。操

23、作码操作码操作数操作数3.3.2指令格式和数据类型指令格式和数据类型1.1.指令格式:指令格式:572.2.指令中的操作数指令中的操作数 单操作数指令单操作数指令指令助记符指令助记符指令的指令的16进制代码进制代码INCAX;40HINCBX;43H58 双操作数指令双操作数指令指令助记符指令助记符指令的指令的16进制代码进制代码MOVAL,04;B004HMOVAX,04;B80400 三个操作数指令三个操作数指令三个操作数指令三个操作数指令 8086808680868086指指指指令令令令系系系系统统统统中中中中,大大大大多多多多数数数数指指指指令令令令中中中中只只只只有有有有1 1 1

24、12 2 2 2个个个个操操操操作作作作数数数数,但但但但也也也也有有有有少少少少数数数数指指指指令令令令中中中中有有有有3 3 3 3个个个个操操操操作作作作数数数数,不不不不过有一操作数隐含在操作码中。过有一操作数隐含在操作码中。过有一操作数隐含在操作码中。过有一操作数隐含在操作码中。ADD AX,BXADD AX,BXADD AX,BXADD AX,BX ;该指令完成操作数该指令完成操作数该指令完成操作数该指令完成操作数AXAXAXAX和和和和BXBXBXBX相加。相加。相加。相加。593.3.指令中的数据类型指令中的数据类型无符号数无符号数无符号数无符号数 带符号数带符号数带符号数带符

25、号数 ASCIIASCII码码码码 BCDBCD数(压缩数(压缩数(压缩数(压缩BCDBCD和非压缩和非压缩和非压缩和非压缩BCDBCD)603.3.3编码目的和特点编码目的和特点二、机器语言指令的编码目的和特点二、机器语言指令的编码目的和特点目的:用二进制编码表示各种操作和寻址方式。目的:用二进制编码表示各种操作和寻址方式。特点:没有指令与机器语言的对照表,只有每种特点:没有指令与机器语言的对照表,只有每种 基本指令类型的编码格式。基本指令类型的编码格式。613.3.4机器语言指令代码的编制机器语言指令代码的编制1.1.寄存器之间或寄存器与存储器之间数据传寄存器之间或寄存器与存储器之间数据传

26、 送指令的编码格式送指令的编码格式R/MREGMOD100010DW15876543210操作码操作码0:数据从寄存器传出数据从寄存器传出1:数据传至寄存器数据传至寄存器628086寄存器编码表寄存器编码表REGW=1(字)(字)W=0(字节)(字节)000011001010100111101110AXBXCXDXSPDIBPSIALBLCLDLAHBHCHDHREG段寄存器01110010CSDSESSSR/MREGMOD100010DW15876543210操作码操作码0:数据从寄存器传出数据从寄存器传出1:数据传至寄存器数据传至寄存器MODR/M000001010011100101110

27、11100011011BX+SIBX+DIBP+SIBP+DISIDID16(直接地址)BXBX+SI+D8BX+DI+D8BP+SI+D8BP+DI+D8SI+D8DI+D8BP+D8BX+D8BX+SI+D16BX+DI+D16BP+SI+D16BP+DI+D16SI+D16DI+D16BP+D16BX+D16W=0W=1ALAXCLCXDLDXBLBXAHSPCHBPDHSIBHDIR/MREGMOD100010DW15876543210操作码操作码0:数据从寄存器传出数据从寄存器传出1:数据传至寄存器数据传至寄存器64nMOVAX,2100HnMOVAL,BLnMOVAX,BXnMOV

28、CL,BXSInMOVAX,BX+DI+03H例子例子652.2.立即数寻址指令的编码立即数寻址指令的编码3.3.包含段寄存器的指令的编码包含段寄存器的指令的编码4.4.段超越前缀指令的编码段超越前缀指令的编码663.4数据传送指令数据传送指令n3.4.1基本基本传送指令传送指令n3.4.2堆栈操作堆栈操作指令指令n3.4.3地址传送指令地址传送指令n3.4.4其他传送类其他传送类指令指令n3.4.5输入输入/输出指令输出指令67 80868086的指令集的指令集1 1、数据传送类数据传送类2 2、算术运算类算术运算类3 3、逻辑运算和移位类逻辑运算和移位类4 4、控制转移类控制转移类5 5、

29、串操作类串操作类6 6、处理器控制类处理器控制类80868086指令系统按功能可分为指令系统按功能可分为6 6大类型:大类型:68数据传送类指令数据传送类指令按功能可分为五种(按功能可分为五种(掌握掌握):):通用数据传送指令:通用数据传送指令:MOV堆栈操作指令堆栈操作指令:PUSH、POP地址传送指令:地址传送指令:LEA交换指令:交换指令:XCHGXCHG、XLAT XLAT 输入输入/输出指令:输出指令:IN、OUT传送指令把数据从一个位置传送到另一个位置;除标志寄存器传送指令外,均不影响标志位;69 3.4.1 3.4.1 通用数据传送指令通用数据传送指令格式格式:MOVdest,s

30、ource目的目的源源功能:将一个字节或一个字操作数据从源传功能:将一个字节或一个字操作数据从源传送至目的地址中,源内容保持不变。送至目的地址中,源内容保持不变。70MOVMOV指令指令的的9 9种形式:种形式:REGREG通用寄存器通用寄存器 AX AHAX AH BX AL BX AL CX BH CX BH DX BL DX BL SP CH SP CH BP CL BP CL SI DH SI DH DI DL DI DL段寄存器段寄存器SS DS ESSS DS ESim立即数立即数MEM存储器存储器CS71MOVMOV指令指令的的9 9种形式:种形式:MOV REGMOV REG,

31、im im;立即数送通用寄存器立即数送通用寄存器MOV REGMOV REG,REGREG;通用寄存器之间传送通用寄存器之间传送MOV REGMOV REG,MEMMEM;存储器送通用寄存器;存储器送通用寄存器MOV MEMMOV MEM,REGREG;通用寄存器送存储器;通用寄存器送存储器MOV MEMMOV MEM,im im;立即数送存储器立即数送存储器REGREGSS DS ESSS DS ESimMEMCSMOV REGMOV REG,SEG SEG ;段寄存器送通用寄存器(含段寄存器送通用寄存器(含CS)MOV MEMMOV MEM,SEGSEG;段寄存器送存储器(含;段寄存器送存

32、储器(含CS)MOV SEGMOV SEG,REG REG ;通用寄存器送段寄存器(通用寄存器送段寄存器(CSCS除外)除外)MOV SEGMOV SEG,MEM MEM ;存储器送段寄存器(存储器送段寄存器(CSCS除外)除外)72目的操作数寄存器REG存贮器MEM段寄存器SEG73源操作数立即数IM寄存器REG段寄存器段寄存器SEG存贮器MEM74MOVREG,OPRDnOPRD:im,REG,MEM,SEGMOVREG,OPRDMOVMEM,OPRDOPRD:im,REG,SEGMOVSEG,OPRDOPRD:REG,MEM75格式格式:MOVREG,im目的目的源源R-im型型立即数传

33、送到通用寄存器立即数传送到通用寄存器MOV CL,5 ;Byte MOV AX,03FFH ;Word76n在寄存器之间传送数据在寄存器之间传送数据。MOV AL,BL;ByteMOV AX,DX;Word MOV SI,BP;Word格式格式:MOVREG,REG目的目的源源R-R型型77格式格式:MOVREG,MEM目的目的源源R-M型型n 存存贮贮器器单单元元的的数数传传递递到到寄寄存存器器(除除了了CSCS和和IPIP以外以外)中。中。MOV AL,NUMBER ;BYTE MOV DX,SI;WORD78格式格式:MOVMEM,REG目的目的源源M-R型型n寄寄存存器器(除除了了IP

34、IP以以外外)中中数数传传递递到到存存贮贮器器单元中。单元中。MOV BUFFER,AL ;BYTE MOV DI,CX ;WORD79格式格式:MOVMEM,im目的目的源源M-im型型 立即数传送到存储单元立即数传送到存储单元MOV BYTE PTR BX,04H ;Byte MOV WORD PTRSI,03FFH ;Word注意:立即数只能出现在源操作数位置注意:立即数只能出现在源操作数位置80n使用中需要注意的是:MOV指令不能在两个存贮器单元之间进行数据直接传送。MOV指令不能在两个段寄存器之间进行数据直接传送。立即数不能直接传送给段寄存器。目的操作数不能为CS、IP。81其中,的

35、传送可用通用寄存器作为中介,用两条传送指令完成。例如,为了将在同一个段内的偏移地址为AREA1的数据传送到偏移地址为AREA2单元中去,可执行以下两条传送指令:MOVAL,AREA1MOVAREA2,AL82例如,为了将立即数传送给DS,可执行以下两条传送指令:MOVAX,1000HMOVDS,AX83n例例如如,将将以以AREA1为为首首地地址址的的100个个字字节节数数据据搬搬移移到到以以AREA2为为首首地地址址的的内内存存中中,若若AREA1和和AREA2都都在在当当前前数数据据段段中中,可可以用带有循环控制的数据传送程序来实现。程序如下:以用带有循环控制的数据传送程序来实现。程序如下

36、:MOVSI,OFFSETAREA1MOVDI,OFFSETAREA2MOVCX,100AGAIN:MOVAL,SIMOVDI,ALINCSIINCDIDECCXJNZAGAIN84其它类型其它类型MOV AX,DSMOV BX,CSMOV DI,SSMOV BX,CSMOV DS,AXMOV ES,BXMOV SS,SI853.4.2堆栈操作指令堆栈操作指令堆栈是内存中的一个特定区域,由堆栈是内存中的一个特定区域,由SS的内的内容和容和SP的内容来决定。的内容来决定。堆栈操作具有堆栈操作具有“后进先出后进先出”的特点。的特点。有两种指令:有两种指令:PUSHOPRD(压入压入)POPOPRD

37、(弹出弹出)86格式格式:PUSHOPRD功能:将寄存器或内存单元的内容入栈。功能:将寄存器或内存单元的内容入栈。压栈压栈PUSH AX PUSH SI PUSH DISPBX87uPUSH AXPUSH AX的操作:的操作:SPSP(SP)-1(SP)-1 SP SP所指栈顶所指栈顶(AH)(AH)SP SP(SP)-1(SP)-1SPSP所指栈顶所指栈顶(AL)(AL)88格式格式:POPOPRD功能:将栈顶的一个字送到寄存器或内存功能:将栈顶的一个字送到寄存器或内存单元中。单元中。出栈出栈POP AX POP SI POP DISPBX89uPOP AXPOP AX的操作:的操作:ALA

38、LSPSP SP SP(SP)+1(SP)+1 AH AHSPSP SP SP(SP)+1(SP)+190u堆栈指令中的操作数堆栈指令中的操作数OPRD:SSSS、DSDS、ESES 16 16位的通用寄存器位的通用寄存器 WORDWORD型的型的MEMMEM数数91nMOVAX,8000HnMOVSS,AXnMOVSP,2000HnMOVDX,3E4AHnPUSHDXnPUSHAX例如:92n当执行完两条压入堆栈的指令时,堆栈中的内容如图3.14所示。压入堆栈指令nPUSHDX的执行过程为:nSP(SP)1;n栈顶(DH)nSP(SP)1;n栈顶(DL)n压入堆栈指令PUSHAX的执行过程为

39、:nSP(SP)1;n栈顶(AH)nSP(SP)1;n栈顶(AL)93图3.14 堆栈操作示意图 94这类指令有:这类指令有:这类指令有:这类指令有:1 1)LEALEA有效地址传送到寄存器有效地址传送到寄存器有效地址传送到寄存器有效地址传送到寄存器2 2)LDSLDS将双字指针送到寄存器和将双字指针送到寄存器和将双字指针送到寄存器和将双字指针送到寄存器和DSDS3 3)LESLES将双字指针送到寄存器和将双字指针送到寄存器和将双字指针送到寄存器和将双字指针送到寄存器和ESESEgEg:LEALEA BX,1000HBX,1000HLDSLDS SI,1000HSI,1000HLESLES D

40、I,1000HDI,1000H3.4.3地址传送指令地址传送指令95 1、LEA指令 格式:格式:LEA DST,SRC功功能能:把把存存储储单单元元的的16位位有有效效偏偏移移地地址址EA送指定的寄存器送指定的寄存器。96图3-15 LEA指令 97 【例5-15】执行前SI2030H。执行执行LEA SILEA SI,4A1BH4A1BH后,后,SISI4A1BH4A1BH,为把某单元的偏移地址,为把某单元的偏移地址4A1BH4A1BH送送SISI。执行执行MOV SIMOV SI,4A1BH4A1BH后,后,SISI4A1BH4A1BH,为把立即数,为把立即数4A1BH4A1BH送送SI

41、SI。执行LEA SI,SI4A1BH后,SI6A4BH。98 2、LDS 指令指令(LDS是是Load Data Segment)格式:LDS DST,SRC功功能能:把把内内存存4个个单单元元的的32位位数数,分分别别送送到到段段寄寄存存器器DS和由和由DST指出的偏移量寄存器。指出的偏移量寄存器。BX/SI/DI 低16位 DS 高16位 99图3-16 LDS指令 100 【例5-16】执行LDS SI,DI100AH指令的结果是SI(DS10H DI 100AH,DS10H DI 100BH),DS(DS10HDI100CH,DS10HDI100DH)。则指令执行后,DS2230H,

42、SI0180H,DI0006H。80H01H30H22H21010H21011H21012H21013H设执行前DS2000H,SIA024H,DI0006H,则指令指出的存储单元地址为:20000H0006H100AH21010H,21011H,21012H,21013H。设4个单元的内容如下:101 3、LES 指令指令(LDS是是Load Extra Segment)格式:LES DST,SRC 功功能能:把把内内存存4个个单单元元的的32位位数数送送到到段段寄寄存存器器ES和和由由DST指出的偏移量寄存器。指出的偏移量寄存器。BX/SI/DI 低16位ES 高16位 102图3-17

43、LES指令 ES1031、交换指令交换指令格式格式:XCHGDEST,SOURCE功能:两个寄存器,寄存器和内存变量功能:两个寄存器,寄存器和内存变量之间内容的交换之间内容的交换。3.4.4其他传送类指令其他传送类指令104XCHGAL,BL XCHGBX,CX XCHGBX,SI XCHGAX,BUFFER XCHGBX,DATASI 例如:105说明:说明:(1)段寄存器不能作为操作数。段寄存器不能作为操作数。(2)源和目的不能同时为存储单元源和目的不能同时为存储单元(3)操作数不能为立即数。操作数不能为立即数。1062 2、字节交换指令、字节交换指令BSWAPOPRD1寄存器内部字节交换

44、指令,将指定的32寄存器中的4个字节,通过两两交换实现反序排列。107比如:MOVEAX,01234567HBSWAPEAX;结果(EAX)=67452301H108本本条条指指令令完完成成一一个个字字节节的的编编码码转转换换,转转换换前前要要先先在在内存中建立一个代码转换表。内存中建立一个代码转换表。3、查表指令、查表指令(代码转换指令代码转换指令)XLAT格式:XLAT功能:AL(BX)(AL)109(1)表格首地址表格首地址:BX:BX内容内容(2)(2)下标变量下标变量:AL:AL内容内容常用于无法用公式实现的代码转换。本指令不影响状态标位,表格长度不超过256字节。格雷码数码管显示代

45、码110例:查表求例:查表求n的平方。的平方。n:0-91、将、将09的平方表建立在偏移地的平方表建立在偏移地址为址为2000H的内存中,如图。的内存中,如图。2、查表查表完成求完成求完成求完成求5 5的平方指令序列为:的平方指令序列为:的平方指令序列为:的平方指令序列为:MOVBX,2000HMOVBX,2000H;指向平方表的首地址指向平方表的首地址指向平方表的首地址指向平方表的首地址MOVAL,5MOVAL,5;将;将;将;将5 5换码成换码成换码成换码成5 5的平方值的平方值的平方值的平方值XLATXLAT ;查查查查表表表表,平平平平方方方方值在值在值在值在ALAL中中中中1111

46、1)LAHFFRLAHFFR寄存器的低寄存器的低寄存器的低寄存器的低8 8位送位送位送位送AHAH2 2)SAHFAHSAHFAH送送送送 FRFR寄存器的低寄存器的低寄存器的低寄存器的低8 8位位位位3 3)PUSHFFRPUSHFFR寄存器推入堆栈寄存器推入堆栈寄存器推入堆栈寄存器推入堆栈4 4)POPFPOPF从栈顶中弹出存入从栈顶中弹出存入从栈顶中弹出存入从栈顶中弹出存入FRFR寄存器寄存器寄存器寄存器4、标志传送指令标志传送指令112113A A、读标志指令读标志指令 格式:LAHF 功能:AH FLAGSL (内含5个标志位CF、PF、AF、ZF、SF)。标志位传送指令用于了解或保

47、存标志寄存器的内容,或设置某些标志位。LOAD114B B、写标志指令写标志指令格式:SAHF功能:FLAGL AH (内含5个标志位CF、PF、AF、ZF、SF)STORE LAHF和SAHF指令示意图如图3-17所示。115图3-17 LAHF和 SAHF指令 116 C C、FLAGSFLAGS入栈指令入栈指令 格式:格式:PUSHF 功能:功能:FLAGS入栈。入栈。入栈操作步骤依次为:SPSP1,SS10HSPFLAGSH,SPSP1,SS10HSPFLAGSL。FLAGSH和和FLAGSL是是FLAGS的高、低的高、低8位。位。117 DD、FLAGSFLAGS出栈指令出栈指令 格

48、式:格式:POPF 功能:功能:FLAGS出栈。出栈。出栈操作步骤依次为:FLAGSLSS10HSP,SPSP1,FLAGSHSS10HSP,SPSP1。入栈、出栈指令常成对使用,分别用于子程序和中断服务程序首尾,保护和恢复主程序的各个标志位。118IN AL,nIN AX,nIN AL,DXIN AX,DXOUTn,ALOUT n,AXOUT DX,ALOUTDX,AX3.4.5输入输入/输出指令输出指令119三、三、I/OI/O端口寻址端口寻址(I/Oportaddressing)3-2数据寻址方式数据寻址方式 1 1、IO指令格式:指令格式:2 2、PORTPORT的两种寻址方式:的两种

49、寻址方式:INACC,PORTOUTPORT,ACC直接寻址:直接寻址:INAL,60H间接寻址间接寻址:INAL,DX120(1)直接寻址 输入输出指令中直接给出一一个个字字节节表示的接口地址。直接地址:直接地址:8bit 地址范围:地址范围:00HFFH例如:INAL,35HOUT63H,AX121(2)寄存器间接寻址 输入输出指令中接口地址由DX的内容来决定。地址位数:地址位数:16bit 地址范围:地址范围:0000HFFFFH例如:MOVDX,03F8HINAL,DX表示由接口地址03F8H输入一个字节到AL。122格式格式:INACC,PORT功能:功能:从从PORT将将8位或位或

50、16位数据送入位数据送入ACC中。中。IN AL,10H IN AX,20H IN AL,DX INAX,DX 3、IN输入指令指令123格式格式:OUT PORT,ACC功能:功能:将累加器将累加器AL或或AX的内容输出到指定的内容输出到指定的的IO端口中。端口中。OUT 40H ,AL OUT 20H ,AX OUT DX ,AL OUTDX ,AX,4、OUT输入指令指令1243.5算术运算指令算术运算指令n3.5.1加法指令加法指令n3.5.2减法指令减法指令n3.5.3乘法指令乘法指令n3.5.4除法指令除法指令 1251、这类指令实现加、减、乘、除运算。2、共有两类数据:无符号数带

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁