版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 教学目标教学目标介绍介绍8048680486的寻址方式及指令系统。的寻址方式及指令系统。 学习要求学习要求 通过本章的学习,要求熟悉各种寻址方式的使用通过本章的学习,要求熟悉各种寻址方式的使用场合以及常用指令的使用方法。场合以及常用指令的使用方法。 讲授内容讲授内容第三章第三章 8048680486微处理器指令系统微处理器指令系统 第一节第一节8048680486微处理器寻址方式微处理器寻址方式第二节第二节 8048680486微处理器指令系统微处理器指令系统 指令指令命令命令二进制代码形式的二进制代码形式的 指令是规定计算机进行某种操作的指令是规定计算机进行某种操作的 指令中应包含三方面的
2、信息指令中应包含三方面的信息: :执行什么操作执行什么操作操作数的位置操作数的位置结果存放的位置结果存放的位置 指令的一般格式指令的一般格式操作码操作码操作数地址操作数地址1 1操作数地址操作数地址2 2结果存放地址结果存放地址而而寻找操作数所在地址寻找操作数所在地址的方法即为的方法即为寻址方式寻址方式(Addressing Mode)(Addressing Mode)。第一节第一节8048680486微处理器的寻址方式微处理器的寻址方式一、操作数寻址方式一、操作数寻址方式 80X8680X86的寻址方式可分为两类:的寻址方式可分为两类:操作数的寻址方式操作数的寻址方式和和转移地址的转移地址的
3、寻址方式。寻址方式。 由于由于操作数操作数作为指令的操作对象,作为指令的操作对象,可以存储在存储器中可以存储在存储器中(称为存储(称为存储器操作数)、器操作数)、寄存在寄存器中寄存在寄存器中(称为寄存器操作数)或(称为寄存器操作数)或直接包含在指令直接包含在指令中中(称为立即数),因此,与之对应有多种寻址方式。(称为立即数),因此,与之对应有多种寻址方式。80X8680X86粗略地划粗略地划分可有分可有3 3类类1010种寻址方式种寻址方式,其中访问存储器操作数有,其中访问存储器操作数有8 8种寻址方式。种寻址方式。 1 1. .立即数寻址立即数寻址 在这种寻址的方式下,操作数作为立即数直接存
4、在指令中,可为在这种寻址的方式下,操作数作为立即数直接存在指令中,可为8 8位,位,1616位和位和3232位。位。例:例: MOV AXMOV AX,1234H1234H MOV BLMOV BL,78H78H MOV ECX MOV ECX,12345678H12345678H 以第一条指令为例的立即以第一条指令为例的立即数寻址方式的执行过程如图。数寻址方式的执行过程如图。 立即寻址示意图立即寻址示意图3 3存储器操作数寻址存储器操作数寻址 操作数在除代码段以外的内存单元中。通过不同寻址方式求得操操作数在除代码段以外的内存单元中。通过不同寻址方式求得操作数地址,从而取得操作数。在指令中给出
5、计算操作数所在内存单元作数地址,从而取得操作数。在指令中给出计算操作数所在内存单元偏移地址的表达式。偏移地址的表达式。 2 2. .寄存器寻址寄存器寻址在这种方式下,操作数存放在在这种方式下,操作数存放在CPUCPU某个某个8 8位、位、1616位或位或32 32 位寄存器中。位寄存器中。 例:例: MOV EAXMOV EAX,EDXEDX MOV DS MOV DS,AXAX该寻址方式指令码短,且无需从该寻址方式指令码短,且无需从存储器取操作数,故执行速度快存储器取操作数,故执行速度快(1 1)直接寻址)直接寻址 在这种方式下,指令中的操作在这种方式下,指令中的操作数部分直接给出了操作数的
6、有效地数部分直接给出了操作数的有效地址址EAEA,它和操作码一起放在存储器,它和操作码一起放在存储器的代码段中,可以是的代码段中,可以是1616位或位或3232位整位整数。但操作数一般在数据段数。但操作数一般在数据段DSDS中。中。例:例:MOV AXMOV AX,DSDS:1000H1000H;将;将DSDS段中段中1000H1000H和和1001H1001H单元单元 的内容送到的内容送到AXAX中。中。设设DS=2000HDS=2000H应注意的是,指令中的应注意的是,指令中的DSDS不能省略。不能省略。 (2 2)寄存器间接寻址)寄存器间接寻址这种寻址方式下,操作数所在内存单元的这种寻址
7、方式下,操作数所在内存单元的EAEA由规定的寄存器指出。由规定的寄存器指出。 如果操作数不在上述规定的默认段,而是在其他的段,则必如果操作数不在上述规定的默认段,而是在其他的段,则必须在指令中相应的操作数前加上段超越前缀。例如:须在指令中相应的操作数前加上段超越前缀。例如:MOV AXMOV AX,ESES:SISIMOV AXMOV AX,DSDS:BPBP1616位寻址时,位寻址时,EAEA可以由可以由SISI,DIDI,BPBP或或BXBX提供。提供。( (其中其中BXBX、BPBP也称也称基基址寄存器,址寄存器,SISI、DIDI称变址寄存器)称变址寄存器) 若以若以SISI,DIDI
8、,BXBX间接寻址,则默认操作数在间接寻址,则默认操作数在DSDS段中。段中。若以若以BPBP间接间接寻址,则默认操作数在寻址,则默认操作数在SSSS段中段中* * 3232位寻址时,位寻址时,8 8个个3232位通用寄存器除位通用寄存器除ESPESP外均可作间址寄存器。外均可作间址寄存器。除除EBPEBP默认段寄存器为默认段寄存器为SSSS外,其余外,其余6 6个通用寄存器均默认段寄存器为个通用寄存器均默认段寄存器为DSDS。MOV SIMOV SI,1000H1000HMOV AXMOV AX,SISI 例:例: MOV AX,SI MOV AX,SI 设(设(DSDS)=4200H,(S
9、I)=5000H,=4200H,(SI)=5000H,则源操作数所在单元的物理地址则源操作数所在单元的物理地址= = 例:例: MOV CH,BP MOV CH,BP 设(设(SSSS)=3000H,(DS)=3500H,(BP)=1340H,=3000H,(DS)=3500H,(BP)=1340H,则该指令是将则该指令是将 单元的内容送给单元的内容送给CHCH。31340H31340H 4200H 4200H* *10H+5000H=47000H10H+5000H=47000H 指令执行后(指令执行后(AXAX)=3525H=3525H。(3 3)寄存器相对寻址方式)寄存器相对寻址方式 MO
10、V EAXMOV EAX,BX+24 BX+24 ;也可以写成;也可以写成 MOV EAXMOV EAX,24BX24BXMOV DX MOV DX ,EAX+1500EAX+1500;也可以写成;也可以写成 MOV DXMOV DX,1500EAX1500EAXMOV DX MOV DX ,BX+SIBX+SI(4 4)基址变址寻址方式)基址变址寻址方式 * *(5 5)相对基址变址寻址方式)相对基址变址寻址方式 MOV DX MOV DX ,BX+SI+24BX+SI+24* *(6 6)比例变址寻址方式)比例变址寻址方式 MOV DX MOV DX , 变址寄存器变址寄存器比例因子比例因
11、子+ +位移量位移量 其中比例因子可以是其中比例因子可以是1 1,2 2,4 4,8 8中的任一个数。中的任一个数。3232位寄存器中,除位寄存器中,除ESPESP外的外的7 7个通用寄存器均可作基址和变址寄存器,且个通用寄存器均可作基址和变址寄存器,且EBPEBP默认默认SSSS作段寄存器,其作段寄存器,其余以余以DSDS作段寄存器。作段寄存器。 * *(7 7)基址比例变址寻址方式)基址比例变址寻址方式 MOV DXMOV DX, 变址寄存器变址寄存器比例因子比例因子+ +基址寄存器基址寄存器 * *(8 8)相对基址比例变址寻址方式)相对基址比例变址寻址方式 MOV DXMOV DX,
12、基址寄存器基址寄存器+ +比例因子比例因子变址寄存器变址寄存器+ +位移量位移量 * *凡是乘以比例因子的寻址方式均只适合于凡是乘以比例因子的寻址方式均只适合于3232位寻址的情况,位寻址的情况,即(即(6 6)()(7 7)()(8 8)三种寻址方式仅适合)三种寻址方式仅适合3232位通用寄存器。位通用寄存器。二、转移地址寻址方式二、转移地址寻址方式 在指令系统中,有一组指令为在指令系统中,有一组指令为程序转移指令程序转移指令。程序转移指令的寻。程序转移指令的寻址方式涉及如何址方式涉及如何确定转移的目标地址确定转移的目标地址。目标地址可以在段内,也可以。目标地址可以在段内,也可以在段外。在段
13、外。2. 2. 段内间接寻址段内间接寻址 该方式中,转移的目标地址是寄存器或存储单元的内容。寄存器或该方式中,转移的目标地址是寄存器或存储单元的内容。寄存器或存储单元的内容可以用数据寻址方式中除立即数以外的任何一种寻址方存储单元的内容可以用数据寻址方式中除立即数以外的任何一种寻址方式取得,所得到的内容将用来取代式取得,所得到的内容将用来取代IPIP寄存器的值。寄存器的值。 段内间接寻址转移指令的汇编格式可以表示为:段内间接寻址转移指令的汇编格式可以表示为: JMP CXJMP CX JMP WORD PTR BXJMP WORD PTR BX 1. 1. 段内直接寻址段内直接寻址 转移的目标地
14、址是当前转移的目标地址是当前IPIP寄存器寄存器的内容和一个的内容和一个8 8位或位或1616位位位移量之和位移量之和。 指令的汇编语言格式表示为:指令的汇编语言格式表示为: JMP (NEAR PTR) PROGRMJMP (NEAR PTR) PROGRM JMP (SHORT) OUTSET JMP (SHORT) OUTSET 3. 3. 段间直接寻址段间直接寻址 这种寻址方式用于段间转移,指令中直接这种寻址方式用于段间转移,指令中直接提供了目标地址提供了目标地址的的段基址段基址和和偏移地址偏移地址,所以,所以, ,只要用只要用指令中指令中指定的指定的偏移地址取代偏移地址取代IPIP寄
15、存器寄存器的内容,的内容,用用指令中指令中指定的指定的段基址取代段基址取代CSCS寄存器寄存器的内容就完成了从一个段到另一个的内容就完成了从一个段到另一个段的转移操作。段的转移操作。 指令的汇编语言格式可表示为:指令的汇编语言格式可表示为: JMP FAR PTR NEXTJMP FAR PTR NEXT4. 4. 段间间接寻址段间间接寻址 该方式下,用存储器中该方式下,用存储器中两个相继字的内容两个相继字的内容来来取代取代IPIP和和CSCS寄存器寄存器中的中的原始原始内容,以达到内容,以达到段间转移段间转移的目的。这里,存储单元的地址是由指令指的目的。这里,存储单元的地址是由指令指定除立即
16、数方式和寄存器方式以外的任何一种数据寻址方式取得。定除立即数方式和寄存器方式以外的任何一种数据寻址方式取得。 指令的汇编语言格式可表示为:指令的汇编语言格式可表示为: JMP DWORD PTR BXJMP DWORD PTR BX第二节第二节 8048680486微处理器指令系统微处理器指令系统 80X8680X86的指令系统向上兼容,都是在的指令系统向上兼容,都是在80868086指令的基础上发展形指令的基础上发展形成的。与成的。与8028680286相比,增加了相比,增加了3232位操作和访问存储器的位操作和访问存储器的3232位寻址方位寻址方式。式。 8048680486可以工作在实模
17、式、保护模式和虚拟可以工作在实模式、保护模式和虚拟8686模式,为了支持模式,为了支持系统工作模式,指令系统中设计了系统管理指令、保护模式控制指系统工作模式,指令系统中设计了系统管理指令、保护模式控制指令以及高级语言支持指令等等。令以及高级语言支持指令等等。 8048680486的基本指令的基本指令按功能可分为按功能可分为7 7类类:数据传送指令、算术运:数据传送指令、算术运算指令、逻辑运算指令、字符串操作指令、控制转移指令、处理器算指令、逻辑运算指令、字符串操作指令、控制转移指令、处理器控制指令和按条件设置字节指令。下面分别给予介绍。控制指令和按条件设置字节指令。下面分别给予介绍。 完成数据
18、的传送工作完成数据的传送工作, ,不影响任何标志不影响任何标志基本传送指令基本传送指令 MOVMOV格式格式: :MOV OP1MOV OP1,OP2OP2目的操作数目的操作数源操作数源操作数功能功能: :OP1 OP2OP1 OP2可完成可完成: :注意:目的操作数不能是注意:目的操作数不能是CSCS!一、数据传送指令一、数据传送指令1. 通用数据传送指令:通用数据传送指令:通用寄存器通用寄存器 通用寄存器通用寄存器通用寄存器通用寄存器 存储器存储器通用寄存器通用寄存器 段寄存器段寄存器段寄存器段寄存器 存储器存储器通用寄存器通用寄存器 存储器存储器立即数立即数符号扩展传送指令符号扩展传送指
19、令MOVSX格式:格式:MOVSX OP1MOVSX OP1,OP2OP2;OP1OP1为为1616位或位或3232位通用寄存器位通用寄存器OP2OP2为为8 8位或位或1616位通用寄存器或存储器位通用寄存器或存储器格式:格式:MOVZX OP1MOVZX OP1,OP2OP2;OP1OP1为为1616位或位或3232位通用寄存器位通用寄存器OP2OP2为为8 8位或位或1616位通用寄存器或存储器位通用寄存器或存储器例如:例如: MOV DLMOV DL,-16 -16 ;DL = F0H DL = F0H MOVSX BXMOVSX BX,DL DL ;BX = FFF0HBX = FF
20、F0H,而,而DHDH,DLDL不变不变零扩展传送指令零扩展传送指令MOVZX例如:例如:MOVZX EAXMOVZX EAX,CX CX ;将;将CXCX中中1616位数高位加位数高位加0 0扩展为扩展为3232位送入位送入EAXEAX MOVSXMOVSX和和MOVZXMOVZX这两条指令常被用于作除法时对被除数位数的扩展。这两条指令常被用于作除法时对被除数位数的扩展。交换指令交换指令XCHG格式格式: :XCHG OP1XCHG OP1,OP2OP2功能功能: :OP1 OP2OP1 OP2可完成可完成: :例例: :XCHG AXXCHG AX,BXBX ;AX BXAX BX通用寄存
21、器通用寄存器 通用寄存器通用寄存器通用寄存器通用寄存器 存储器存储器LEALEA传送指令传送指令功能功能: :将将OP1OP1所在位置的有效地址(偏移地址)送往所在位置的有效地址(偏移地址)送往 通用寄存器。通用寄存器。例:例: LEA BXLEA BX,SEGPTSEGPTMOV BXMOV BX,OFFSET SEGPTOFFSET SEGPTLEA REGLEA REG,OP1OP1格式格式: :地址传送指令地址传送指令等价等价STRSTRDBDB10,20,30,40,5010,20,30,40,50RESRESDBDB10 DUP(0)10 DUP(0)MOVMOVAH,4CHAH,
22、4CH ;设置功能号;设置功能号INTINT21H21H; ;返回返回DOSDOSCODECODEENDSENDSENDENDSTARTSTARTDATADATASEGMENTSEGMENTDATADATAENDSENDSCODECODESEGMENTSEGMENTASSUMEASSUME CS:CODE,DS:DATA CS:CODE,DS:DATASTART:START: MOVMOVAX,DATAAX,DATAMOVMOVDS,AXDS,AXLEALEASI,STRSI,STRLEALEADI,RESDI,RES;SI=0SI=0;DI=5DI=5查表转换指令查表转换指令XLAT例:将例
23、:将1616进制数进制数 0 0F F 转换为与之对应的转换为与之对应的ASCIIASCII码码格式格式: :XLATXLAT;将;将DS:BX+AL ALDS:BX+AL AL使用使用XLATXLAT指令的条件指令的条件: : 在数据段中建一张表在数据段中建一张表 表首地址的偏移量送表首地址的偏移量送BXBX 待转换数放入待转换数放入ALAL中中ACTAB DB 0123456789ABCDEFACTAB DB 0123456789ABCDEFMOV BXMOV BX,OFFSET ACTABOFFSET ACTABMOV ALMOV AL,SISIXLATXLAT;表首地址的偏移量;表首地
24、址的偏移量BX BX ;取待转换数;取待转换数;转换结果;转换结果ALAL 数据段段基址送数据段段基址送DSDS全部通用寄存器内容压栈和弹栈指令全部通用寄存器内容压栈和弹栈指令 格式:格式:PUSHAPUSHA 将将8 8个个1616位通用寄存器压栈,顺序为:位通用寄存器压栈,顺序为: AXAX、CXCX、DXDX、BXBX、SPSP、BPBP、SISI、DIDI 格式:格式:PUSHADPUSHAD 将将8 8个个3232位通用寄存器压栈,顺序为:位通用寄存器压栈,顺序为:EAXEAX、 ECXECX、EDXEDX、EBXEBX、ESPESP、EBPEBP、ESIESI、EDIEDI 格式:
25、格式:POPAPOPA 格式:格式:POPADPOPAD 将堆栈中的数据弹给将堆栈中的数据弹给1616位通用寄存器,顺序位通用寄存器,顺序 与压栈指令相反。与压栈指令相反。 将堆栈中的数据弹给将堆栈中的数据弹给3232位通用寄存器,顺序位通用寄存器,顺序 与压栈指令相反。与压栈指令相反。压栈压栈/ /弹栈指令弹栈指令 PUSH/POPPUSH/POP 格式:格式:PUSH OP1PUSH OP1;OP1OP1可以是可以是1616位或位或3232位的通用寄存器、位的通用寄存器、 段寄存器、存储器操作数或立即数。段寄存器、存储器操作数或立即数。;基本同上,但;基本同上,但OP1OP1不能是立即数和
26、不能是立即数和CSCS。POP OP1POP OP12. 堆栈指令堆栈指令如:如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=80H, BP =84H PUSHA 执行后有:执行后有: SP00H11HxxH 注意:压栈的顺序为注意:压栈的顺序为 AX、CX、DX、BX、 SP、 BP、SI、DI 20080H如:如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=7EH, BP =84H PUSHA 执行后有:执行后有: SP00H11H33H00HxxH 注意:压栈的顺序为注意:压栈
27、的顺序为 AX、CX、DX、BX、 SP、 BP、SI、DI 20080H 2007EH如:如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=7CH, BP =84H PUSHA 执行后有:执行后有: SP00H11H33H00HxxH00H44H 注意:压栈的顺序为注意:压栈的顺序为 AX、CX、DX、BX、 SP、 BP、SI、DI 20080H 2007CH如:如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=7AH, BP =84H PUSHA 执行后有:执行后有: SP00H1
28、1H33H00HxxH00H22H00H44H 注意:压栈的顺序为注意:压栈的顺序为 AX、CX、DX、BX、 SP、 BP、SI、DI 20080H 2007AH如:如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=78H, BP =84H PUSHA 执行后有:执行后有: SP00H11H33H00HxxH00H78H00H22H00H44H 注意:压栈的顺序为注意:压栈的顺序为 AX、CX、DX、BX、 SP、 BP、SI、DI 20080H 20078H如:如:AX=11H, BX=22H CX=33H, DX=44H SI =55
29、H, DI =66H SP=76H, BP =84H PUSHA 执行后有:执行后有: SP00H11H33H00HxxH00H84H00H78H00H22H00H44H 注意:压栈的顺序为注意:压栈的顺序为 AX、CX、DX、BX、 SP、 BP、SI、DI 20080H 20076H如:如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=74H, BP =84H PUSHA 执行后有:执行后有: SP00H11H33H00HxxH00H55H00H84H00H78H00H22H00H44H 注意:压栈的顺序为注意:压栈的顺序为 AX、CX
30、、DX、BX、 SP、 BP、SI、DI 20080H 20074H如:如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=72H, BP =84H PUSHA 执行后有:执行后有: SP00H11H33H00HxxH00H66H00H55H00H84H00H78H00H22H00H44H 注意:压栈的顺序为注意:压栈的顺序为 AX、CX、DX、BX、 SP、 BP、SI、DI 20080H 20072H如:如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=70H, BP =84H PUS
31、HA 执行后有:执行后有: SP00H11H33H00HxxH00H66H00H55H00H84H00H78H00H22H00H44H 注意:压栈的顺序为注意:压栈的顺序为 AX、CX、DX、BX、 SP、 BP、SI、DI 20080H 20070H 设堆栈分布如图:设堆栈分布如图: POPA执行后有:执行后有: AX= BX= CX= DX= SI= DI= BP=SPxxH00H51H41H00H00H00H00H00H00H00H12H34H56H78H21H31H 21016H 设堆栈分布如图:设堆栈分布如图: POPA执行后有:执行后有: AX= BX= CX= DX= SI= D
32、I= BP= 0012HSP 21018HxxH00H51H41H00H00H00H00H00H00H00H12H34H56H78H21H31H 21016H 设堆栈分布如图:设堆栈分布如图: POPA执行后有:执行后有: AX= BX= CX= DX= SI= DI= BP= 0034H 0012HSP 2101AHxxH00H51H41H00H00H00H00H00H00H00H12H34H56H78H21H31H 21016H 设堆栈分布如图:设堆栈分布如图: POPA执行后有:执行后有: AX= BX= CX= DX= SI= DI= BP= 0034H 0012H 0056HSP 2
33、101CHxxH00H51H41H00H00H00H00H00H00H00H12H34H56H78H21H31H 21016H 设堆栈分布如图:设堆栈分布如图: POPA执行后有:执行后有: AX= BX= CX= DX= SI= DI= BP= 0034H 0012H 0056HSP 2101EHxxH00H51H41H00H00H00H00H00H00H00H12H34H56H78H21H31H 21016H 设堆栈分布如图:设堆栈分布如图: POPA执行后有:执行后有: AX= BX= CX= DX= SI= DI= BP= 0021H 0034H 0012H 0056HSP 21020
34、HxxH00H51H41H00H00H00H00H00H00H00H12H34H56H78H21H31H 21016H 设堆栈分布如图:设堆栈分布如图: POPA执行后有:执行后有: AX= BX= CX= DX= SI= DI= BP= 0021H 0031H 0034H 0012H 0056HSP 21022HxxH00H51H41H00H00H00H00H00H00H00H12H34H56H78H21H31H 21016H 设堆栈分布如图:设堆栈分布如图: POPA执行后有:执行后有: AX= BX= CX= DX= SI= DI= BP= 0021H 0041H 0031H 0034H
35、 0012H 0056HSP 21024HxxH00H51H41H00H00H00H00H00H00H00H12H34H56H78H21H31H 21016H 设堆栈分布如图:设堆栈分布如图: POPA执行后有:执行后有: 0051HSP 21026HxxH00H51H41H00H00H00H00H00H00H00H12H34H56H78H21H31H 21016H AX= BX= CX= DX= SI= DI= BP= 0021H 0041H 0031H 0034H 0012H 0056HDX间址的间址的I / /O指令指令输入格式输入格式: :IN OP1IN OP1,OP2OP2;OP1
36、 OP1 (OP2OP2)IN ALIN AL,9FH9FHOUT 9FHOUT 9FH,ALALIN ALIN AL,DXDXMOV DXMOV DX,310H310H输出格式输出格式: :OUT OP1OUT OP1,OP2OP2;(;(OP1OP1) OP2OP23 3. . I/OI/O指令指令 IN/OUT IN/OUT 直接寻址的直接寻址的I / /O指令指令OUT DX, ALOUT DX, AL注意:注意:当地址当地址=0FFH0FFH0FFH时,时, 则必须将地址赋给则必须将地址赋给 DXDX,间接寻址。,间接寻址。二二 、算术运算指令、算术运算指令1. 基本四则运算基本四则
37、运算加加/减法指令减法指令ADD/ /SUBADDSUBOP1,OP2;OP1 OP1OP2例:例: ADD AL,BL ; ;设设 AL=17H, BL=09H, CF=1, 则指令执行后则指令执行后 AL= BL= CF= SF= ZF=20H09H000带进带进/借位加借位加/减法指令减法指令ADC/SBBADCSBBOP1,OP2;OP1 OP1OP2 CFOP1、OP2不能同时为存储器操作数,不能同时为存储器操作数,OP1不能是立即数不能是立即数例例: ADC DL,BL ; ;设设 DL=17H, BL=09H, CF=1, 则指令执行后则指令执行后 DL= BL= CF= SF=
38、 ZF=21H09H000该类指令要影响所有状态标志该类指令要影响所有状态标志加加1 / /减减1指令指令INC / /DEC格式:格式:INCDECOP1;OP1 OP11该类指令不影响该类指令不影响CFCF标志标志例:例:INC CX执行前执行前:CX=1234H,CF=1;执行后执行后:CX= CF=1235H1求补指令求补指令NEG格式:格式:NEG OP1;OP1 0 (OP1)比较指令比较指令CMPCMP OP1,OP2格式:格式:;OP1 OP2无符号数乘法指令无符号数乘法指令 MUL MUL 格式:格式:MUL OP1功能:功能:AL (AX/EAX )OP1 AX( DX:A
39、X /EDX:EAX)结果结果 如:如: MUL SI;AXSIDX:AX 例:例: 试编制出实现试编制出实现 Z =128 Z =128 8 8 的程序段的程序段 MOV AL,128 MOV BL,8 MUL BL 该程序段执行后:该程序段执行后:AX = 0400H;OP1OP1可以是可以是8 8位、位、1616位或位或3232位的通位的通用寄存器或存储器操作数用寄存器或存储器操作数 带符号数乘法指令带符号数乘法指令 IMUL(有三种形式有三种形式): IMUL OP1 * IMUL OP1,OP2 * IMUL OP1,OP2,OP3注意:注意:OP1只能是只能是16位或位或32位的位
40、的通通 用寄存器,用寄存器,OP2是与是与OP1等等长的通用寄存器或存储器操作数,长的通用寄存器或存储器操作数, OP3必须是立即数。必须是立即数。;OP1、 OP2为等长的为等长的16位或位或32位的通用寄位的通用寄存器或存储器操作数存器或存储器操作数 ,当,当OP1为通用寄存器时,为通用寄存器时,OP2还可为立即数还可为立即数 。功能:功能:OP1OP2 OP1结果结果注意:注意:当结果超过当结果超过1616位或位或3232 位时位时, , 高位自然丢失高位自然丢失, , 有有CF=1 , OF=1 功能:功能:OP2OP3 OP1结果结果功能:功能:AL (AX/EAX )OP1 AX(
41、 DX:AX /EDX:EAX)结果结果例:例: MOV AL,0FEH MOV BL,2 IMUL BL ;AX = FFFCH MOV CX,6 MOV BX,8 IMUL CX,BX ;CX = 0030H MOV DX,3 IMUL BX,DX,3 ;BX = 0009H MOV DX,0FFFDH IMUL BX,DX,3 ;BX = FFF7H 除法指令除法指令 DIV / IDIVDIV / IDIV格式:格式: DIV OP1DIV OP1 IDIV OP1IDIV OP1功能:功能: AX(DX:AX, EDX:EAX )AX(DX:AX, EDX:EAX )OP1 OP1
42、商商余数余数ALAL(AX;EAXAX;EAX)AHAH(DX;EDXDX;EDX)若除数为若除数为0或商过大(超过保存商的累加器容量)时,产生或商过大(超过保存商的累加器容量)时,产生0号中断号中断 * *符号位扩展指令符号位扩展指令 格式:格式: CBWCBW;字节;字节字字 ALAX ALAX CWDCWD;字;字双字双字 AXDX:AX AXDX:AX CWDECWDE ;字;字双字双字 AXEAX AXEAX CDQCDQ;双字;双字四字四字EAXEDX:EAXEAXEDX:EAX 例例: : 将变量将变量ONEONE除以除以TWO,TWO,结果存入结果存入BUFFBUFF单元单元,
43、 ,设设ONE, TWOONE, TWO均为字型变量均为字型变量 MOV AXMOV AX,ONEONECWDCWDIDIV TWOIDIV TWOMOV BUFFMOV BUFF,AXAX;取被除数;取被除数;扩充为;扩充为3232位位;送商;送商2 2. . 十进制调整指令十进制调整指令对加对加/ /减法进行调整的原理减法进行调整的原理 例:例: 6 9 H 2 9 H 2 H 90 6 H 9 8 H 9 2 H 8 5 H7 H16 0 H17 7 H1 4 9 H 7 8 H1 HC6 6 H2 7 H1 调整的依据调整的依据(以组合(以组合BCDBCD码为例)码为例)CF=AF=0
44、CF=AF=0且且ALAL中高、低半字节数字码均合法,不修正。中高、低半字节数字码均合法,不修正。AF=1AF=1或或ALAL低半字节出现非法码(低半字节出现非法码(A AF F)时,对)时,对ALAL加加/ /减减06H06H进行修正。进行修正。CF=1CF=1或或ALAL的高半字节出现非法码(的高半字节出现非法码(A AF F)时,对)时,对ALAL加加/ /减减60H60H进行修正。进行修正。AF=CF=1AF=CF=1,或,或AF=1AF=1且且ALAL的高半字节出现非法码(的高半字节出现非法码(A AF F)时,或者)时,或者CF=1CF=1且且ALAL的低半字节出现非法码,加的低半
45、字节出现非法码,加/ /减减66H66H进行修正。进行修正。 指令格式及功能指令格式及功能DAADAA、DASDAS组合组合BCDBCD码的加、减十进制调整指令,该指令仅对码的加、减十进制调整指令,该指令仅对ALAL的内容进行调整,结果仍存于的内容进行调整,结果仍存于ALAL中。中。AAAAAA、AASAAS分离分离BCDBCD码的加、减十进制调整指令,将码的加、减十进制调整指令,将ALAL中的内容中的内容调整后送调整后送AHAH、ALAL。* *AAMAAM对两个分离对两个分离BCDBCD码的的乘积(在码的的乘积(在AXAX中)进行调整,中)进行调整,结果存入结果存入AHAH、ALAL中(仅
46、对无符号数有效)。中(仅对无符号数有效)。(AHAL/10(AHAL/10的商的商; ALAL/10; ALAL/10的余数的余数) )* *AADAAD对进行对进行DIVDIV指令前的被除数(分离指令前的被除数(分离BCDBCD形式存入形式存入AXAX中)中)的内容调整为二进制数,然后再进行后面的的内容调整为二进制数,然后再进行后面的DIVDIV指令,指令,所得结果为十进制数。所得结果为十进制数。MOV AL,08HMOV AL,08HADD AL,09HADD AL,09HDAADAA结果结果: AL = 17D: AL = 17D例:例:三、逻辑运算指令和移位指令三、逻辑运算指令和移位指
47、令1. 逻辑运算指令逻辑运算指令逻辑与、或、异或、测试指令(逻辑与、或、异或、测试指令(ANDAND、OROR、XORXOR、TESTTEST)格式:格式:ANDANDORORXORXOROP1OP1,OP2OP2;OP1OP1OP1OP1+ +OP2OP2TEST OP1TEST OP1,OP2 OP2 OP1OP1、OP2 OP2 均可为通用寄存器、存储器操作数,均可为通用寄存器、存储器操作数,OP2 OP2 也可是立即数。也可是立即数。该类指令固定使该类指令固定使OFOF、CFCF为为0 0,且根据结果影响,且根据结果影响SFSF、ZFZF、PFPF状态状态 OP1OP1、OP2 OP2
48、 同上。同上。逻辑非指令逻辑非指令 NOTNOT格式:格式: NOT OP1 NOT OP1 ; OP1OP1 OP1OP1 如:如: 若使若使ALAL中某中某8 8位二进制数的最低位为零有指令:位二进制数的最低位为零有指令:AND ALAND AL,0FE0FEH H指令指令OR BLOR BL,55H 55H 执行后有:执行后有:BL=BL=1 1 1 1 1 1 1 1 B B若想对若想对DLDL中最高位求反有指令:中最高位求反有指令:XOR DLXOR DL,8080H HMOV ALMOV AL,35H35HAND ALAND AL,0FH0FHMOV BLMOV BL,ALALMO
49、V CLMOV CL,09H09H OR CLOR CL,30H30HMOV BHMOV BH,CLCL;BL=BL=;BH=BH=0505H H3939H H2. 移位指令移位指令 左移指令左移指令算术左移算术左移 SALSAL逻辑左移逻辑左移 SHLSHLOP1OP1,OP2OP2格式:格式:功能:功能:0D0D7CFOP1OP1可为可为8 8位、位、1616位或位或3232位的通用寄存器、存储器操作数位的通用寄存器、存储器操作数OP2OP2为移位次数,可用为移位次数,可用立即数立即数或或CLCL表示。表示。对于对于80868086而言立即数的值不能超过而言立即数的值不能超过1 1,804
50、8680486最大可为最大可为255255。 右移指令右移指令格式:格式:算术右移算术右移 SARSAR逻辑右移逻辑右移 SHRSHROP1OP1,OP2OP2功能:功能:0D0D7CF SHR AL,1D0D7CF SAR AL,1 ALROL/RCLOP1,OP2 循环左移指令循环左移指令 ROL/RCL格式:格式:功能:功能:OP1OP1可为可为8 8位、位、1616位或位或3232位的寄存器、存储器操作数位的寄存器、存储器操作数OP2OP2为循环次数,可用为循环次数,可用立即数立即数或或CLCL表示。表示。对于对于80868086而言立即数的值不能超过而言立即数的值不能超过1 1,80
51、48680486最大可为最大可为255255。 循环右移指令循环右移指令 ROR/RCR格式:格式:功能:功能:D0D7CFRCLROLROR/RCROP1,OP2D0D7CFRORRCR例如:例如: AX=0012H,BX=0034H,将两寄存器的低将两寄存器的低8位组合形成位组合形成AX=1234H MOV CL,8 ROL AX,CL ADD AX,BX 说明:说明: 80486的移位次数不能大于的移位次数不能大于255。8086用立即数作移位次数时只能是用立即数作移位次数时只能是1,但用但用CL作移位次数时可移位作移位次数时可移位255次。次。 左移指令常用于实现乘以左移指令常用于实现
52、乘以2n的操作,右移指令常用于实现除以的操作,右移指令常用于实现除以2n的操作。的操作。 操作数可以是操作数可以是8位、位、16位或位或32位的寄存器或存储器操作数,移位次数可位的寄存器或存储器操作数,移位次数可以用立即数或以用立即数或CL寄存器的内容指明。寄存器的内容指明。 * * 四、字符串操作指令四、字符串操作指令 1 1. . 基本字符串操作指令基本字符串操作指令MOVS DSTRMOVS DSTR,SSTRSSTR;源区字符串;源区字符串目的区字符串目的区字符串CMPS SSTRCMPS SSTR,DSTRDSTR;源区字符串;源区字符串 目的区字符串目的区字符串SCAS DSTRS
53、CAS DSTR;ALAL(AXAX,EAXEAX) 目的区字符串各字符目的区字符串各字符LODS SSTRLODS SSTR;源区字符串字符;源区字符串字符ALAL(AXAX,EAXEAX)STOS DSTRSTOS DSTR;ALAL(AXAX,EAXEAX)的字符)的字符目的区目的区INS DSTRINS DSTR;从;从DXDX指定的端口输入一字符到目的区指定的端口输入一字符到目的区OUTS SSTROUTS SSTR;将源区字符从;将源区字符从DXDX指定的端口送出指定的端口送出根据字符串中元素的长度,以上指令分别有三种形式:根据字符串中元素的长度,以上指令分别有三种形式: 如:如:
54、MOVSMOVSB B、MOVSMOVSW W、MOVSMOVSD D SCAS SCASB B、SCASSCASW W、SCASSCASD D OUTS OUTSB B、OUTSOUTSW W、OUTSOUTSD D* *2 2)字符串指令的有关问题)字符串指令的有关问题 指针及修改指针及修改源串指针:源串指针:ESIESI或或SISI,默认源串在,默认源串在DSDS所指的数据段。所指的数据段。目的串指针:目的串指针:EDIEDI或或DIDI,默认目的串在,默认目的串在ESES所指的数据段。所指的数据段。长度计数器是长度计数器是CXCX或或ECXECX,串长度可达,串长度可达64KB64KB
55、或或4GB4GB。STDSTD指令使指令使DF=1DF=1;CLDCLD指令使指令使DF=0DF=0。 串长度的控制串长度的控制 对标志的影响对标志的影响仅有仅有CMPSCMPS、SCASSCAS影响所有标志,其他指令不影响标志。影响所有标志,其他指令不影响标志。指针的修改:指针的修改:DF=0DF=0,增址;,增址;DF=1DF=1,减址。,减址。MOVSB;(;(SI) (DI) SI1 SI DI1 DICMPSB;(;(SI)()(DI) SI1 SI DI1 DISCASW; AX (DI) DI2 DI LODSW ;(;(SI) AX SI2 SI 基本指令的重复执行基本指令的重
56、复执行以上基本指令均为单步指令,可加重复前缀使指令重复执行。以上基本指令均为单步指令,可加重复前缀使指令重复执行。REPREP:使其后的基本指令重复执行,每执行一次,使其后的基本指令重复执行,每执行一次,CXCX自减自减1,1,直到直到CX=0CX=0为止。为止。 一般加在一般加在MOVSMOVS、STOSSTOS、LODSLODS、INSINS、OUTSOUTS指令前。指令前。CLDCLDREP MOVSBREP MOVSB (SISI)(DIDI) DI+1DIDI+1DI ; SI+1 SISI+1 SI CX CX1 CX1 CX CX0 CX0,重复,重复REPE/REPZREPE/
57、REPZ:条件满足时,重复执行其后的基本指令,重复执行的条件为:条件满足时,重复执行其后的基本指令,重复执行的条件为: 将将CX-1CXCX-1CX,若若CX0CX0,且且ZF=1ZF=1。用于搜索目的串与一个给定值的偏离位置(从哪个字符开始不同)。用于搜索目的串与一个给定值的偏离位置(从哪个字符开始不同)。REPNE/REPNZREPNE/REPNZ:条件满足时,重复执行其后的基本指令,重复执行的条件为:条件满足时,重复执行其后的基本指令,重复执行的条件为: CX0CX0且且ZF=0ZF=0。SCASSCAS指令可利用该前缀在一个字符串中寻找某个给定字符。指令可利用该前缀在一个字符串中寻找某
58、个给定字符。一般加在一般加在CMPSCMPS、SCAS SCAS 指令前指令前 REP MOVSBREP MOVSB例例1 1:将以:将以DSDS:2100H2100H为首址的连续为首址的连续100100个字节单元中的数据组传送至个字节单元中的数据组传送至 以以ESES:3100H3100H为首址的连续单元中。为首址的连续单元中。MOV SIMOV SI,2100H2100HMOV DIMOV DI,3100H3100HMOV CXMOV CX,100H100HCLDCLD;DF=0DF=0,增址,增址;建源区首址指针;建源区首址指针;建目的区首址指针;建目的区首址指针;置字符长度;置字符长度
59、* *例例2 2:STRING1STRING1和和STRING2STRING2两个字符串比较,相等则两个字符串比较,相等则AL=0AL=0,否则,否则AL=0FFHAL=0FFH。MOV SIMOV SI,OFFSET STRING1OFFSET STRING1MOV DIMOV DI,OFFSET STRING2OFFSET STRING2MOV CXMOV CX,COUNTCOUNTCLDCLDREPZREPZJNZ JNZ UMATUMATXOR ALXOR AL,ALALJMP JMP ENDNENDNUMATUMAT:MOV ALMOV AL, 0FFH0FFHENDNENDN:HL
60、THLT;建源区指针;建源区指针;建目的区指针;建目的区指针;置字符个数;置字符个数;DF=0DF=0,增址,增址;串比较,;串比较,CX=0CX=0或或 ZF=0ZF=0停止停止;ZF=0ZF=0,不相等转,不相等转;相等,;相等,AL=0AL=0;不相等,;不相等,AL=FFHAL=FFHCMPSBCMPSB* *例例3 3:搜索内存中某字符串内有无给定的字符。若有,在:搜索内存中某字符串内有无给定的字符。若有,在PINPIN单元中记录下单元中记录下 比较次数,比较次数,( (设该内存缓冲区首址为设该内存缓冲区首址为BUFBUF,串长度为,串长度为CNT)CNT)。MOV DIMOV DI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 混合动力电动汽车结构原理与检修 第2版 课件 学习情景4 混合动力电动汽车动力系统结构原理与检修
- 兽药饲料监管培训课件
- 演艺场地管理制度及流程(3篇)
- 兽药经营人员培训课件
- 重点岗位保密人员管理制度(3篇)
- 兽药临床应用技术
- 《GA 524-2004〈2004式警车汽车类外观制式涂装规范〉专题研究报告》
- 纪法衔接培训
- 企业员工招聘与面试流程制度
- 企业文化与团队建设制度
- 东西湖区2024-2025学年上学期期末八年级英语试卷(含标答)
- 村支书考试试题及答案
- 医疗综合楼手术室、放射科、检验科二次深化设计装饰工程投标方案投标文件(技术方案)
- 大连海事大学3300航海英语题库词结归纳
- 湖北省十堰市城区2024-2025学年九年级上学期期末质量检测道德与法治试题 (含答案)
- 2025年中国船舶集团有限公司招聘笔试参考题库含答案解析
- 办公楼物业服务的品质提升策略
- 光伏分布式项目日报模板
- -腹腔镜下肝部分切除术的护理查房
- 养殖场土地租赁合同
- 鲁科版高中化学选择性必修第一册第3章章末复习建构课课件
评论
0/150
提交评论