【教学课件】第二章80x86汇编语言程序设计.ppt
《【教学课件】第二章80x86汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第二章80x86汇编语言程序设计.ppt(111页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第二章第二章 80 x8680 x86汇编语言程序设计汇编语言程序设计 1第一节第一节 80 x8680 x86的寻址方式的寻址方式 指令格式:指令格式:操作码操作码-应包含操作类型和操作数类型;应包含操作类型和操作数类型;操作数操作数-可以是数据或用地址表示。可以是数据或用地址表示。说明说明操作数类型操作数类型(8/16/32(8/16/32位、有位、有/无符号等无符号等)可在操作码可在操作码或操作数字段中表示或操作数字段中表示(Intel(Intel为后者为后者)存放操作数字段数据的部件:存放操作数字段数据的部件:寄存器、存储器、寄存器、存储器、I/OI/O接口,指令和堆栈。接口,指令和堆
2、栈。说明说明-寄存器、存储器、寄存器、存储器、I/OI/O接口均接口均独立编址独立编址,分别构成,分别构成从从0 0编址的寄存器空间、存储器空间、编址的寄存器空间、存储器空间、I/OI/O空间;空间;指令中,堆栈不用地址表示,通过操作码表示。指令中,堆栈不用地址表示,通过操作码表示。寻址方式:寻址方式:产生操作数或其有效地址的方法。产生操作数或其有效地址的方法。操作码操作码 操作数操作数 操作数操作数2 80 x86 80 x86的寻址方式:的寻址方式:寻址方式寻址方式数据所在地址数据所在地址立即寻址立即寻址指令、指令、寄存器寻址寄存器寻址 寄存器、寄存器、直接寻址直接寻址 存储器、存储器、I
3、/OI/O寄存器间接寻址寄存器间接寻址 存储器、存储器、I/OI/O寄存器相对寻址寄存器相对寻址 存储器存储器基址变址寻址基址变址寻址 存储器存储器基址变址相对寻址基址变址相对寻址 存储器存储器比例比例变址寻址变址寻址 存储器存储器基址基址比例比例变址寻址变址寻址 存储器存储器相对基址相对基址比例比例变址寻址变址寻址 存储器存储器 说明:说明:与比例有关的寻址方式在与比例有关的寻址方式在8038680386及以后及以后CPUCPU中才出现;中才出现;I/OI/O空间和存储器的对应寻址方式表示形式不同。空间和存储器的对应寻址方式表示形式不同。3数据所在地数据所在地 寻址方式结果寻址方式结果备注备
4、注指令指令数据数据译码时取得译码时取得寄存器寄存器物理地址物理地址CPUCPU内部定位内部定位存储器存储器有效地址有效地址PA=PA=有效地址与段寄存器的组合有效地址与段寄存器的组合I/OI/O物理地址物理地址I/OI/O只有只有16K16K空间空间堆栈堆栈不按地址访问,用存储器构建不按地址访问,用存储器构建 存储器的有效地址存储器的有效地址(EA)(EA)与物理地址与物理地址(PA)(PA):有效地址有效地址基于段的地址基于段的地址(段内偏移地址段内偏移地址);EA=EA=基址基址 +(+(变址变址*比例因子比例因子)+)+位移量位移量 物理地址物理地址基于存储器空间的地址。基于存储器空间的
5、地址。实地址模式的实地址模式的PA=PA=段地址段地址10H+EA10H+EA 保护模式的保护模式的PA=PA=段地址的映像及变换段地址的映像及变换+EA+EA回回9页页4 存储器存储器有效地址有效地址生成的相关约定:生成的相关约定:组成部分组成部分1616位寻址位寻址3232位寻址位寻址基址寄存器基址寄存器 BXBX、BPBP任何任何3232位通用寄存器位通用寄存器(含含ESP)ESP)变址寄存器变址寄存器 SISI、DIDI除除ESPESP外的任何外的任何3232位通用寄存器位通用寄存器比例因子比例因子无无1 1、2 2、4 4、8 8位移量位移量0 0、8 8、1616位位0 0、8 8
6、、1616、3232位位 存储器存储器物理地址物理地址生成中的相关约定:生成中的相关约定:a.a.访存操作选择默认段寄存器规则访存操作选择默认段寄存器规则 取指取指操作和操作和相对相对IPIP寻址寻址的访存操作的访存操作代码段代码段CSCS,堆栈堆栈操作和操作和用用ESP/EBPESP/EBP为基址为基址的访存操作的访存操作堆栈段堆栈段SSSS,串处理指令的目的串的访存操作串处理指令的目的串的访存操作附加数据段附加数据段ESES,除堆栈和串处理的除目的串外的访存操作除堆栈和串处理的除目的串外的访存操作数据段数据段DSDS。回下页回下页回回9页页回回13页页5 b.b.指令中访问非默认段数据方法
7、指令中访问非默认段数据方法段超越段超越 可使用可使用段超越前缀方式段超越前缀方式指明所访问数据所在的段。指明所访问数据所在的段。段超越前缀种类:段超越前缀种类:CS:CS:、DS:DS:、SS:SS:、ES:ES:、FS:FS:、GS:GS:。段超越示例:段超越示例:MOV AX,10H MOV AX,10H ;DSDS段段10H10H处的一个字的数据处的一个字的数据 ;赋给;赋给AXAX寄存器寄存器 MOV AX,ES:10H MOV AX,ES:10H;ESES段段10H10H处的一个字的数据处的一个字的数据 ;赋给;赋给AXAX寄存器寄存器 不允许使用段超越前缀的情况:不允许使用段超越前
8、缀的情况:(1)串处理指令的目的串必须用)串处理指令的目的串必须用ES段;段;(2)压栈)压栈/出栈指令的目的出栈指令的目的/源段必须用源段必须用SS段;段;(3)与程序中指令有关的操作必须用)与程序中指令有关的操作必须用CS段。段。转上页转上页61 1、立即寻址、立即寻址 操作数操作数存放在指令中存放在指令中(以常量形式以常量形式)。示例:示例:MOV AH,MOV AH,-40-40 ;0C0H(-40)0C0H(-40)AHAH MOV AX,MOV AX,5060H5060H ;50H50HAH,60HALAH,60HAL MOV EAX,MOV EAX,12345678H123456
9、78H ;12345678H12345678HEAXEAX 说明:说明:说明:说明:80 x8680 x8680 x8680 x86的操作数类型在地址码中表示的操作数类型在地址码中表示的操作数类型在地址码中表示的操作数类型在地址码中表示应用:应用:适合于对常数的操作。适合于对常数的操作。操作码D8H代码段操作码60H50H代码段AHD8HAX50H60H示例示例示意图示意图示例示例示意图示意图注:操作码中含目的操作数注:操作码中含目的操作数(有时独立占一定信息位有时独立占一定信息位)低位在前低位在前低低高高72 2、寄存器寻址、寄存器寻址 操作数操作数存放在指令所指定寄存器号的寄存器中。存放在
10、指令所指定寄存器号的寄存器中。示例:示例:MOV AH,BL MOV AH,BL ;(BL)AH(BL)AH MOV DS,AX MOV DS,AX ;(AX)DS(AX)DS MOV SI,AX MOV SI,AX ;(AX)SI(AX)SI MOV ECX,EDX MOV ECX,EDX;(EDX)(EDX)ECXECX 错误示例:错误示例:MOV CS,AX MOV CS,AX ;CSCS不能为不能为MOVMOV目的寄存器目的寄存器 MOV IP,BX MOV IP,BX ;IPIP不能做不能做MOVMOV目的寄存器目的寄存器 MOV AX,CL MOV AX,CL ;目的与源;目的与源
11、REGREG类型类型(位数位数)不同不同 MOV BH,DX MOV BH,DX ;目的与源;目的与源REGREG类型类型(位数位数)不同不同应用:应用:适合于对频繁使用的数据的操作。适合于对频繁使用的数据的操作。83 3、直接寻址、直接寻址 存储器操作数的有效地址直接存放在指令中,存储器操作数的有效地址直接存放在指令中,即:即:EA=EA=指令地址码字段内容指令地址码字段内容。示例示例1 1:MOV AL,100HMOV AL,100H 若若(DS)=3000H(DS)=3000H,代码段代码段数据段数据段3100H30100H22H11H 则则PA=3000H*10H+100H=30100
12、HPA=3000H*10H+100H=30100H (AL)=11H (AL)=11H示例示例2 2:MOV BL,ES:100HMOV BL,ES:100H 若若(DS)=3000H(DS)=3000H,(ES)=2000H(ES)=2000H,则则PA=2000H*10H+100H=20100HPA=2000H*10H+100H=20100H。示例示例3 3:MOV AL,BUFMOV AL,BUF或或MOV AL,BUFMOV AL,BUF表示将从表示将从BUFBUF开始开始的内容送的内容送ALAL,BUFBUF以预先定义地址。以预先定义地址。说明:汇编语言允许用符号说明:汇编语言允许用
13、符号(变量或标号变量或标号)地址代替数值地址。地址代替数值地址。转转4页页转转5页页94 4、寄存器间接寻址、寄存器间接寻址 存储器操作数的有效地址存放在指令所指定寄存器存储器操作数的有效地址存放在指令所指定寄存器中,即:中,即:EA=(EA=(寄存器寄存器)。寄存器的使用限制寄存器的使用限制1616位寄存器位寄存器3232位寄存器位寄存器对应的段寄存器对应的段寄存器BPBPEBPEBP、ESPESPSS(SS(默认时不可以用其默认时不可以用其它它REG)REG)BXBX、SISI、DIDI 任意任意3232位通用寄存器位通用寄存器DS(DS(默认时不可以用其默认时不可以用其它它REG)REG
14、)说明:限制的目的是减少代码长度、提高执行速度说明:限制的目的是减少代码长度、提高执行速度10示例示例1 1:MOV AL,BX ;MOV AL,BX ;PA=(DS)*10H+(BX)PA=(DS)*10H+(BX)MOV AX,CS:SI;MOV AX,CS:SI;PA=(CS)*10H+(SI)PA=(CS)*10H+(SI)MOV ECX,EDX;MOV ECX,EDX;PA=(EDS)*10H+(EDX)PA=(EDS)*10H+(EDX)MOV AH,BP ;MOV AH,BP ;PA=(SS)*10H+(BP)PA=(SS)*10H+(BP)示例示例2 2:MOV AH,BPMO
15、V AH,BP MOV BX,SI MOV BX,SI 设设(SS)=100H,(DS)=200H,(BP)=0B0H,(SI)=2AH(SS)=100H,(DS)=200H,(BP)=0B0H,(SI)=2AH 则第一条指令则第一条指令PA=(SS)*10H+(BP)PA=(SS)*10H+(BP)=1000H+0B0H=10B0H =1000H+0B0H=10B0H;第二条指令第二条指令PA=(DS)*10H+(SI)PA=(DS)*10H+(SI)=2000H+2AH=202AH =2000H+2AH=202AH。应用:应用:适合于对复杂数据结构的数据元素寻址。适合于对复杂数据结构的数据
16、元素寻址。115 5、寄存器相对寻址(基址寻址或变址寻址)、寄存器相对寻址(基址寻址或变址寻址)操作数的有效地址为相对于指令所指定寄存器中地操作数的有效地址为相对于指令所指定寄存器中地址的偏移地址,即:址的偏移地址,即:EA=(EA=(寄存器寄存器)+)+位移量位移量。寄存器寄存器的使用限制的使用限制与寄存器间接寻址方式相同。与寄存器间接寻址方式相同。示例示例1 1:MOV AX,300HSI MOV AX,300HSI(或(或MOV AX,SI+300HMOV AX,SI+300H)若若(DS)=3000HDS)=3000H,(SI)=2000H(SI)=2000H 则则PA=(DS)*10
17、H+(SI)+300H=32300HPA=(DS)*10H+(SI)+300H=32300H 示例示例2 2:MOV AX,BUFSI MOV AX,BUFSI(或(或MOV AX,SI+BUFMOV AX,SI+BUF)若若BUF=300HBUF=300H,则与上例一致。,则与上例一致。说明:汇编语言允许定义数据变量,所在存储器位置称为说明:汇编语言允许定义数据变量,所在存储器位置称为符号地址,与指令的地址标号不同符号地址,与指令的地址标号不同(所用段寄存器不同所用段寄存器不同)。应用:应用:适合于动态再定位和对数组元素的访问。适合于动态再定位和对数组元素的访问。126 6、基址变址寻址、基
18、址变址寻址 操作数的有效地址由指令所指定的基址操作数的有效地址由指令所指定的基址REGREG与变址与变址REGREG的内容相加而成,即:的内容相加而成,即:EA=(EA=(基址基址REG)+(REG)+(变址变址REG)REG)。寄存器寄存器的使用限制的使用限制转转5页页可使用寄存器的可使用寄存器的对应的段寄存器对应的段寄存器基址基址REGREGBXBXDSDSBPBPSSSS变址变址REGREGSISI、DIDI 示例:示例:MOV AX,BXDI MOV AX,BXDI (亦可表示为(亦可表示为 MOV AX,BX+DIMOV AX,BX+DI)若若(DS)=2000HDS)=2000H,
19、(BX)=1000H(BX)=1000H,(DI)=100H(DI)=100H 则物理地址则物理地址=(DS)*10H+(BX)+(DI)=21100H=(DS)*10H+(BX)+(DI)=21100H应用:应用:适合于对多维数组等复杂结构元素的访问。适合于对多维数组等复杂结构元素的访问。137 7、基址变址相对寻址、基址变址相对寻址 操作数的有效地址为相对于指令所指定的基址操作数的有效地址为相对于指令所指定的基址REGREG与与变址变址REGREG的内容相加的地址的偏移地址,的内容相加的地址的偏移地址,即:即:EA=(EA=(基址基址REG)+(REG)+(变址变址REG)+REG)+位移
20、量。位移量。寄存器的使用限制寄存器的使用限制 与基址变址寻址方式相同。与基址变址寻址方式相同。示例:示例:MOV AX,34HBXDI MOV AX,34HBXDI (亦可表示为(亦可表示为 MOV AX,34HBX+DIMOV AX,34HBX+DI)若若(DS)=2000HDS)=2000H,(BX)=1000H(BX)=1000H,(DI)=100H(DI)=100H 则则PA=(DS)*10H+(BX)+(DI)+34H=21134HPA=(DS)*10H+(BX)+(DI)+34H=21134H应用:应用:适合于对多维数组等复杂结构元素的访问。适合于对多维数组等复杂结构元素的访问。1
21、48 8、比例变址寻址、比例变址寻址 操作数的有效地址为相对于指令所指定的变址操作数的有效地址为相对于指令所指定的变址REGREG内内容和比例因子相乘的地址的偏移地址,容和比例因子相乘的地址的偏移地址,即:即:EA=(EA=(变址变址REG)*REG)*比例因子比例因子+位移量位移量。寄存器的使用限制寄存器的使用限制 与与基址变址寻址方式中基址变址寻址方式中变址变址REGREG限制限制相同。相同。示例:示例:MOV AX,200HESI*8 MOV AX,200HESI*8 若若(DS)=2000HDS)=2000H,(ESI)=4(ESI)=4 则则PA=(DS)*10H+(ESI)*4+2
22、00H=20220HPA=(DS)*10H+(ESI)*4+200H=20220H应用:应用:适合于对结构数组等复杂结构元素的访问。适合于对结构数组等复杂结构元素的访问。159 9、基址比例变址寻址、基址比例变址寻址 操作数的有效地址为指令所指定的变址操作数的有效地址为指令所指定的变址REGREG内容和比内容和比例因子相乘后与基址例因子相乘后与基址REGREG内容相加的地址,内容相加的地址,即:即:EA=(EA=(基址基址REG)+(REG)+(变址变址REG)*REG)*比例因子比例因子。寄存器的使用限制寄存器的使用限制 与与基址变址寻址方式相同基址变址寻址方式相同。示例:示例:MOV AX
23、,EBX+ESI*8 MOV AX,EBX+ESI*8 应用:应用:适合于对结构数组等复杂结构元素的访问。适合于对结构数组等复杂结构元素的访问。161010、相对基址比例变址寻址、相对基址比例变址寻址 操作数的有效地址为相对于指令所指定的变址操作数的有效地址为相对于指令所指定的变址REGREG内内容和比例因子相乘后与基址容和比例因子相乘后与基址REGREG内容相加的偏移地址,内容相加的偏移地址,即:即:EA=(EA=(基址基址REG)+(REG)+(变址变址REG)*REG)*比例因子比例因子+位移量位移量。寄存器的使用限制寄存器的使用限制 与与基址变址寻址方式相同基址变址寻址方式相同。示例:
24、示例:MOV AX,200HEBX+ESI*8 MOV AX,200HEBX+ESI*8 应用:应用:适合于对矩阵、结构数组等复杂结构元素的访适合于对矩阵、结构数组等复杂结构元素的访问。问。17 各种寻址方式比较各种寻址方式比较寻址方式寻址方式物理地址物理地址/操作数操作数立即寻址立即寻址操作数操作数=(=(地址码字段地址码字段)寄存器寻址寄存器寻址LA=LA=寄存器号,操作数寄存器号,操作数=(=(寄存器寄存器)直接寻址直接寻址LA=(SR)*10H+ALA=(SR)*10H+A三个组成三个组成部分逐步部分逐步增加增加寄存器间接寻址寄存器间接寻址LA=(SR)*10H+(BLA=(SR)*1
25、0H+(B或或I)I)寄存器相对寻址寄存器相对寻址LA=(SR)*10H+(BLA=(SR)*10H+(B或或I)+AI)+A基址变址寻址基址变址寻址LA=(SR)*10H+(B)+(I)LA=(SR)*10H+(B)+(I)基址变址相对寻址基址变址相对寻址LA=(SR)*10H+(B)+(I)+ALA=(SR)*10H+(B)+(I)+A比例比例变址寻址变址寻址LA=(SR)*10H+(I)*S+ALA=(SR)*10H+(I)*S+A基址基址比例比例变址寻址变址寻址LA=(SR)*10H+(B)+(I)*SLA=(SR)*10H+(B)+(I)*S相对基址相对基址比例比例变址寻址变址寻址L
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第二 80 x86 汇编语言 程序设计
限制150内