资源描述:
《汇编语言程序设计上16位汇编版本》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章80x86汇编语言程序设计(上)16位汇编版本1有效地址(effectiveaddressEA)——操作数在段内的偏移地址寻址方式——产生有效地址的方法80x86的操作数寻址方式有:1、立即寻址2、寄存器寻址3、存储器寻址4、端口寻址3.180x86的寻址方式3.1.1操作数寻址80x86指令的一般汇编语言格式:[标号:]指令助记符[[目的操作数][,源操作数]][;注释]其中[]表示可选项;21、立即寻址操作数以常量形式直接放在指令中,紧跟在操作码之后机器码存放形式如下:立即寻址示例MOVAH,-40;-40AHMOVAX,34D8H;34HAH,D8
2、HALMOVAX,-40;0FFD8H(-40)AX我们首先讨论两种与存储器无关的寻址方式:OPD8操作码8位操作数低地址高地址OP操作码D16高8位D16低8位16位操作数代码段代码段32、寄存器寻址操作数存放在某个寄存器中,指令指定寄存器号寄存器号操作数寄存器寻址示例MOVAH,BL;(BL)-->AHMOVDS,AX;(AX)-->DSMOVSI,AX;(AX)-->SI说明:立即寻址和寄存器寻址方式不需访问存储器即可得到操作数,速度快指令寄存器4有效地址(EA)的4种组成成分:位移量(displacement)存放在指令中的8位、16位或32位的数,是
3、一个地址有效地址的计算:EA=基址+(变址*比例因子)+位移量比例因子(scalefactor)32位汇编才有其值可为1,2,4或8,386及其后继机型新增加的变址(index)存放在变址寄存器中的内容,用于访问数组的某个元素基址(base)存放在基址寄存器中的内容,用于指向数组的首地址下面我们来讨论余下的几种与存储器有关的寻址方式,先介绍几个概念:516/32位寻址时有效地址四种成分的组成四种成分16位寻址32位寻址位移量0,8,16位0,8,32位基址寄存器BX,BP任何32位通用寄存器(包括ESP)变址寄存器SI,DI除ESP以外的32位通用寄存器比例因子无
4、1,2,4,86默认段选择规则访存类型所用段及寄存器缺省选择规则指令代码段CS用于取指堆栈堆栈段SS所有的堆栈的进栈和出栈任何用ESP或EBP或BP作为基址寄存器的访存目的串附加数据段ES串处理指令的目的串局部数据数据段DS除相对于堆栈以及串处理的目的串以外的所有数据访问7不允许使用段超越前缀的情况:(1)串操作指令的目的串必须用ES段(2)PUSH指令的目的和POP指令的源必须用SS段(3)程序的指令必须存放在CS段访问非默认段数据的方法——段超越数据的存放比较灵活,除了放在默认的DS段,还可以存放在别的段,此时访问他们需要使用段超越前缀,可用的段超越前缀有CS
5、:,DS:,ES:,SS:,FS:,GS:。段超越举例:MOVAX,[10H];DS段10H处的一个字的数据赋给AX寄存器MOVAX,ES:[10H];ES段10H处的一个字的数据赋给AX寄存器83、直接寻址操作数地址的偏移量(EA)在指令中物理地址=指定段的段基地址×16+偏移量(EA)系统默认,操作数在数据段段基地址EA操作数+指令存储器MOVAX,2000H;立即寻址MOVAX,[2000H];直接寻址9直接寻址示例1MOVAX,[1000H]物理地址设(DS)=10A0H代码段+OP00H10H数据段11A00H30H50H50H30HAX(本章中图示存储
6、器地址从上到下递增)低地址10A00H1000H11A00H10A0H1000H30H50H11A00H10直接寻址示例2MOVBL,ES:[0100H]物理地址设(ES)=3000H30000H(DS)=2000H+0100H30100H4B00BL4B在汇编语言指令中,可以用符号地址代替数值地址如:MOVAX,BUFF或MOVAX,[BUFF]其中BUFF为存放数据单元的符号地址。3000H0100H30100H30100H4B114、寄存器间接寻址操作数在存储器中,操作数地址的偏移量(EA)在寄存器中基址或变址寄存器号EA操作数+存储器指令寄存器段基地址寄存
7、器间接寻址示例MOVAL,[BX]MOVAX,CS:[SI]MOV[BP],AH12MOVAH,[BP]MOVBX,[SI]MOVCX,SI设(SS)=1000H,(DS)=2000H,(BP)=0B10H,(SI)=032AH物理地址物理地址10000H20000H+0B10H+032AH40H00H3EH46H40HAH10B10H…2032AH463EHBX2032BH10B11HSI032AH032AHCX1000H2000H0B10H032AH10B10H10B10H2032AH2032AH40H3EH46032AH135、基址寻址操作数的有效地址是基址
8、寄存器的内