资源预览内容
第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
第9页 / 共35页
第10页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第3章 8086/8088指令系统mov ax,12hcall displayJmp 1234h主要内容:主要内容:l指令系统的普通概念l对操作数的寻址方式l六大类指令的操作原理:l 操作码的含义l 指令对操作数的要求l 指令执行的结果3.1 3.1 概述概述指令指令控制计算机完成指定操作的命令控制计算机完成指定操作的命令机器指令机器指令指令的二进制代码方式。例如:指令的二进制代码方式。例如:CD21H汇编指令汇编指令助记符方式的指令。例如:助记符方式的指令。例如:INT 21H指令系统指令系统CPU一切指令及其运用规那么的集合一切指令及其运用规那么的集合8088/8086指令系统指令系统:1指令向后兼容指令向后兼容x86系列系列2运用广泛,资料易于寻觅运用广泛,资料易于寻觅指令按功能分为六大类指令按功能分为六大类9292种种1数据传送类;数据传送类;2算术运算类;算术运算类;3逻辑运算和移位;逻辑运算和移位;4串操作;串操作;5控制转移类;控制转移类;6处置器控制。处置器控制。3.1.1 指令的根本构成指令的根本构成阐明要执行的阐明要执行的是什么操作是什么操作操作对象,可以操作对象,可以有有0个、个、1个或个或2个个目的目的源源指令举例:ADD AX,SI+6MOV AX , BX操作码 操作数INC BXHLT部分部分8088常用指令常用指令指令类型指令类型助记符助记符数据传送数据传送MOV,PUSH/POP,XCHG等地址传送LEA,LDS,LES输入输出IN,OUT算术运算加法ADD,ADC,INC减法SUB,SBB,DEC,NEG,CMP乘/除法MUL,IMUL,DIV,IDIV逻辑AND,OR,NOT,XOR,TEST移位SHL/SHR/SAR,ROL/ROR,RCL/RCR串操作MOVS,CMPS,SCAS,LODS,STOS控制转移JMP,JXX,LOOP,CALL/RET,INT/IRET8088/8086的操作数分为的操作数分为3类类1 1、立刻数常数、立刻数常数取值范围如下表:取值范围如下表:8位16位无符号数00H-FFH(0-255)0000H-FFFFH(0-65535)带符号数80H-7FH(-128127)8000H-7FFFH(-3276832767)MOV AX,0FA00H;正确正确MOV 8000H,DX;错误错误2 2、存放器操作数、存放器操作数放在放在8个通用存放器或个通用存放器或4个段存放器中的操作数个段存放器中的操作数只能存放字操作数只能存放字操作数段存放器存放段存放器存放当前操作数的当前操作数的段基地址段基地址不允许将立刻数传送到段存放器不允许将立刻数传送到段存放器SIDIBPSPCSDSESSS3 3、存储器操作数、存储器操作数存储器操作数存储器操作数字节字节字字双字双字124类型类型存储单元个数存储单元个数普通不允许两个操作数同时为存储器操作数普通不允许两个操作数同时为存储器操作数存储单元的物理地址存储单元的物理地址 = 段基地址段基地址 + 偏移地址偏移地址假设指令中没有指明所涉及的段存放器,CPU就采用默许的段存放器来确定操作数所在的段。表表3.3 段存放器运用的一些根本商定段存放器运用的一些根本商定存储器操作数的偏移地址也称有效地址可以经过存储器操作数的偏移地址也称有效地址可以经过不同的寻址方式由指令给出。不同的寻址方式由指令给出。例如,假设例如,假设(BX)=2000H, (SI)=0A00H, (DI)=2A00H,那么以下指令的结果是一样的:那么以下指令的结果是一样的:MOV AL, 2A00HMOV AL, BX+0A00HMOV AL, BXSIMOV AL, DI一条指令的执行时间一条指令的执行时间=3.1.2 指令的执行时间指令的执行时间取指令取指令取操作数取操作数执行指令执行指令传送结果传送结果单位用时钟周期数表示单位用时钟周期数表示表表3.4 3.4 常用指令执行时间常用指令执行时间结论:结论: 1尽量运用存放器作为操作数尽量运用存放器作为操作数 2假设有能够,用移位替代乘除法假设有能够,用移位替代乘除法 3尽量运用简单的寻址方式尽量运用简单的寻址方式寻址方式寻址方式寻觅操作数的方法寻觅操作数的方法 寻觅操作数的地址普通指源操作寻觅操作数的地址普通指源操作数数 寻觅要执行的下一条指令的地址寻觅要执行的下一条指令的地址在在8086指令系统中,阐明操作数所指令系统中,阐明操作数所在地址的寻址方式可分为在地址的寻址方式可分为8种:种: 立刻寻址立刻寻址 存放存放器相对寻址器相对寻址 直接寻址直接寻址 基址基址-变址寻址变址寻址 存放器寻址存放器寻址 相对相对的基址的基址-变址寻址变址寻址 存放器间接寻址存放器间接寻址 隐含隐含寻址寻址3.2 80863.2 8086的寻址方式的寻址方式l 操作数操作数(为一常数为一常数)直接由指令给出直接由指令给出l (此操作数称为立刻数此操作数称为立刻数)l 立刻寻址只能用于源操作数立刻寻址只能用于源操作数l 例:例:l MOV AX, 1C8FHl MOV BYTE PTR2A00H, 8FHl 错误例:错误例:l MOV 2A00H, AX ; 错误!错误! l 3.1.2 立刻寻址立刻寻址立立刻刻数数操作码操作码低低8位位高高8位位存储器存储器MOV操作码操作码02H31HAHAL代码段代码段立刻寻址指令在存立刻寻址指令在存储器中的存放方式储器中的存放方式AX指令操作例:指令操作例:MOV AX,3102H ; AX 3102H 执行后,执行后,(AH) = 31H,(AL) = 02H3.2.2 直接寻址直接寻址l 指令中直接给出操作数的指令中直接给出操作数的16位偏移地址位偏移地址l 偏移地址也称为有效地址偏移地址也称为有效地址(EA, Effective Address)l 默许的段存放器为默许的段存放器为DS,但也可以显式地指定其他,但也可以显式地指定其他段存放器段存放器称为段超越前缀称为段超越前缀l 偏移地址也可用符号地址来表示,如偏移地址也可用符号地址来表示,如ADDR、VARl 例:例:l MOV AX , 2A00Hl MOV DX , ES: 2A00Hl MOV SI , TABLE_PTR指令操作例:指令操作例:MOV AX,3102H AL (3102H) , AH (3103H)假设(DS)=2000H, (23012H) = CDH, (23013H) = ABH那么操作数的物理地址为: 20000H+3102H = 23102H指令执行后:(AX) = ABCDHMOV操作码操作码02H31HAHAL23102HCDHABH存储器存储器代码段数据段.3.2.3 存放器寻址存放器寻址l 操作数放在某个存放器中操作数放在某个存放器中l 源操作数与目的操作数字长要一样源操作数与目的操作数字长要一样l 存放器寻址与段地址无关存放器寻址与段地址无关l 例:例:l MOV AX, BXl MOV 3F00H, AXl MOV CL, ALl 错误例:错误例: l MOV AX, BL ; 字长不同字长不同l MOV ES: AX, DX ; 存放器与段无关存放器与段无关AXSI2233H2233H指令操作例:指令操作例:MOV SI,AX ; SI (AX) 指令执行前:指令执行前:(AX)=2233H 指令执行后:指令执行后:(AX)=2233H,(SI)=2233H3.2.4 存放器间接寻址存放器间接寻址l 操作数的偏移地址操作数的偏移地址( (有效地址有效地址EA)EA)放在存放器中放在存放器中l 只需只需SISI、DIDI、BXBX和和BPBP可作间址存放器可作间址存放器l l 例:例: MOV AX, BX MOV AX, BXl MOV CL, CS:DI MOV CL, CS:DIl 错误例错误例 :l MOV AX, DX MOV AX, DXl MOV CL, AX MOV CL, AXEA = (BX)(BP)(SI)(DI)指令操作例:指令操作例:MOV AX,SI假设假设 (DS)=6000H, (SI)=1200H, (61200H)=44H, (61201H)=33H那么指令执行后,那么指令执行后,(AX)=3344H。44H33H60001200DSSI6000061200 61200HAX存储器存储器数据段 +) 120044H33H3.2.5 存放器相对寻址存放器相对寻址l EA=间址存放器的内容加上一个间址存放器的内容加上一个8/16位的位移量位的位移量存放器相对寻址常用于存取表格或一维数组中的存放器相对寻址常用于存取表格或一维数组中的元素元素把表格的起始地址作为位移量,元素的把表格的起始地址作为位移量,元素的下标值放在间址存放器中或反之下标值放在间址存放器中或反之EA = (BX)(BP)(SI)(DI)+ 8位16位位移量 l 例:例: MOV AX, BX+8l MOV CX, TABLESIl MOV AX, BP+1000H ; 默许段存放器默许段存放器为为SSl 指令操作例:指令操作例:MOV AX,DATABXl 假设假设(DS)=6000H, (BX)=1000H, DATA=2A00H,l (63A00H)=66H, (63A01H)=55Hl 那么物理地址那么物理地址 = 60000H + 1000H + 2A00H = 63A00Hl 指令执行后:指令执行后:AX=5566Hl见下页图示见下页图示 操作码操作码00 偏移量低2A 偏移量高DS 6000BX 1000 + DATA 2A0063A0063A00HAHALAX代码段数据段.66H55HMOV AX,DATABX3.2.6 基址基址-变址寻址变址寻址l 假设操作数的偏移地址:假设操作数的偏移地址:l 由基址存放器由基址存放器(BX或或BP)给出给出 基址寻址方式基址寻址方式l 由变址存放器由变址存放器(SI或或DI)给出给出 变址寻址方式变址寻址方式l 由一个基址存放器的内容和一个变址存放器的内由一个基址存放器的内容和一个变址存放器的内容相加而构成操作数的偏移地址,称为基址容相加而构成操作数的偏移地址,称为基址-变址变址寻址。寻址。EA = (BX)(BP)+ (SI)(DI)l 同一组内的存放器不能同时出现。同一组内的存放器不能同时出现。例:例: MOV AX, BX SI MOV AX, BX+SI MOV AX, DS: BP DI错误例:错误例: MOV AX, BX BP MOV AX, DI SI 83000操作码操作码DS 8000BX 2000 + SI 100083000HAHALAX代码段数据段.YYXX指令操作例:指令操作例:MOV AX,BXSI假定:假定:(DS)=8000H, (BX)=2000H, SI=1000H那么物理地址那么物理地址 = 80000H + 2000H + 1000H = 83000H指令执行后指令执行后: (AL)=83000H (AH)=83001H3.2.7 相对的基址相对的基址-变址寻址变址寻址l 在基址在基址-变址寻址的根底上再加上一个相对位移量变址寻址的根底上再加上一个相对位移量l 本卷须知同基址本卷须知同基址-变址寻址变址寻址EA = (BX)(BP)+ (SI)(DI)+ 8位16位位移量 l 例:例:MOV AX,BASE SI BXMOV AX,BX+BASE SIMOV AX,BX+SI+BASEMOV AX,BX BASE SIMOV AX,BX+SI BASE指令操作例:指令操作例:MOV AXMOV AX,DATADIBXDATADIBX假设假设(DS)=8000H, (BX)=2000H, (DI)=1000H, (DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200HDATA=200H那么指令执行后那么指令执行后(AH)=83021H, (AH)=83021H, (AL)=83020H(AL)=83020H8320083200HAHALAX+ DATA 0200操作码操作码代码段数据段.YYXXDS 8000BX 2000 D I 1000运用相对的基址运用相对的基址-变址寻址方式可以很方便地访变址寻址方式可以很方便地访问二维数组。问二维数组。基址存放器基址存放器数组首地址数组首地址变址存放器变址存放器数组元素行址数组元素行址位移量位移量数组元素列址数组元素列址偏移地址偏移地址二维数组例:内存图示按行存储二维数组例:内存图示按行存储行位移地址行位移地址行内元素下标行内元素下标1.1 8 32.2 5 23.4 0 9A = 3.2.8 隐含寻址隐含寻址l 指令操作数是隐含的,在指令中未显式地指明。指令操作数是隐含的,在指令中未显式地指明。l 例:例:MUL BLl 指令隐含了被乘数指令隐含了被乘数AL及乘积及乘积AXl 类似的指令还有:类似的指令还有:DIV、CBW、MOVS等等ALBLAX小结小结l指令由指令由 和和 构成构成l如何获得操作数如何获得操作数称为称为 操作码操作码 操作数操作数寻址方式寻址方式l寻址方式可分为寻址方式可分为立刻寻址立刻寻址直接寻址直接寻址存放器相对寻址存放器相对寻址存放器寻址存放器寻址基址基址-变址寻址变址寻址基址基址-变址相对寻址变址相对寻址存放器间接寻址存放器间接寻址存放器间接、存放器相对、基址变址、相对存放器间接、存放器相对、基址变址、相对基址变址四种寻址方式的比较:基址变址四种寻址方式的比较: 寻址方式寻址方式 指令操作数方式指令操作数方式 存放器间接存放器间接 只需一个存放器只需一个存放器BX/BP/SI/DI之一之一 存放器相对存放器相对 一个存放器加上位移量一个存放器加上位移量 基址基址变址变址 两个不同类别的存放器两个不同类别的存放器 相对基址相对基址-变址变址 两个不同类别的存放器加两个不同类别的存放器加上位移量上位移量
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号