第3章8086指令系统课件

上传人:202****8-1 文档编号:241298286 上传时间:2024-06-16 格式:PPT 页数:133 大小:1.49MB
返回 下载 相关 举报
第3章8086指令系统课件_第1页
第1页 / 共133页
第3章8086指令系统课件_第2页
第2页 / 共133页
第3章8086指令系统课件_第3页
第3页 / 共133页
点击查看更多>>
资源描述
黄玉清制作第第3 3章章 8086 8086指令系统指令系统3.1 概述概述3.2 指令格式指令格式3.3 8086的操作数的寻址方式的操作数的寻址方式3.3.1 立即数寻址立即数寻址3.3.2 寄存器寻址寄存器寻址3.3.3 存储器操作数寻址方式存储器操作数寻址方式3.4 IA-32通用通用指令指令3.4.1 数据传送指令数据传送指令 3.4.2 算术运算指令算术运算指令 3.4.3 逻辑运算、移位逻辑运算、移位 3.4.4 串操作指令串操作指令 3.4.5 控制转移指令控制转移指令 3.4.6 处理器控制指令处理器控制指令本章小节本章小节思考题思考题6/16/2024第3章 8086指令系统3.1 概述8/9/20231黄玉清制作本章重点本章重点基本数据类型基本数据类型8086/80888086/8088寻址寻址8086 8086 的指令系统的指令系统本章难点本章难点8086 8086 的指令系统应用的指令系统应用6/16/2024本章重点8/9/20232黄玉清制作3.1 概述概述80 x86结构的基本数据类型结构的基本数据类型字节:字节:8位位字:字:16位,位,2个字节个字节双字:双字:32位,位,4个字节个字节四字:四字:64位,位,8个字节个字节(80486CPU引入)引入)双四字:双四字:128位,位,16个字节个字节(Pentium III)数据在内存中的字节顺序数据在内存中的字节顺序80X86多字节数据的存放原则是低位字节在低端地址,多字节数据的存放原则是低位字节在低端地址,高位字节在高端地址。高位字节在高端地址。而最低地址就是操作数的地址而最低地址就是操作数的地址。3.13.1概述概述概述概述6/16/20243.1 概述80 x86结构的基本数据类型3.1概述8/9/3黄玉清制作例如例如,1B23H存放在存放在2000H与与2001H地址单元地址单元中,中,2000H即为该操作数的地址;即为该操作数的地址;6/16/2024例如,1B23H存放在2000H与2001H地址单元中,204黄玉清制作本讲要解决的问题本讲要解决的问题:8086/8088寻址寻址指令系统指令系统?指令格式指令格式?寻址概念寻址概念?寻址方式寻址方式?操作数寻址的方法操作数寻址的方法?3.13.1概述概述概述概述6/16/2024本讲要解决的问题:8086/8088寻址指令系统?3.15黄玉清制作3.2 3.2 指令格式指令格式指令格式指令格式通用格式如下:通用格式如下:操作码域:操作码域:存放指令的操作码,即指明计算机所要执行存放指令的操作码,即指明计算机所要执行的操作。的操作。地址域地址域 :指出在指令执行过程中所需要的操作数或操作:指出在指令执行过程中所需要的操作数或操作数所在的地址。数所在的地址。操作码域操作码域 操作数或操作数地址操作数或操作数地址3.2 IA-323.2 IA-32的指令格式的指令格式的指令格式的指令格式6/16/20243.2 指令格式指令格式操作码域 操作数或操6黄玉清制作立即数立即数位移量位移量寄存器寄存器方式方式操作码操作码1-21-2字节字节低低字字节节1-21-2字节字节1 1字节字节(寻址方式)(寻址方式)1 1字节字节高高字字节节高高字字节节低低字字节节r/mr/m3 3位位regreg3 3位位modmod2 2位位opcodeopcode8086 CPU指令格式指令格式3.2 IA-323.2 IA-32的指令格式的指令格式的指令格式的指令格式6/16/2024立即数位移量寄存器方式操作码1-2字节低字节1-2字节1字节7黄玉清制作机器指令机器指令:计算机能识别和执行的指令的二进制:计算机能识别和执行的指令的二进制代码。如:代码。如:10110000011000101011000001100010汇编指令汇编指令:用:用助记符助记符表示表示机器指令机器指令的操作码和操的操作码和操作数,例如上面指令的汇编指令是作数,例如上面指令的汇编指令是 MOV AL,62H MOV AL,62H3.1 IA-323.1 IA-32的指令格式的指令格式的指令格式的指令格式6/16/2024机器指令:计算机能识别和执行的指令的二进制代码。如:10118黄玉清制作指令执行时间指令执行时间指令执行时间:由时钟周期长短和执行指令所需要指令执行时间:由时钟周期长短和执行指令所需要的时钟周期数决定。的时钟周期数决定。MOV AX,BX ;MOV AX,BX ;执行时间最短执行时间最短执行时间最短执行时间最短MOV AX,1000HMOV AX,1000HMOV 2000H,CXMOV 2000H,CX3.1 IA-323.1 IA-32的指令格式的指令格式的指令格式的指令格式6/16/2024指令执行时间3.1 IA-32的指令格式8/9/20239黄玉清制作 3-3 8086 3-3 8086的操作数的寻址方式的操作数的寻址方式寻址寻址根据指令内容确定操作数地址的过程,称为寻址。根据指令内容确定操作数地址的过程,称为寻址。有效地址有效地址根据寻址方式计算所得到的地址叫做根据寻址方式计算所得到的地址叫做有效地址有效地址EAEA,也就是段内偏移地址。有效地址还需要与相应的段也就是段内偏移地址。有效地址还需要与相应的段基地址组合才是基地址组合才是2020位的物理地址,该工作由位的物理地址,该工作由CPUCPU完完成。成。寻址方式在两种方式下被涉及:寻址方式在两种方式下被涉及:操作数的寻址方式操作数的寻址方式和和对调用或转移指令对调用或转移指令的寻址方式的寻址方式。本讲只介绍对操作数的寻址本讲只介绍对操作数的寻址!3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/2024 3-3 8086的操作数的寻址方式寻址3.3 808610黄玉清制作计算机中操作数数按存放的方法分为:计算机中操作数数按存放的方法分为:立即数(指令中)立即数(指令中)寄存器数寄存器数存储器数存储器数I/O端口端口操作数操作数寻址方式寻址方式立即数立即数立即数寻址立即数寻址寄存器数寄存器数寄存器寻址寄存器寻址串操作寻址串操作寻址存储器数存储器数直接寻址直接寻址寄存器间接寻址寄存器间接寻址基址变址寻址基址变址寻址变址寻址变址寻址端口寻址端口寻址直接寻址直接寻址寄存器间接寻址寄存器间接寻址3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/2024计算机中操作数数按存放的方法分为:操作数寻址方式立即数立即数11黄玉清制作3.3.1 3.3.1 立即数寻址立即数寻址操作数由指令提供操作数由指令提供.例例:MOV AL,80 H MOV AX,1090 H MOV CX,1003.3.2 3.3.2 寄存器寻址寄存器寻址操作数在寄存器中。操作数在寄存器中。MOV AH,BL MOV AX,BX MOV CX,AX1090H AH ALAXBX3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/20243.3.1 立即数寻址1090H AH ALAXBX3.3 12黄玉清制作3.3.3 3.3.3 存储器操作数寻址方式存储器操作数寻址方式规定段寄存器规定段寄存器 3.3 8086 3.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/20243.3.3 存储器操作数寻址方式规定段寄存器 3.3 13黄玉清制作任何内存任何内存实际地址(实际地址(PAPA)都由两部分组成:都由两部分组成:PAPA段基址段内偏移地址(此单元与段基址的距离)段基址段内偏移地址(此单元与段基址的距离)段内的段内的偏移地址偏移地址又称为又称为有效地址(有效地址(EAEA).3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/2024任何内存实际地址(PA)都由两部分组成:3.3 8086的操14黄玉清制作A1H70H10H.代码段代码段直接寻址直接寻址 操作数在存储器中,其地址由指令提供操作数在存储器中,其地址由指令提供。例例:MOV AXMOV AX,1070 H 1070 H (DS)=2000 HDS)=2000 H,物理地址为:,物理地址为:PA=2000 PA=20000 0H+1070H=21070 H H+1070H=21070 H 20 H 30 H 数据段数据段2000:10702000:10712000:1072AH ALAX3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/2024A1H70H10H.代码段直接寻址 20 15黄玉清制作8086执行某种操作时,预先规定了采用的段和段寄执行某种操作时,预先规定了采用的段和段寄存器,即有基本的段约定,如果要存器,即有基本的段约定,如果要改变默认的段改变默认的段约定约定(即段超越即段超越),则需要在指令中,则需要在指令中明确指出明确指出来来.例如:例如:MOV BX,ES:3400H;将附加段将附加段ES段中偏移地址为段中偏移地址为3400H和和3401H两单元两单元的内容送的内容送BX中。中。若用若用DATA代替偏移地址代替偏移地址3400H:MOV BX,ES:DATA6/16/20248086执行某种操作时,预先规定了采用的段和段寄存器,即有基16黄玉清制作指令指令 寄存器寄存器 内存内存寄存器寄存器数据数据EA寄存器间接寻址寄存器间接寻址 操作数在存储器中操作数在存储器中,寻址方式同直接寻址相似,寻址方式同直接寻址相似,但偏移地址由指针寄存器提供但偏移地址由指针寄存器提供.3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/2024指令 寄存器 内存寄存器17黄玉清制作BX SIBP DIEA=8 或 16 位移量+EA=8 或16 位移量BX BP SI DI +8086CPU,有效地址有效地址EA计算计算:3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/2024BX SIEA=8 或 18黄玉清制作1、以、以BX寄存器进行间接寻址寄存器进行间接寻址数据段基址寻址数据段基址寻址例:例:MOV AX,BX 若若(DS)=2000 H,(BX)=1000 H 操作数操作数物理地址物理地址PA:PA=2000H*16+1000H=21000H 将将 21000 H、21001 H 单元的内容送单元的内容送 AX。执行结果:执行结果:(AX)=5B40 H 40 5B 2000:1000 H2000:1001 H8BH07H.代码段数据段AH AL5B 403.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/20241、以BX寄存器进行间接寻址数据段基址寻址 40 519黄玉清制作2、以、以BP寄存器进行间接寻址寄存器进行间接寻址堆栈段基址寻址堆栈段基址寻址例:例:MOV AX,BP 若若(SS)=5000 H,(BP)=3000 H,操作数物理地址:操作数物理地址:PA=5000H*16+3000H=53000H 将将 53000 H、53001 H 单元的内容送单元的内容送 AX。执行结果:执行结果:(AX)=4A56 H3、以、以SI、DI寄存器进行间接寻址寄存器进行间接寻址变址寻址变址寻址例:例:MOV AX,SI 若若(DS)=3000 H,(SI)=4000 H,物理地址物理地址PA=34000H,执行结果:执行结果:(AX)=201A H 34000 H34001 H1A H20 H 56 H 4A H53000H53001H3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/20242、以BP寄存器进行间接寻址堆栈段基址寻址34000 H20黄玉清制作寄存器相对寻址寄存器相对寻址例:例:MOV AL,BX+5;若若(DS)=6000H,(BX)=2000H,3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/2024寄存器相对寻址3.3 8086的操作数的寻址方式8/9/2021黄玉清制作例如:例如:MOV AL,COUNT SI 或或 MOV AX,COUNT+SI设设(DS)=6000H,(SI)=1000H,COUNT=05H 有效地址有效地址EA1000H05H=1005H 物理地址物理地址PA=6000H16+1000H+05H=61005H 6/16/2024例如:MOV AL,COUNT SI 或 MOV AX,22黄玉清制作 基址变址寻址方式基址变址寻址方式例:例:MOV AX,BPSI 设(设(SS)=2000H,(,(SI)=1000H,(,(BP)=5000H,有效地址有效地址EA1000H+5000H=6000H。3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/2024 基址变址寻址方式例:MOV AX,BPSI 23黄玉清制作相对基址变址寻址方式相对基址变址寻址方式例:例:例:例:MOV AHMOV AH,BX+DI+1234HBX+DI+1234H3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/2024相对基址变址寻址方式3.3 8086的操作数的寻址方式8/924黄玉清制作例例:设:设(BX)=1000H,(DI)=2000H,(DS)=3000H,位移量位移量=0020H H。1)直接寻址)直接寻址:MOV AX,2100H 有效地址有效地址EA=2100 H 物理地址物理地址 PA=3000 H*16+2100 H=32100H2)寄存器间接寻址)寄存器间接寻址:MOV AX,BX EA=1000H PA=30000H+1000H=31000H3)BX寄存器相对间接寻址寄存器相对间接寻址:MOV AX,BX+0020H EA=1000H+0020H=1020H PA=30000H+1020H=31020H3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/2024例:设(BX)=1000H,(DI)=2000H,25黄玉清制作4)变址寻址)变址寻址:MOV AX,DI EA=?PA=?5)DI寄存器相对变址寻址寄存器相对变址寻址:MOV AX,DI+1B57H EA=?PA=?6)基址加变址的寻址)基址加变址的寻址:MOV AX,BX+DI 7)相对的基址加变址的寻址:)相对的基址加变址的寻址:MOV AX,BX+DI+1B57 H 3.3 80863.3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式思考题:思考题:6/16/20244)变址寻址:MOV AX,DI 3.3 8086的操26黄玉清制作3.3.4 I/O3.3.4 I/O端口寻址端口寻址寻址个数寻址个数:最多可达:最多可达216=65536个个 8位位I/O端口(也可以定义端口(也可以定义16位或位或32位)位)直接寻址直接寻址地址编号地址编号256,可寻址可寻址I/O端口前端口前256个;个;IN AL,60H;将;将60H端口中的数据输入到端口中的数据输入到AL中。中。IN AX,80H;将;将80H与与81H相邻两个端口的相邻两个端口的16位数据输入到位数据输入到AX中。中。用用DX寄存器寻址寄存器寻址地址范围可达地址范围可达FFFFH,可寻址可寻址64KI/O端口。端口。MOVDX,333H;将端口地址送入;将端口地址送入DXOUTDX,AL;将;将AL中的数据输出到中的数据输出到DX所指的端口中所指的端口中MOVDX,330H;将端口地址送入;将端口地址送入DXIN AL,DX;将;将DX所指的端口中的数据输入到所指的端口中的数据输入到AL中中 3-3 8086 3-3 8086的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式的操作数的寻址方式6/16/20243.3.4 I/O端口寻址寻址个数:最多可达216=27黄玉清制作3.4 通用指令重点介绍重点介绍8086 8086 的指令系统的指令系统指令系统是一台计算机能识别和执行的全部指令的集指令系统是一台计算机能识别和执行的全部指令的集合。合。8086汇编指令系统,分为汇编指令系统,分为6类:类:数据传送指令数据传送指令 14条条算术运算指令算术运算指令 20逻辑运算、移位逻辑运算、移位 13串操作指令串操作指令 13控制转移指令控制转移指令 28处理器控制指令处理器控制指令 123.4 IA-323.4 IA-323.4 IA-323.4 IA-32通用通用通用通用指令指令指令指令6/16/20243.4 通用指令重点介绍8086 的指令系统3.4 28黄玉清制作3.4.1 3.4.1 数据传送指令数据传送指令(14(14条条)MOV LEAPUSH LDSPOP LES XCHG LAHF PUSHFXLAT SAHF POPF IN OUT3.4 IA-323.4 IA-323.4 IA-323.4 IA-32通用通用通用通用指指指指令令令令6/16/20243.4.1 数据传送指令(14条)MOV 29黄玉清制作数据传送指令数据传送指令:传送指令把数据从一个位置传送到另一个位置传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位除标志寄存器传送指令外,均不影响标志位重点掌握重点掌握MOV XCHG XLAT PUSH POP LEA6/16/2024数据传送指令:传送指令把数据从一个位置传送到另一个位置8/930黄玉清制作MOV传送指令传送指令格式:格式:MOV dst,src 操作操作:dst src把一个字节或字的操作数从源地址传送至目的地址把一个字节或字的操作数从源地址传送至目的地址【例【例3.8】MOV CX,AX 若若(AX)1A90H,执行该指令后,执行该指令后,(CX)1A90H,(AX)1A90H不变不变【例【例3.9】MOV DI,BX20H 执行指令前执行指令前,若,若(DS)=1000H,(BX)2000H,则则EA=2000H+20H=2020H,而而(12020H)=56,(12021H)=78H 执行指令后,执行指令后,(DI)=7856H (一一).).通用型传送指令通用型传送指令3.4.1 3.4.1 3.4.1 3.4.1 数据传送指数据传送指数据传送指数据传送指令令令令6/16/2024MOV传送指令(一).通用型传送指令3.4.1 数据传送指令31黄玉清制作注意注意:1、源和目的操作数不能都是存储器数、源和目的操作数不能都是存储器数2 2、目的操作数不能是立即数,也不能是、目的操作数不能是立即数,也不能是、目的操作数不能是立即数,也不能是、目的操作数不能是立即数,也不能是CSCS寄存器寄存器寄存器寄存器3 3、不允许两个段寄存器之间传送数据、不允许两个段寄存器之间传送数据、不允许两个段寄存器之间传送数据、不允许两个段寄存器之间传送数据4 4、立即数不能直接送段寄存器、立即数不能直接送段寄存器、立即数不能直接送段寄存器、立即数不能直接送段寄存器5 5、不影响标志位、不影响标志位、不影响标志位、不影响标志位 (一一).).通用型传送指令通用型传送指令3.4.1 3.4.1 3.4.1 3.4.1 数据传送指令数据传送指令数据传送指令数据传送指令6/16/2024注意:1、源和目的操作数不能都是存储器数(一).通用型传32黄玉清制作例如例如:MOV指令寄存器传送:指令寄存器传送:MOV AL,BL;(AL)(BL)MOV CX,AX;(CX)(AX)MOV SP,AX;(SP)(AX)MOV指令立即数传送:指令立即数传送:MOV CL,4;(CL)4,字节传送,字节传送MOV DX,0FFH;(DX)00FFH,字传送,字传送MOV SI,200H;(SI)0200H,字传送,字传送3.4.1 3.4.1 3.4.1 3.4.1 数据传送指令数据传送指令数据传送指令数据传送指令(一一).).通用型传送指令通用型传送指令6/16/2024例如:3.4.1 数据传送指令(一).通用型传送指令8/9/33黄玉清制作例如例如:MOV指令寄存器与存储器之间传送指令寄存器与存储器之间传送MOV DX,AX ;(DX)AX MOV AL,BX ;(AL)DS:(BX)MOV DX,BP+4;(DX)SS:(BP+4)MOV AL,BUFFER ;BUFFER是已定义的存储单元符号地址是已定义的存储单元符号地址MOV指令段寄存器传送指令段寄存器传送MOV SS,AX ;(SS)(AX)MOV DS,DATSI+BX MOV BP+DI,ES3.4.1 3.4.1 3.4.1 3.4.1 数据传送指令数据传送指令数据传送指令数据传送指令(一一).).通用型传送指令通用型传送指令6/16/2024例如:3.4.1 数据传送指令(一).通用型传送指令8/9/34黄玉清制作例题:例题:判断下列指令是否正确:判断下列指令是否正确:MOV DS,ES;非法指令;非法指令MOV DS,100H;非法指令;非法指令修正:修正:mov ax,es mov ds,ax修正:修正:mov ax,100h mov ds,axMOV AX,BL MOV 100H,DXMOV DI,200修正:修正:MOV AX,BX修正:修正:MOV 0100H,DX 修正:修正:MOV BYTE PTRDI,200BYTE PTR说明是字节操作说明是字节操作3.4.1 3.4.1 3.4.1 3.4.1 数据传送指令数据传送指令数据传送指令数据传送指令(一一).).通用型传送指令通用型传送指令6/16/2024例题:判断下列指令是否正确:MOV DS,ES;非法指令35黄玉清制作MOV DATBX+DI,AX MOV AREA2,AREA1;假设;假设AREA和和AREA是两个字变量是两个字变量修正:修正:MOV AX,AREA2MOV AREA1,AX问题:如何在存储器中传送一个数据块?问题:如何在存储器中传送一个数据块?3.4.1 3.4.1 3.4.1 3.4.1 数据传送指令数据传送指令数据传送指令数据传送指令6/16/2024MOV DATBX+DI,AX 3.4.1 数据传送指令36黄玉清制作2.交换指令交换指令格式格式:XCHG DST,SRC注意:注意:1 1、dstdst与与与与 src src不能同时为内存单元;不能同时为内存单元;不能同时为内存单元;不能同时为内存单元;2 2、不能使用、不能使用、不能使用、不能使用CSCS、IPIP作为操作数。作为操作数。作为操作数。作为操作数。3 3、不影响标志位不影响标志位不影响标志位不影响标志位例:例:XCHG AX,BX XCHG BX,1000H 例例:读下列程序段读下列程序段,写出写出AX,BX的内容的内容.MOV AX,1234H MOV BX,5678H PUSH AX POP BX XCHG AX,BX HLT(一一).).通用型传送指令通用型传送指令3.4.1 3.4.1 3.4.1 3.4.1 数据传送指令数据传送指令数据传送指令数据传送指令6/16/20242.交换指令(一).通用型传送指令3.4.1 数据传送指令837黄玉清制作3.堆栈操作指令堆栈操作指令堆栈是一个堆栈是一个“后进先出后进先出FILO”FILO”(或说(或说“先进后先进后出出FILO”FILO”)的主存区域,位于堆栈段中;)的主存区域,位于堆栈段中;SSSS段段寄存器寄存器记录其段地址记录其段地址堆栈只有一个出口,即当前栈顶;用堆栈只有一个出口,即当前栈顶;用堆栈指针堆栈指针寄存器寄存器SPSP指定指定堆栈只有两种基本操作:进栈和出栈堆栈只有两种基本操作:进栈和出栈两条指令两条指令PUSH和和POP6/16/20243.堆栈操作指令堆栈是一个“后进先出FILO”(或说“先进后38黄玉清制作(1)入栈指令入栈指令PUSH 指令格式:指令格式:PUSH src执行操作执行操作:(1)(SP)(SP)-2,(2)(SP)(src)L,(SP+1)(src)H标志位:不影响。标志位:不影响。【例【例3.11】PUSH AX指令执行前,若(指令执行前,若(SS)=2000H,(,(SP)=0008H,(AX)=12C3H。指令执行后指令执行后:栈顶指针(栈顶指针(SP)()(SP)-2=0008-2=0006H,栈顶字单元为栈顶字单元为12C3H,(一一).).通用型传送指令通用型传送指令指令指令3.4.1 3.4.1 3.4.1 3.4.1 数据传送指令数据传送指令数据传送指令数据传送指令6/16/2024(1)入栈指令PUSH(一).通用型传送指令指令3.4.139黄玉清制作(一一).).通用型传送指令通用型传送指令3.4.1 3.4.1 3.4.1 3.4.1 数据传送指令数据传送指令数据传送指令数据传送指令PUSH AX入栈操作过程示意图入栈操作过程示意图 6/16/2024(一).通用型传送指令3.4.1 数据传送指令PUSH 40黄玉清制作(2)出栈指令出栈指令POP 指令格式:指令格式:POP dst执行操作:(执行操作:(dst)L(SP),(dst)H(SP+1),(,(SP)(SP)+2标志位:不影响。标志位:不影响。POP mem16/reg16/segreg【例【例3.14】POP BX 指令执行前,若(指令执行前,若(SS)=2000H,(,(SP)0006H,栈顶内容为栈顶内容为1278H,即,即:(20006H)=78H,(,(20007H)=12H。指令执行后指令执行后:(BX)1278H 栈顶指针(栈顶指针(SP)()(SP)+22008H 6/16/2024(2)出栈指令POP 8/9/202341黄玉清制作POP BX出栈操作过程示意图出栈操作过程示意图 6/16/2024POP BX出栈操作过程示意图 8/9/202342黄玉清制作例例:设设(SS)=2000H,(SP)=00C0H,执执行行下下述述指指令后,令后,SP的值的值=?物理地址?物理地址PA=?1)PUSH AX ;SP=SP-2=00C0-2=00BEH,PA=200BEH2)PUSH BX ;SP=00BE-2=00BCH,PA=200BCH3)POP ;SP=00BC+2=00BEH,PA=200BCH(一一).).通用型传送指令通用型传送指令3.4.1 3.4.1 3.4.1 3.4.1 数据传送指令数据传送指令数据传送指令数据传送指令6/16/2024例:设(SS)=2000H,(SP)=00C0H,执行下述指43黄玉清制作1.换码指令换码指令:格式格式:XLAT 操作操作:(AL)(AL+BX)例例:读下列程序段读下列程序段,写出写出AL,BX的内容的内容 MOV BX,1000H MOV AL,3 XLAT HLT303132391000H1001H1009HTABLE(二二)累加器专用传送指令累加器专用传送指令3.4.1 3.4.1 3.4.1 3.4.1 数据传送指令数据传送指令数据传送指令数据传送指令6/16/20241.换码指令:303132391000H1001H100944黄玉清制作2.输入输出指令输入输出指令1)、直接寻址:)、直接寻址:寻址空间为:寻址空间为:0 255 字节字节格式格式:IN AL,n OUT n,AL IN AX,N OUT N,AX2)、间接寻址:)、间接寻址:寻址空间为:寻址空间为:0000H FFFFH 格式格式:IN AL,DX OUT DX,AL IN AX,DX OUT DX,AX 注注:1、只能用累加器作为执行输入、只能用累加器作为执行输入/输出过程的机构。输出过程的机构。2、用直接输入、用直接输入/输出指令时,寻址范围为输出指令时,寻址范围为 1255。3.4.1 3.4.1 3.4.1 3.4.1 数据传送指令数据传送指令数据传送指令数据传送指令(二二)累加器专用传送指令累加器专用传送指令6/16/20242.输入输出指令3.4.1 数据传送指令(二)累加器专用46黄玉清制作1.取有效地址取有效地址 格式:格式:LEA reg16,mem【例【例3.18】设(设(BX)=1000H,(,(BP)=6000H,(,(SI)3500H,DAT的偏移地址为的偏移地址为20H,指出分别执行下列指令,指出分别执行下列指令后的结果。后的结果。LEABX,BX+50H;执行指令后,(执行指令后,(BX)=1050HLEADI,DATBPSI;执行指令后,(执行指令后,(DI)=6000H+3500H+20H=9520HLEA BP,3456H;执行指令后(执行指令后(BP)=3456HLEABX,DAT;执行指令后(执行指令后(BX)=0020H6/16/20241.取有效地址 格式:LEA reg16,mem【47黄玉清制作2.传送指针到传送指针到ES格式:格式:LES reg16,mem32 reg(EA),ES(EA+2)3.传送指针到传送指针到DS格式:格式:LDS reg16,mem32 reg(EA),DS(EA+2)(三三)目标地址传送指令目标地址传送指令3.4.1 3.4.1 3.4.1 3.4.1 数据传送指数据传送指数据传送指数据传送指令令令令6/16/20242.传送指针到ES(三)目标地址传送指令3.4.1 数据传48黄玉清制作 例题例题:LDS DI,2000H(DS)=1000H 12000H12001H12002H12003H5AH34 H00H30 H(DI)=345AH(DS)=B521H(三三)目标地址传送指令目标地址传送指令3.4.1 3.4.1 3.4.1 3.4.1 数据传送指数据传送指数据传送指数据传送指令令令令6/16/2024 例题:LDS DI,2000H12000H5AH(49黄玉清制作1 读标志:读标志:LAHF 2.设置标志:设置标志:SAHF3.标志寄存器入栈标志寄存器入栈:PUSHF 把标志推入堆栈。把标志推入堆栈。SP SP-2,PSW(FLAGH)入栈入栈 4.标志寄存器出栈标志寄存器出栈:POPF PSW(FLAG)SP+1,SP SP SP+2D7 D6 D5 D4 D3 D2 D1 D0 SF ZF AF PF CFFLAG(四四)标志传送标志传送3.4.1 3.4.1 3.4.1 3.4.1 数据传送指数据传送指数据传送指数据传送指令令令令6/16/20241 读标志:LAHF D7 D6 D5 D450黄玉清制作例例:下下面面这这些些指指令令哪哪些些是是正正确确的的?哪哪些些是是错错误误的的?如是错误的,请说明原因。?如是错误的,请说明原因。1)MOV DS,AX ()2)MOVBX,1000 ()3)PUSHCS ()4)POP CS ()5)IN BX,DX ()6)MOV 1000H,AX ()7)MOV AX,BL ()8)OUT 300H,AX ()9)OUT 20H,AL ()3.4.1 3.4.1 3.4.1 3.4.1 数据传送指数据传送指数据传送指数据传送指令令令令6/16/2024例:下面这些指令哪些是正确的?哪些是错误的?如是错误的,请说51黄玉清制作 例例:说明下面程序执行后说明下面程序执行后,AX,CX,DI的内容是什么的内容是什么?MOV DI,3500H MOV CX,0010H MOV AX,0000H PUSH DI POP CX XCHG AX,CX (AX)=3500H,(CX)=0000H,(DI)=3500H3.4.1 3.4.1 3.4.1 3.4.1 数据传送指数据传送指数据传送指数据传送指令令令令6/16/2024 例:说明下面程序执行后,AX,CX,DI的内容是什么52黄玉清制作3.4.2 算术运算指令算术运算指令加法:加法:ADD、ADC、INC减法:减法:SUB、SBB、DEC、DAS乘法:乘法:MUL、IMUL、AAM除法:除法:DIV、IDIV、AAMAAA、DAA、AAS、DAS、AAM、AAD3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令6/16/20243.4.2 算术运算指令加法:ADD、ADC、IN53黄玉清制作1.不带进位位的加法不带进位位的加法格式:格式:ADD DST,SRC ;DST DST+SRC例例:ADD AL,50H ;(AL)AL)+50H ADD BX+DI,AX2.带进位位的加法带进位位的加法格式:格式:ADC DST,SRC ;DST DST+SRC+CF例:例:ADC AX,SI ;(AX)(AX)+(SI)+CF ADC DX,SI 注意:指令影响标志注意:指令影响标志AF、OF、PF、SF、ZF,CF。(一一)加法指令加法指令3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令6/16/20241.不带进位位的加法(一)加法指令3.4.2算术运算指令54黄玉清制作3.加一指令加一指令格式:格式:INC src ;src src+1 将操作数内容加一,再回送操作数。将操作数内容加一,再回送操作数。例:例:INC AX ;(AX)(AX)+1 INC BL ;(BL)(BL)+1注意:注意:INC指令影响标志指令影响标志AF、OF、PF、SF、ZF,但但不影响不影响进位标志进位标志CF。例例:读程序读程序:MOV AL,1 MOV BL,0FFH ADD AL,BL执行指令序列后执行指令序列后,(AL)=00H),CF=1,OF=0 。3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(一一)加法指令加法指令6/16/20243.加一指令3.4.2算术运算指令(一)加法指令8/9/55黄玉清制作4.非组合非组合BCD码十进制校正码十进制校正AAA操作:执行操作:执行AAA,若,若AL低低4位的值大于位的值大于9或或 AF=1,则在低则在低4位加位加6,同时置,同时置CF=1,AH+1。注意:注意:AAA指令影响标志指令影响标志AF、CF.例例:8+7=15 MOV AL,8H MOV BL,7H ADD AL,BL ;(;(AL)=0FH,AF=0 AAA ;(;(AL)=15H,AF=1,CF=1 AF1,CFAF 0000 1000(8)+0000 0111(7)0000 1111(FH)+0000 0110 0001 0101(一一)加法指令加法指令3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令6/16/20244.非组合BCD码十进制校正AAA 0056黄玉清制作5.组合组合BCD码十进制校正码十进制校正DAA操作:执行操作:执行DAA,若,若AL的低的低4位的值大于位的值大于9或或 AF=1,则加则加06H;若;若AL的高的高4位的值大于位的值大于9,则加,则加60H。注意:注意:DAA指令影响标志指令影响标志AF、CF、PF、SF、ZF。例例:89+75=16489+75=164 MOV AL,89H MOV BL,75H ADD AL,BL ;(AL)=0FEH,AF=0,CF=0 DAA ;(ALAL)=64H=64H,CF=1CF=1 3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(一一)加法指令加法指令 1000 1001(89)+0111 0101(75)1111 1110(FEH)+0110 0110 1 0110 0100 6/16/20245.组合BCD码十进制校正DAA3.4.2算术运算指令(一)57黄玉清制作例例3-1:两个十进制数两个十进制数2964,4758放在放在BCD1和和BCD2开始开始的单元的单元,低位在前低位在前,高位在后高位在后,结果放在结果放在BCD3中中.BCD1 DB 64H,29H BCD2 DB 58H,47H BCD3 DB?,?MOV AL,BCD1 ADD AL,BCD2;(AL)=0BCH DAA ;(AL)=22H,MOV BCD3,AL MOV AL,BCD1+1 ADC AL,BCD2+1 DAA MOV AL,BCD3+1 29 64+47 5877 223.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(一一)加法指令加法指令6/16/2024例3-1:两个十进制数2964,4758放在BCD1和BCD58黄玉清制作1.不带借位的减法不带借位的减法格式:格式:SUB DSTSUB DST,SRCSRC ;DST ;DST DST-SRC DST-SRC例例:SUB BXSUB BX,CX CX ;(BX)(BX)(BX)-(CX)BX)-(CX)SUB WORD PTR DI SUB WORD PTR DI,1000H1000H2.带借位的减法带借位的减法格式格式:SBB DST SBB DST,SRCSRC DST DST DST DST SRC SRC CFCF 例:例:SBB AXSBB AX,2030H2030H;执行:执行:(AX)(AX)(AX)(AX)2030H 2030H CF CF SBB DX,BX+20H SBB DX,BX+20H 3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(二二)减法指令减法指令6/16/20241.不带借位的减法3.4.2算术运算指令(二)减法指令8/959黄玉清制作3.减量指令减量指令 格式:格式:DEC DST ;DST DST 14.求补指令求补指令格式:格式:NEG DST ;对对DST求补,求补,0-DST例如例如:MOV AL,1 NEG AL ;(AL)=0FFH,CF=1,OF=0,SF=15.比较指令比较指令格式格式:CMP DST,SRC;DST-SRC注意:注意:CMP指令执行相减,但不回送结果,结果只影响标志位指令执行相减,但不回送结果,结果只影响标志位CF、OF、SF、ZF。3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(二二)减法指令减法指令6/16/20243.减量指令 3.4.2算术运算指令(二)减法指令860黄玉清制作6.6.非组合非组合BCDBCD码减法十进制校正码减法十进制校正AASAAS操作:执行操作:执行AAA,若,若AL的低的低4位的值大于位的值大于9或或 AF=1,则在则在AL的低的低4位减位减6,同时置,同时置CF=1。结果只影响标志位结果只影响标志位CFCF、AFAF。7.7.组合组合BCDBCD码减法十进制校正码减法十进制校正DASDAS与与AASAAS相似相似6/16/20246.非组合BCD码减法十进制校正AAS8/9/202361黄玉清制作 例例3-2:假设假设AL=13H,BL=09H,读下列指令读下列指令,分析分析单独执行这些指令后的结果单独执行这些指令后的结果.程序片段程序片段:1)INC AL ;(AL)=14H2)ADD AL,BL ;(AL)=1CH3)SUB AL,BL ;(AL)=0AH 4)DEC BL ;(BL)=08H5)ADD AL,BL ;(AL)=1CH DAA ;(AL)=22H 3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(二二)减法指令减法指令6/16/2024 例3-2:假设AL=13H,BL=09H,读下列指令,分析62黄玉清制作(三)乘法指令 二进制乘法特点二进制乘法特点:两个两个8位数相乘,结果为位数相乘,结果为16位数。位数。两个两个16位数相乘,结果为位数相乘,结果为32位数。位数。8086乘法指令特点:乘法指令特点:一个乘数总是放在一个乘数总是放在AL(8位)或位)或AX (16位)中;位)中;将将DX看成是看成是AX的扩展的扩展3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(三三)乘法指令乘法指令6/16/2024(三)乘法指令 二进制乘法特点:3.4.2算术运算指令(三)63黄玉清制作乘法指令分:无符号数乘法指令分:无符号数MUL 有符号数有符号数IMUL例例:3(-2)=-6 3 14=42(2AH)3的补码:的补码:0011,-2的补码的补码:1110 14的补码:的补码:11101)直接相乘直接相乘:对无符号数,结果正确。对无符号数,结果正确。0011(3)1110(-2或或14)0010 1010(2A)3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(三三)乘法指令乘法指令6/16/2024乘法指令分:无符号数MUL 64黄玉清制作2)有符号相乘有符号相乘:负数复原为原码,并去掉符号:负数复原为原码,并去掉符号位,相乘后,结果添上符号位,再取补码。位,相乘后,结果添上符号位,再取补码。0011(3)0010(2)0000 0110(6)结果添上负号,结果添上负号,1 000 0110,再取补码:再取补码:1111 1001+1=1111 1010=FAH=-6 3(-2)=-6,结果正确,结果正确 对于对于3 14,结果错误。,结果错误。3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(三三)乘法指令乘法指令6/16/20242)有符号相乘:负数复原为原码,并去掉符号位,相乘后,结果添65黄玉清制作1 1、无符号数乘法、无符号数乘法 格式:格式:MUL src ;(AX)(AL)src,字节,字节 ;(DX,AX)(AX)src,字,字 8位乘法位乘法 16位乘法位乘法 AX操作数操作数DX AX(16位)位)(16位)位)(32位)位)AL操作数操作数AH AL(8位)位)(8位)位)(16位)位)3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(三三)乘法指令乘法指令6/16/20241、无符号数乘法AX操作数DX AX(16位66黄玉清制作2、带符号数的乘法、带符号数的乘法 格式格式 :IMUL src 字节乘字节乘:(AX)(AL)*src,字乘字乘 :(DX,AX)(AX)*src,字乘,字乘 例例:IMUL BL;AL的内容乘以的内容乘以BL的内容,结果送的内容,结果送AX IMUL DI;AX的内容乘以的内容乘以DI的内容,结果送的内容,结果送DX.AX IMUL BYTE PTR DI;AL的内容乘以的内容乘以DI所指单元的内容,结果送所指单元的内容,结果送AX 3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(三三)乘法指令乘法指令6/16/20242、带符号数的乘法3.4.2算术运算指令(三)乘法指令8/967黄玉清制作例例:4902H403AH,结果送,结果送0510H0513H单元单元.MOV AX,4902H MOV BX,403AH MUL BX MOV 0510H,AX MOV 0512H,DX 3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(三三)乘法指令乘法指令6/16/20243.4.2算术运算指令(三)乘法指令8/9/202368黄玉清制作(四四)除法指令除法指令1 1、无符号数除法、无符号数除法 格格 式:式:DIV src:字节除字节除:(AX)src,(AL)商商,(AH)余数余数 字字 除除:(DX.AX)src,(AX)商商,(DX)余数余数 注注 意:意:被除数在累加器中,且必须是除数的两被除数在累加器中,且必须是除数的两倍字长。倍字长。3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(四四)除法指令除法指令6/16/2024(四)除法指令1、无符号数除法3.4.2算术运算指令(69黄玉清制作 8位除法:被除数被除数(16位位)除数除数(8位位)余数(8位)商(8位)AH AL操作数操作数AH AL3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(四四)除法指令除法指令6/16/2024 8位除法:AH 70黄玉清制作DX AX操作数操作数DX AX 16位除法:被除数(32)除数(16)余数(16)商(16)3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(四四)除法指令除法指令6/16/2024DX AX操作数DX AX 71黄玉清制作2、有符号数除法、有符号数除法 格式:格式:IDIV src 字节除:字节除:(AL)AX src(商商),(AH)余数,余数,字除:字除:(AX)(DX AX)src(商)(商)(DX)余数余数 3、扩展字节为字、扩展字节为字 CBW 将将AL寄存器的符号位扩展到寄存器的符号位扩展到AH中。中。(AL)=80H,执行执行CBW后后,(AH)=FFH。3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(四四)除法指令除法指令6/16/20242、有符号数除法3.4.2算术运算指令(四)除法指令8/9/72黄玉清制作4、扩展字为双字、扩展字为双字 CWD (DX,AX)(AX)将将AX寄存器的符号位扩展到寄存器的符号位扩展到DX中。中。(AX)=8000H,执行执行CWD后后,(DX)=FFFFH。6/16/20244、扩展字为双字 CWD 8/9/202373黄玉清制作例例3-3:设设AL=-2,BL=-1,编程求编程求-2/-1=?,将商存将商存DL单元。单元。MOV AL,-2 ;(AL)=0FEHMOV BL,-1 ;(BL)=0FFHCBW ;(AX)=0FFFEHIDIV BL ;(AL)=2,(AH)=0MOV DL,ALHLT 3.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(四四)除法指令除法指令6/16/2024例3-3:设AL=-2,BL=-1,编程求-2/-1=?,将74黄玉清制作例例3-4:试计算试计算(X*Y+Z)/X,X,Y,Z都是都是16位无符号数位无符号数,结果存结果存在在S开始的单元开始的单元.X DW 304 Y DW 10 Z DW 200 S DW?,?MOV AX,X MUL Y ADD AX,Z ADC DX,0 DIV X MOV S,AX MOV S+2,DX 304100BE0DX AX2000CA83.4.23.4.23.4.23.4.2算术运算指令算术运算指令算术运算指令算术运算指令(四四)除法指令除法指令6/16/2024例3-4:试计算(X*Y+Z)/X,X,Y,Z都是16位无符75黄玉清制作5.5.非组合非组合BCDBCD码的乘法校正码的乘法校正 要求乘数和被乘数用非组合的要求乘数和被乘数用非组合的BCD码表示。码表示。AAM ;(AH)(AL)/(0AH)(商)(商);(AL)余数余数 注意:注意:AAM指令紧跟指令紧跟MUL之后。之后。6.6.非组合非组合BCDBCD码除法校正码除法校正 AAD (AL)10*(AH)+(AL),),(AH)0 被除数为被除数为二位二位的非压缩的非压缩BCD码,存码,存
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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