版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 指令系统微机原理与接口技术21 指令格式指令格式2 寻址方式寻址方式3 机器码表示机器码表示4第第3章章 指令系统指令系统5 算术运算指令算术运算指令总目录总目录36 逻辑运算和移位指令逻辑运算和移位指令78 程序控制指令程序控制指令9 处理器控制指令处理器控制指令第第3章章 指令系统指令系统43.1 指令格式指令格式操作码操作码操作数操作数 3 3、 寻址方式寻址方式 4 4、 指令指令 5 5、 指令系统指令系统 53.1 指令格式指令格式1 1、操作码、操作码 是指令操作功能的记述是指令操作功能的记述 。2 2、操作数、操作数 指出指令执行的操作所需指出指令执行的操作所需要数据的
2、来源要数据的来源 。OPCodeOperand63.1 指令格式(续)指令格式(续)3 3、寻址方式、寻址方式 就是寻找就是寻找操作数操作数或或操作数操作数地址的方式地址的方式 操作码操作数7指令与指令系统4、指令: 控制计算机完成某种操作的命令。指令中应包含的信息:运算数据的来源、运算结果的去向、执行的操作。5、指令系统: 处理器所能识别的所有指令的集合。8 3.2 寻址方式寻址方式 3.2.1 三种地址三种地址 3.2.2 寻址方式寻址方式 3.2.3 IO端口寻址方式端口寻址方式 3.2.4 转移地址的寻址方式转移地址的寻址方式9逻辑地址逻辑地址LALA有效地址有效地址EAEA 3 3、
3、 物理地址物理地址PA PA 一、三种地址一、三种地址3-2 寻址方式寻址方式10一、三种地址一、三种地址3-2 寻址方式寻址方式 1 1、逻辑地址、逻辑地址:(Logical Address ) 2 2、有效地址、有效地址:( Effective Address )指令中给出的操作数地址指令中给出的操作数地址 叫逻辑地址。以叫逻辑地址。以段基段基值:偏移量值:偏移量形式呈现。形式呈现。 如:如:DSDS:BX BX 在寻址方式中,逻辑地址的形成是由多个分量组合而在寻址方式中,逻辑地址的形成是由多个分量组合而成,该组合中的偏移地址又叫有效地址。成,该组合中的偏移地址又叫有效地址。有效地址有效地
4、址EAEA是一个是一个1616位无符号数,表示位无符号数,表示操作数操作数所在单元到段首的所在单元到段首的距离。即距离。即逻辑地址逻辑地址的的偏移地址偏移地址。11一、三种地址(续)一、三种地址(续)3-2 寻址方式寻址方式 3 3、物理地址、物理地址:( Physical Address ) 4 4、PAPA的实际意义:的实际意义:在在存储器存储器里以里以字节字节为单位存储信息为单位存储信息,每一个字节单元每一个字节单元给以一个唯一的给以一个唯一的存储器地址存储器地址,称为物理地址,称为物理地址。PA就是,出现在就是,出现在CPU外部地址总外部地址总线上的寻址物理内存的地址信号线上的寻址物理
5、内存的地址信号 125 5、MOVMOV数据传送指令数据传送指令格式格式: MOV dest, source 目的目的 源源13二、寻址方式二、寻址方式立即寻址立即寻址寄存器寻址寄存器寻址 3 3、 直接寻址直接寻址 4 4、 寄存器间接寻址寄存器间接寻址 5 5、 寄存器相对寻址寄存器相对寻址 6、 基址加变址寻址基址加变址寻址 7、 相对的相对的基址加变址寻址基址加变址寻址14二、寻址方式(续)二、寻址方式(续) 立即数只能作为源操作数 立即数可以是无符号或带符号数,其数值应在可取值范围内15 图3.2 立即寻址 .操作码imLimHAHAL16例如:MOVAL,80HMOVAX,1090
6、HMOVEAX,12345678H17例:例: MOV AL , BL ;88 D8 MOV AX , 1234H;B8 34 12 MOV AL , AH;88 E018 32位: EAX、EBX、ECX、EDX、ESI 、EDI 、ESP、EBP 8位: AH、AL、BH、BL、CH、CL、DH、DL16位: AX、BX、CX、DX、SI 、DI 、SP、BP19 存储器寻址存储器寻址在大多数情况下,操作数在存储器中。有效地址(Effective Address) EA=基址基址+变址变址比例因子比例因子+位移量位移量 203 3、直接寻址、直接寻址(Direct addressing)
7、当指令中的源操作数或目的操作数,当指令中的源操作数或目的操作数,采用直接给出被访问内存单元的逻辑地采用直接给出被访问内存单元的逻辑地址时,这种寻址方式称直接寻址。址时,这种寻址方式称直接寻址。例例:MOV AX , 2100H;A1 00 21MOV 1234H , AL;A2 34 1221 MOV AX,2000H 有效地址 EA=2000H 其过程如图3.3所示。指令中的16位段内偏移地址的低字节在前,高字节在后。 22图3.3 直接寻址 操作数.00H20H.32000H32001HAHAL200032000DS300023两个概念两个概念MOV AX , 3E4CHMOV AX ,
8、ES:3E4CHMOV AX , RESULT244 4、寄存器间接寻址、寄存器间接寻址内存单元的逻辑偏移地址通过寄存内存单元的逻辑偏移地址通过寄存器间接给出。器间接给出。MOV AX , BXMOVAX , SIMOVAX , DI MOVAX , BP25 由寄存器间接给出操作数的偏移地址; 存放偏移地址的寄存器称为间址寄存器间址寄存器,它们是:BX,BP,SI,DI 操作数的段地址(数据处于哪个段)取决于选择哪一个间址寄存器: 4、寄存器间接寻址、寄存器间接寻址BP默认在堆栈段SSBX, SI, DI默认在数据段DS26 例:MOV AX,SI 其过程如图3.5(a)所示。 例:MOV
9、AX,BP 其过程如图3.5(b)所示。 27图3.5 寄存器间接寻址 285 5、寄存器相对寻址、寄存器相对寻址(Register Relative Addressing)EA= + DISP BP BX EA= + DISP DI SI 295 5、寄存器相对寻址、寄存器相对寻址当使用当使用BXBX或或BPBP寄存器时,称寄存器时,称基址寻址基址寻址。使用使用SISI或或DIDI寄存器时,称寄存器时,称变址寻址变址寻址。例例: MOV CX , BX+36HMOV BP 20 , ALDISP 可以为8位、16位或32位补码。30 在一般情况下,若用BX 、 SI或DI进行相对寻址时,以数
10、据段寄存器DS作为地址基准。 而用BP寻址时,则以堆栈段寄存器作为地址基准。 例:MOV AX,DISPSI 其过程如图3.6所示。 31图3.6 寄存器相对寻址 操作数.00H20H.33000H33001HAHAL100033000DS30002000SIDISP32 6 6、基址加变址寻址、基址加变址寻址(Based Indexed addressing) 将基址寄存器和变址基址寄存器和变址寄存器联合起来进行 的寻址就称为基址加变址寻址。EA= + BP DI BX SI 33 BX BP SI DI 基址寄存器变址寄存器EA=EA=基址基址+ +变址变址34 同理,若用BX作为基地址,
11、则操作数应放在数据段DS区域中; 若用BP作为基地址,则操作数应放在堆栈段SS区域中。 例:MOVAX,BXSI 其过程如图3.7所示。35 图3.7 基址、变址寻址 操作数.33000H33001HAHAL200033000DS30001000SIBX.36 7 7、相对的基址加变址寻址、相对的基址加变址寻址 (Based Indexed addressing) 它的它的EAEA是由三部分组成的,基址寄存器是由三部分组成的,基址寄存器BXBX或或BPBP的内容加上变址寄存器的内容再加的内容加上变址寄存器的内容再加位移量。位移量。 物理地址由基址寄存器按规则选择段寄存物理地址由基址寄存器按规则
12、选择段寄存器,也可以使用段超越。器,也可以使用段超越。例例: MOV AX , 8AHBXSI该例中该例中EABXSI 8AH PADS10HBXSI 8AH37 7.7.相对的基址加变址寻址(续)相对的基址加变址寻址(续)基址、变址、相对寻址方式实际上是第6种寻址方式的扩充。即操作数的地址是由基址、变址方式得到的地址再加上由指令指明的8位或16位的相对位移地址而得到的。 EA= + + BP DI 位移量 BX SI 8位或16位38例:MOV AX,DISPBXSI 其过程如图3.8所示。 39图3.8 基址、变址、相对寻址 操作数.33200H33201HAHAL020033200DS3
13、0002000SIDISP1000BX.40若若 中含中含BP,则隐含使用,则隐含使用SS来提供段基来提供段基 址,其它均隐含用址,其它均隐含用DS。均可以段超越。均可以段超越。4142 在指令中没有明显的标出,而指定寄存器在指令中没有明显的标出,而指定寄存器参加操作,称之为参加操作,称之为“隐含寻址隐含寻址”。DAAMUL BLPUSH AX POP CX . . . 8、隐含寻址隐含寻址43 在有些指令的指令码中,不仅包含有操作码信息,而且还隐含了操作数地址的信息。 例如乘法指令MUL的指令码中只需指明一个乘数的地址,另一个乘数和积的地址是隐含固定的。 这种将操作数的地址隐含在指令操作码中
14、的寻址方式称为隐含寻址。 8.隐含寻址(续)隐含寻址(续)44459.9.相对的带比例因子的变址寻址相对的带比例因子的变址寻址即操作数的EA地址是由变址寄存器之值乘以比例因子后,再加上由指令指明的8位或16位的相对位移量而得到的。比例因子为1、2、4、8。方便处理:字节、字、双字和四字数据。 EA=变址比例因子+位移量 46例如:IMULEBX,ESI*4+07H4710.10.基址加比例因子的变址寻址基址加比例因子的变址寻址即操作数的EA地址是由基址寄存器内容,与变址寄存器之值乘以比例因子的乘积之和而得到的。EA=基址+变址比例因子 48例如:MOVEAX,EBXESI*4MOVECX,ED
15、I*8EAX4911.11.相对的基址加比例因子的变址寻址相对的基址加比例因子的变址寻址即操作数的EA地址是由基址寄存器内容,与变址寄存器之值乘以比例因子的乘积之和,再加上由指令指明的8位或16位的相对位移量而得到的。EA=EA=基址基址+ +变址变址比例因子比例因子+ +位移量位移量 50例如:MOVEAX,EBXESI*4+1200HMOVEAX,EDI*4EBP+8051 1.若若CS=A000H,求当前代码段在存储器中的物理地求当前代码段在存储器中的物理地址范围是什么?若数据段位于址范围是什么?若数据段位于52000H到到61FFFH的的64K范围内,问范围内,问DS=? 2.若当前若
16、当前SS=3500H,SP=0800H,说明堆栈段在存储说明堆栈段在存储器中的物理地址,若此时入栈器中的物理地址,若此时入栈10个字节,个字节,SP内容内容是什么?若再出栈是什么?若再出栈6个字节,个字节,SP为什么值?为什么值? 3.某程序数据段中存放了两个字某程序数据段中存放了两个字1EE5H和和2A8CH,已知(已知(DS)=7850H,数据存放的偏移地址为数据存放的偏移地址为3121H及及285AH。试画图说明它们在存储器中的存放情况。试画图说明它们在存储器中的存放情况。若要读取这两个字,需要对存储器进行几次操作?若要读取这两个字,需要对存储器进行几次操作?52三、三、 I/OI/O端
17、口寻址端口寻址(I/O port addressing) 3-2 寻址方式寻址方式 1 1、输入指令例子:、输入指令例子: 2 2、输出指令例子:、输出指令例子:INAL , PORTIN AX , PORT OUT PORT , AL OUT PORT , AX53三、三、 I/OI/O端口寻址端口寻址(I/O port addressing) 3-2 寻址方式寻址方式 3 3、 IO指令格式:指令格式: 4 4、PORTPORT的两种寻址方式:的两种寻址方式:INACC , PORTOUT PORT , ACC直接寻址:直接寻址:IN AL , 60H间接寻址间接寻址: IN AL , D
18、X54(1) 直接寻址 输入输出指令中直接给出一个字节一个字节表示的接口地址。 直接地址:直接地址:8bit 地址范围:地址范围:00HFFH 例如:IN AL,35H OUT 63H,AX55(2)寄存器间接寻址 输入输出指令中接口地址由DX的内容来决定。 地址位数:地址位数:16bit 地址范围:地址范围:0000HFFFFH例如: MOV DX,03F8H IN AL, DX 表示由接口地址03F8H输入一个字节到AL。56转移地址的寻址方式转移地址的寻址方式段内直接寻址段内直接寻址段内间接寻址段内间接寻址 3 3、 段间直接寻址段间直接寻址 4 4、 段间间接寻址段间间接寻址57转移地
19、址的寻址方式(续转移地址的寻址方式(续1) (1 1)、程序转移:)、程序转移: (2 2)、段内转移:)、段内转移: 取指令的地址由取指令的地址由CS和和IP决定。决定。 所谓程序转移,就是修改所谓程序转移,就是修改CS和和IP的值。的值。 只修改IP的值就是段内转移。58转移地址的寻址方式(续转移地址的寻址方式(续2) (3 3)、段间转移:)、段间转移: (4 4)、直接转移和间接转移:)、直接转移和间接转移: 同时修改同时修改CS和和IP的值,就是的值,就是 段间转移。段间转移。 无论段内转移还是段间转移都有 直接转移和间接转移之分。59 3.3 指令的机器码表示方法指令的机器码表示方
20、法 3.3.1 指令格式和数据类型指令格式和数据类型 3.3.2 编码目的和特点编码目的和特点 3.3.3 指令代码的编制指令代码的编制60一、一、80868086的指令格式及数据类型的指令格式及数据类型3.3 指令的机器码表示方法(续)指令的机器码表示方法(续)1.1.指令格式:指令格式:612.2.指令中的操作数指令中的操作数 单操作数指令单操作数指令 指令助记符指令助记符 指令的指令的16进制代码进制代码 INC AX ;40H INC BX ;43H62 双操作数指令双操作数指令 指令助记符指令助记符 指令的指令的16进制代码进制代码 MOV AL , 04 ;B004H MOV AX
21、 , 04 ;B80400633.3.指令中的数据类型指令中的数据类型643.3 3.3 指令的机器码表示方法(续)指令的机器码表示方法(续)二、机器语言指令的编码目的和特点二、机器语言指令的编码目的和特点目的:用二进制编码表示各种操作和寻址方式。目的:用二进制编码表示各种操作和寻址方式。特点:没有指令与机器语言的对照表,只有每种特点:没有指令与机器语言的对照表,只有每种 基本指令类型的编码格式。基本指令类型的编码格式。65三、机器语言指令代码的编制三、机器语言指令代码的编制1.1.寄存器之间或寄存器与存储器之间数据传寄存器之间或寄存器与存储器之间数据传 送指令的编码格式送指令的编码格式R/M
22、REGMOD1 0 0 0 1 0 D W15 8 7 6 5 4 3 2 1 0 操作码操作码0:数据从寄存器传出数据从寄存器传出1:数据传至寄存器数据传至寄存器668086 寄存器编码表寄存器编码表REGW=1(字)(字)W=0(字节)(字节)000011001010100111101110AXBXCXDXSPDIBPSIALBLCLDLAHBHCHDHREG段寄存器01110010CSDSESSSR/MREGMOD1 0 0 0 1 0 D W15 8 7 6 5 4 3 2 1 0 操作码操作码0:数据从寄存器传出数据从寄存器传出1:数据传至寄存器数据传至寄存器MODR/M000001
23、01001110010111011100011011BX+SIBX+DIBP+SIBP+DI SIDID16(直接地址)BXBX+SI+D8BX+DI+D8BP+SI+D8BP+DI+D8 SI+D8DI+D8BP+D8BX+D8BX+SI+D16BX+DI+D16BP+SI+D16BP+DI+D16 SI+D16DI+D16BP+D16BX+D16W=0W=1ALAXCLCXDLDXBLBXAHSPCHBPDHSIBHDIR/MREGMOD1 0 0 0 1 0 D W15 8 7 6 5 4 3 2 1 0 操作码操作码0:数据从寄存器传出数据从寄存器传出1:数据传至寄存器数据传至寄存器6
24、82.2.立即数寻址指令的编码立即数寻址指令的编码3.3.包含段寄存器的指令的编码包含段寄存器的指令的编码4.4.段超越前缀指令的编码段超越前缀指令的编码69 3.4 3.4.2 3.4.3 标志传送指令标志传送指令 3.4.4 7080868086的指令集的指令集80868086指令系统按功能可分为指令系统按功能可分为6 6大类型:大类型:71将数据从一个部位传送到另一部位。将数据从一个部位传送到另一部位。不影响标志不影响标志寄存器中的状态标志位。寄存器中的状态标志位。72功能:将一个字节或一个字操作数据从源传功能:将一个字节或一个字操作数据从源传送至目的地址中,源内容保持不变。送至目的地址
25、中,源内容保持不变。一、通用数据传送指令一、通用数据传送指令格式格式: MOV dest, source 目的目的 源源73MOVMOV指令指令的的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存储器存储器CS74MOVMOV指令指令的的9 9种形式:种形式: MOV REGMOV REG,im im ;立即数送通用寄存器立即数送
26、通用寄存器 MOV REGMOV REG,REGREG;通用寄存器之间传送通用寄存器之间传送 MOV REGMOV REG,MEMMEM;存储器送通用寄存器;存储器送通用寄存器 MOV MEMMOV MEM,REGREG;通用寄存器送存储器;通用寄存器送存储器 MOV MEMMOV MEM,im im ;立即数送存储器立即数送存储器REGREGSS DS ESSS DS ESimMEMCS MOV REGMOV REG,SEG SEG ;段寄存器送通用寄存器(含段寄存器送通用寄存器(含CS) MOV MEMMOV MEM,SEGSEG ;段寄存器送存储器(含;段寄存器送存储器(含CS) MOV
27、 SEGMOV SEG,REG REG ;通用寄存器送段寄存器(通用寄存器送段寄存器(CSCS除外)除外)MOV SEGMOV SEG,MEM MEM ;存储器送段寄存器(存储器送段寄存器(CSCS除外)除外)75目的操作数寄存器REG存贮器MEM段寄存器SEG76源操作数立即数IM寄存器REG段寄存器段寄存器SEG存贮器MEM77 MOV REG , OPRD OPRD: im, REG, MEM, SEG MOV REG,OPRD MOV MEM , OPRD OPRD: im, REG, SEG MOV SEG , OPRD OPRD: REG, MEM78格式格式: MOV REG,i
28、m 目的目的 源源R-im型型 立即数传送到通用寄存器立即数传送到通用寄存器 MOV CL, 5 ;Byte MOV AX, 03FFH ;Word79 在寄存器之间传送数据在寄存器之间传送数据。 MOV AL,BL;ByteMOV AX,DX;Word MOV SI, BP;Word格式格式: MOV REG,REG 目的目的 源源R-R型型80格式格式: MOV REG ,MEM 目的目的 源源R-M型型 存贮器单元的数传递到寄存器存贮器单元的数传递到寄存器( (除了除了CSCS和和IPIP以外以外) )中。中。 MOV AL,NUMBER ;BYTE MOV DX, SI;WORD 81
29、格式格式: MOV MEM,REG 目的目的 源源M-R型型 寄存器寄存器( (除了除了IPIP以外以外) )中数传递到存贮器中数传递到存贮器单元中。单元中。 MOV BUFFER, AL ;BYTE MOV DI, CX ;WORD 82格式格式: MOV MEM,im 目的目的 源源M-im型型 立即数传送到存储单元立即数传送到存储单元 MOV BYTE PTR BX,04H ;Byte MOV WORD PTRSI, 03FFH ;Word注意:立即数只能出现在源操作数位置注意:立即数只能出现在源操作数位置83 使用中需要注意的是: MOV指令不能在两个存贮器单元之间进行数据直接传送。
30、MOV指令不能在两个段寄存器之间进行数据直接传送。 立即数不能直接传送给段寄存器。 目的操作数不能为CS、IP。 84 其中,的传送可用通用寄存器作为中介,用两条传送指令完成。 例如,为了将在同一个段内的偏移地址为AREA1的数据传送到偏移地址为AREA2单元中去,可执行以下两条传送指令: MOV AL,AREA1 MOV AREA2,AL 85例如,为了将立即数传送给DS,可执行以下两条传送指令: MOV AX,1000H MOV DS,AX86 例如,将以AREA1为首地址的100个字节数据搬移到以AREA2为首地址的内存中,若AREA1和AREA2都在当前数据段中,可以用带有循环控制的数
31、据传送程序来实现。程序如下: MOV SI,OFFSETAREA1 MOV DI,OFFSETAREA2 MOV CX,100 AGAIN:MOV AL,SI MOV D1,AL INC SI INC DI DEC CX JNZ AGAIN 87其它类型其它类型MOV AX, DSMOV BX, CSMOV DI, SSMOV BX, CSMOV DS, AXMOV ES, BXMOV SS, SI88 2、堆栈操作指令、堆栈操作指令 堆栈是内存中的一个特定区域,由SS的内容和SP的内容来决定。堆栈操作具有“后进先出后进先出”的特点。 有两种指令: PUSHOPRD (压入) POPOPRD
32、(弹出)89格式格式: PUSH OPRD功能:将寄存器或内存单元的内容入栈。功能:将寄存器或内存单元的内容入栈。压栈压栈 PUSH AX PUSH SI PUSH DISPBX 90uPUSH AXPUSH AX的操作:的操作: SPSP(SP)-1(SP)-1 SP SP所指栈顶所指栈顶(AH)(AH) SP SP(SP)-1(SP)-1SPSP所指栈顶所指栈顶(AL)(AL)91格式格式: POP OPRD功能:将栈顶的一个字送到寄存器或内存功能:将栈顶的一个字送到寄存器或内存 单元中。单元中。出栈出栈 POP AX POP SI POP DISPBX 92uPOP AXPOP AX的操
33、作:的操作: ALALSPSP SP SP(SP)+1(SP)+1 AH AHSPSP SP SP(SP)+1(SP)+193u堆栈指令中的操作数堆栈指令中的操作数OPRD: SSSS、DSDS、ESES 16 16位的通用寄存器位的通用寄存器 WORDWORD型的型的MEMMEM数数94 MOV AX,8000H MOV SS,AX MOV SP,2000H MOV DX,3E4AH PUSH DX PUSH AX 例如:95 当执行完两条压入堆栈的指令时,堆栈中的内容如图3.14所示。压入堆栈指令 PUSH DX的执行过程为: SP (SP)1; 栈顶(DH) SP (SP)1; 栈顶(D
34、L) 压入堆栈指令PUSH AX的执行过程为: SP (SP)1; 栈顶(AH) SP (SP)1; 栈顶(AL)96图3.14 堆栈操作示意图 00H.80001FFFH80H4AH3E80001FFEH80001FFDH80001FFCH97A A、XCHGXCHG 3、格式格式: XCHG DEST,SOURCE功能:两个寄存器,寄存器和内存变量功能:两个寄存器,寄存器和内存变量 之间内容的交换之间内容的交换 。98XCHGAL,BL XCHGBX,CX XCHGBX,SI XCHGAX,BUFFER XCHGBX,DATASI 例如: 99说明:说明:(1)(2) (3)100B B
35、、交换指令、交换指令BSWAPBSWAP BSWAP OPRD1 寄存器内部字节交换指令,将指定的32寄存器中的4个字节,通过两两交换实现反序排列。101比如:MOV EAX, 01234567HBSWAPEAX;使得EAX =6745 2301H102本条指令完成一个字节的编码转换,转换前要先在本条指令完成一个字节的编码转换,转换前要先在内存中建立一个代码转换表。内存中建立一个代码转换表。 4、查表指令、查表指令(代码转换指令代码转换指令)XLAT 格式:XLAT 功能:AL(BXAL)103表格首地址表格首地址: BX: BX内容内容下标变量下标变量: AL: AL内容内容常用于无法用公式
36、实现的代码转换。本指令不影响状态标位,表格长度不超过256字节。 格雷码 数码管显示代码104例:查表求例:查表求n的平方。的平方。n:0-91、将、将09的平方表建立在偏移的平方表建立在偏移地址为地址为2000H的内存中,如图。的内存中,如图。2、查表查表105106 1、 LEA指令 格式:LEA DST,SRC 功能:把存储单元的16位有效偏移地址EA送指定的寄存器。 107图3-15 LEA指令 REGBXSPBPSIDI(16)偏移量MEMXXXXHXXXXH108 【例5-15】 执行前SI2030H。 执行LEA SI,4A1BH后,SI4A1BH,为把某单元的偏移地址4A1BH
37、送SI。 执行MOV SI,4A1BH后,SI4A1BH,为把立即数4A1BH送SI。 执行LEA SI,SI4A1BH后,SI6A4BH。 109 2、 LDS 指令(LDS是“Load Data Segment”的简写) 格式:LDS DST,SRC 示意图如图3-16所示。 功能:把内存4个单元的32位数送到段寄存器DS和由DST指出的偏移量寄存器。低16位BX/SI/DI,高16位DS,且低字节低位,高字节高位。 110图3-16 LDS指令 REGBXSIDIDSMEM指令选中的单元111 【例5-16】 执行LDS SI,DI100AH指令的结果是SI(DS10HDI100AH,D
38、S10HDI100BH),DS(DS10HDI100CH,DS10HDI100DH)。 设执行前DS2000H,SIA024H,DI0006H,则指令指出的存储单元地址为:20000H0006H100AH21010H,21011H,21012H,21013H。设4个单元的内容如下: 则指令执行后,DS2230H,SI0180H,DI0005H。 80H01H30H22H 21010H 21011H 21012H 21013H112 3、 LES 指令(LDS是“Load Extra Segment”的简写) 格式:LES DST,SRC 示意图如图3-17所示。 功能:把内存4个单元的32位数
39、送到段寄存器ES和由DST指出的偏移量寄存器。低16位BX/SI/DI,高16位ES,且低字节低位,高字节高位。 113图3-17 LES指令 ES1141151161 1、 读标志指令读标志指令LAHFLAHF 格式:LAHF 功能:AH FLAGSL (内含5个标志位CF、PF、AF、ZF、SF)。 标志位传送指令用于了解或保存标志寄存器的内容,或设置某些标志位。 LOAD1172 2、 写标志指令写标志指令SAHFSAHF格式:SAHF功能:FLAGL (内含5个标志位CF、PF、AF、ZF、SF)AH。 LAHF和SAHF指令示意图如图3-17所示。STORE118图3-17 LAHF
40、和 SAHF指令 OF DFIF TF SF ZFAFPFCFFLAGSD15D8D7D0SAHFLAHFD0D7AH119 3 3、 FLAGSFLAGS入栈指令入栈指令PUSHFPUSHF 格式:PUSHF 功能:FLAGS入栈。 入栈操作步骤依次为: SPSP1,SS10HSPFLAGSH, SPSP1,SS10HSPFLAGSL。 FLAGSH和FLAGSL是FLAGS的高、低8位。 120 4 4、 FLAGSFLAGS出栈指令出栈指令POPFPOPF 格式:POPF 功能:FLAGS出栈。 出栈操作步骤依次为: FLAGSLSS10HSP,SPSP1, FLAGSHSS10HSP,
41、SPSP1。 入、出栈指令常成对使用,分别用于子程序和中断服务程序首尾,保护和恢复主程序的各个标志位。 121122格式格式: IN ACC,PORT功能:功能:从从PORT将将8位或位或16位数据送入位数据送入ACC中。中。 IN AL, 10H IN AX, 20H IN AL, DX IN AX, DX 1、IN 输入123格式格式: OUT PORT , ACC功能:功能:将累加器将累加器AL或或AX的内容输出到指定的内容输出到指定 的的IO端口中。端口中。 OUT 40H , AL OUT 20H , AX OUT DX , AL OUT DX , AX, 2、OUT 输入124 3
42、.5 算术运算指令算术运算指令 3.5.2 3.5.3 乘法指令乘法指令 3.5.4 1251、 这类指令实现加、减、乘、除运算。2、 共有两类数据: 无符号数带符号数3 、这些指令可实现字节或字的运算。4、运算结果都会影响影响六个状态对标志位六个状态对标志位。 3.5 算术运算指令算术运算指令 (续)126 ADD ADD 不带进位加法不带进位加法ADC ADC 带进位加法带进位加法 3 3、 INC INC 增量指令增量指令 4 4、 AAA AAA 未组合十进制加法调整未组合十进制加法调整 5 5、 DAA DAA 组合十进制加法调整组合十进制加法调整127OPRD1OPRD1+OPRD
43、2 格式:格式:ADD OPRD1, OPRD2 功能:功能:实现OPRD1和OPRD2两个操作数相加,结果放入OPRD1。 128OPRD1: REG、 MEMOPRD2: REG、 MEM、 im 1 1、 ADD 不带进位加法不带进位加法 操作数:操作数:129 ADD REG, im ADD REG, REG ADD REG, MEM ADD MEM, REG ADD MEM, im130 ADDAL,30 ADDAX,SI ADDAX,3000H ADDAL,DATABX131 该指令也可以实现任一通用寄存器与立即数、累加器或别的寄存器、存贮单元的内容相加,其和放回寄存器中。例如:
44、ADD BX,3FFH ADD SI,AX ADD DI,CX ADD DX,DATABXSI 132 该指令还可以实现存贮器操作数与立即数、累加器或别的寄存器的内容相加,其和放回存贮单元中。例如: ADDBETASI,100 ADDBETASI,AX ADDBETASI,DX 这些指令执行时,对标志位CF、OF、PF、SF、ZF和AF都会产生影响。 1332 2、 ADC 带进位加法带进位加法OPRD1OPRD1+OPRD2+CF 格式:格式:ADC OPRD1, OPRD2 功能:功能:实现OPRD1和OPRD2两个操作数以及CF相加,结果放入OPRD1。134 MOV AX,FIRST
45、ADD AX,SECOND MOV THIRD,AX MOV AX,FIRST2 ADC AX,SECOND2 MOV THIRD2,AX 1353 3、 INC 增量指令增量指令OPRDOPRD+1 格式:格式:INC OPRD 功能:功能:将操作数的内容加1后,再送回该操作数中。OPRD为REG或MEM。为无符号数为无符号数136 INCINC指令常用于在循环程序中修改指令常用于在循环程序中修改地址指针和循环次数等。地址指针和循环次数等。 例如: INC AL INCSI INCDI INCWORD PTR BX137 格式:格式:DAA 功能:功能:对对AL寄存器中的寄存器中的压缩压缩B
46、CDBCD数加法操作数加法操作的结果的结果进行十进制调整。进行十进制调整。4、DAA 5、AAADAA 功能:功能:对对AL寄存器中的寄存器中的未未压缩压缩BCDBCD数加法操数加法操作的结果作的结果进行十进制调整。进行十进制调整。 格式:格式:138例1:设原AL=79H,BH=0B3H,求执行指令 ADD AL,BH后, AL=? BH=? 各个标志位的值?79H= 0111 1001B+) B3H= 1011 0011B0010 1100B1所以所以,AL=0010 1100B=2CHAL=0010 1100B=2CH,BH=0B3HBH=0B3HSF=0SF=0, ZF=0ZF=0,
47、AF=0AF=0, PF=0PF=0, CF=1CF=1, OF=0OF=0 139例2:求两个双字数据相加。假设数据1在DX(高字)和AX(低字)内,为12345678H,数据2在BX(高字)和CX(低字)内,为6789ABCDH。因为8086/8088的指令只能进行字/字节运算, 所以对于双字必须分两步进行。140第一步,低字和低字相加: ADD AX, CXAX= 5 6 7 8H+) CX= ABCDHAX= 0 2 4 5HCF= 1第二步,高字和高字相加,同时考虑低字之和向 高字进位: ADC DX, BXDX= 1 2 3 4HBX= 6 7 8 9H+) CF= 1DX= 7
48、9 B EH CF= 0141SUB SUB 不带借位减法不带借位减法ADC ADC 带带借借位减法位减法 3 3、 DEC DEC 减量指令减量指令 4 4、 NEG NEG 取补指令取补指令 5 5、 CMPCMP 比较比较指令指令 6、 DAS 压缩压缩BCDBCD数减法数减法十进制调整十进制调整 7、 AAS 非压缩非压缩BCDBCD数减法数减法十进制十进制调整调整1421 1、 SUB 不带借位减法不带借位减法OPRD1OPRD1 - OPRD2 格式:格式:SUB OPRD1, OPRD2 功能:功能:实现OPRD1与OPRD2两个操作数相减,结果放入OPRD1。比如:SUBBX,
49、CX1432 2、 SBB 带借位减法带借位减法OPRD1OPRD1 - OPRD2 - CF 格式:格式:SBB OPRD1, OPRD2 功能:功能:实现OPRD1和OPRD2两个操作数相减,同时减去借位CF,结果放入OPRD1。borrow美b:ro1443 3、 DEC 减量指令减量指令OPRDOPRD - 1 格式:格式:DEC OPRD 功能:功能:将操作数的内容减1后,再送回该操作数中。OPRD为REG或MEM。为无符号数为无符号数1454 4、 NEG 取补指令取补指令OPRD0 - OPRD 格式:格式:NEG OPRD 功能:功能:对操作数取补,结果再送回。OPRD为REG
50、或MEM。按位变反加11465 5、 CMP 比较指令比较指令OPRD1 - OPRD2 格式:格式:CMP OPRD1, OPRD2 功能:功能:实现OPRD1与OPRD2两个操作数相减,结果不送回。但影响标志位。比如:CMPAX,BX147例子 比较指令可以用于累加器与立即数,累加器与任一通用寄存器或任一内存操作数之间的比较。例如: CMP AX,2000H CMP AX,SI CMP AX,DATABX 148 该指令也可以用于任一寄存器与立即数或别的寄存器及任一内存操作数之间的比较,例如: CMP BX,04FEH CMP DX,DI CMP CX,COUNTBP 该指令还可以用于内存
51、操作数与立即数及任一寄存器中操作数之间的比较。例如: CMPDATA,100 CMPCOUNTSI,AX CMPPOINTERDI,BX 149无符号数比大小的结论无符号数比大小的结论如果如果ZF=1如果如果ZF=0 若若CF0,则,则AB 若若CF1,则,则ABCMP AX , BX150带符号数比大小的四种情况带符号数比大小的四种情况CMP AX , BX A0 ,B 0 不会溢出不会溢出 A 0 ,B0 可能溢出可能溢出 A0, B 0 可能溢出可能溢出 A 0, B 0 不会溢出不会溢出151 综上所述,可以归纳出如下结论: 当没有溢出时(OF0),若SF0, 则AXBX;若SF1,则
52、AXBX。 当产生溢出时(OF1),若SF0, 则AXBX;若SF1,则AXBX。 用逻辑表达式又可简化为用逻辑表达式又可简化为若若OF SF0则则AXBX若若OF SF1则则AXBX152带符号数比大小的结论带符号数比大小的结论如果如果ZF=1如果如果ZF=0 若若OF SF0,则,则AB 若若OF SF1,则,则AB153 例如,若自BLOCK开始的内存缓冲区中,有100个带符号的数,希望找到其中最大的一个值,并将它放到MAX单元中。 MOVBX,OFFSETBLOCK MOVAX,BX INCBX INCBX MOVCX,99 AGAIN:CMPAX,BX JGNEXT MOVAX,BX
53、 154 NEXT:INC BX INC BX DEC CX JNEAGAIN MOV AX,AX HLT 155 MUL MUL 无符号数乘法无符号数乘法IMUL IMUL 带符号数乘法带符号数乘法 3 3、 AAM AAM 对对AXAX做十进制调整做十进制调整1561 1、MULMUL无符号数乘法指令无符号数乘法指令被乘数和乘积均为隐含寻址被乘数和乘积均为隐含寻址 格式:格式:MUL SRC 功能:功能:完成两个无符号数的相乘。157 源操作数源操作数 源操作数源操作数MULBL MULCX MULBYTE PTR SI MULWORD PTR DI158字节乘以字节:MOV AL,3CH
54、MOV BL,59HMUL BLAL操作数操作数8位8位被乘数乘数 AX16位乘积159字乘以字:MOV AX,1234HMOV BX,3C09HMUL BXAX操作数操作数16位16位被乘数乘数 AX32位乘积DX160 2 2、 IMULIMUL带符号数乘法指令带符号数乘法指令这是一条带符号数的乘法指令,它和MUL一样可以进行字节和字节、字和字的乘法运算。 结果放在AX或DX、AX中。 当结果的高半部分不是结果的低半部分的符号扩展时,标志位CF和OF将置位。161 格式:格式:IMUL SRC 功能:功能:完成两个带符号数的相乘。本指令影响标志位CF和OF。IMUL BXIMUL BYTE
55、 PTR SI+6 完成两个带符号数的相乘。162乘法指令例子IMULIMUL指令例指令例设:设:AL=FEHAL=FEH,CL=11HCL=11H,求,求ALAL与与CLCL的乘积。的乘积。 若两操作数为无符号数,则若两操作数为无符号数,则 MUL CL MUL CL 结果:结果:AX=10DEHAX=10DEH 若将两操作数看作有符号数,则:若将两操作数看作有符号数,则: IMUL CL IMUL CL 结果:结果:AX=FFDEH=-34AX=FFDEH=-34。163 指令功能:指令功能: 完成对两个非压缩完成对两个非压缩BCDBCD数乘法结果的十数乘法结果的十进制数调整。进制数调整。
56、 164DIV DIV 无符号数除法无符号数除法2 2IDIV IDIV 带符号数除法带符号数除法 3 3、 AAD AAD 非压缩非压缩BCDBCD数除法校正数除法校正4 4、 CBW CBW 带符号数字节扩展带符号数字节扩展 5 5、 CWD CWD 带符号数字扩展带符号数字扩展1651 1、DIVDIV无符号数除法指令无符号数除法指令被除数、商和余数均为隐含寻址被除数、商和余数均为隐含寻址 格式:格式:DIV SRC 功能:功能:完成两个无符号数的相除。1661、 DIV无符号数除法指令 如果SRC=0,产生类型0的除法错中断。 如果结果大于寄存器可以保存的值时,也产生0型中断。167A
57、XALAH操作数操作数余数余数商商1616位位8 8位位除数除数被除数被除数字除以字节:字除以字节:MOV AX,1234HMOV BL, 58HDIV BL168AXDXAXDX操作数操作数被除数被除数余数余数商商除数除数16位位双字除以字:双字除以字:MOV DX, 1234HMOV CX, 16A8HDIV CXMOV AX, 5678H169 字节除以字节MOV AL,38H;被除数送AL CBW ;AL中的字节扩展成AX中的字DIV BL170 字除以字MOV AX,5678H CWD;把字转换成双字DX、AX DIV BX;商在AX中,余数在DX中1712 2、IDIVIDIV带符
58、号数除法指令带符号数除法指令被除数、商和余数均为隐含寻址被除数、商和余数均为隐含寻址余数符号位与被除数相同余数符号位与被除数相同 格式:格式:IDIV SRC 功能:功能:完成两个带符号数的相除。172 双倍字长除以字 MOVDX,NUM_HI_WORD;被除数高位字送DX MOVAX,NUM_LO_WORD;被除数低位字送AX IDIVDIVISOR_WORDSI1733 3、CBWCBW字节扩展字节扩展 格式:格式: CBW 功能:功能:将将ALAL的符号位(的符号位(bit7bit7)扩展到整个)扩展到整个AHAH中中若若ALAL80H80H,则则AH00H若若AL80H,AL80H,
59、则则AHFFH。Convert Byte to Word174例如: MOVAL,01011111B CBW 执行后,(AX)005FH。3 3、CBWCBW字节扩展(续)字节扩展(续)例如: MOVAL,10011111B CBW 执行后,(AX)FF9FH。1754 4、 CWDCWD字扩展字扩展 格式:格式: CWD 功能:功能:将将AXAX中的符号位(中的符号位(bit15bit15)扩展到)扩展到DXDX中中若若AX8000H, 则则DX0000H若若AX8000H, 则则DXFFFFH。Convert Word to Double Word176例如: MOVAX,1234H CW
60、D 执行后,(DX)(AX)00001234H。4 4、 CWDCWD字扩展字扩展(续)(续)例如: MOVAX,835EH CWD 执行后, (DX)(AX) FFFF835EH。1778088的调整指令主要用于十进制数的调整。 AAA对AL中ASCII未压缩的十进制和和进行调整; AAS对AL中ASCII未压缩的十进制差差进行调整; AAD在除法指令前对AX中ASCII未压缩的十进制数进行调整。 5、调整指令178 AAM对AX中两个ASCII未压缩十进制相乘结果进行调整; DAA对AL中的两个压缩十进制数相加之和相加之和进行调整,得到压缩十进制和; DAS对AL中的两个压缩十进制数相减之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西育华校2026届初三语文试题二模冲刺试题(八)含解析
- 企业信息化管理升级报告
- 资金安全保障银行承诺书(9篇)
- 2026年城市地下管网智能探测与漏损定位研究
- 2026年应用型本科教育的现状与前景展望
- XX高中国旗下的讲话-用行动书写青春的诗篇
- 历史明清时期的科技与文化 课件-2025-2026学年统编版七年级历史下册
- 2021-2022学年浙江省宁波市余姚市九年级(上)期中科学试卷-带答案详解
- 项目大体积混凝土安全专项施工方案
- 拐卖儿童犯罪协议书人
- 燃料检修潜在风险与预控措施
- 中学生防震减灾知识
- 劳务合同模板电子下载
- 新安全生产法全文-安全生产法全文
- 初中体育-篮球绕杆运球教学课件设计
- 2023年江西环境工程职业学院高职单招(数学)试题库含答案解析
- 《物理(下册)》教学课件-第六章-光现象及其应用
- 苯氨基与硝基化合物中毒
- 麦积山石窟课件
- 分数百分数应用题的复习课件
- 开复工安全检查表
评论
0/150
提交评论