欢迎来到天天文库
浏览记录
ID:40248448
大小:638.00 KB
页数:64页
时间:2019-07-29
《汇编语言程序设计 葛建梅 第3章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章指令系统和寻址方式◆汇编指令格式◆寻址方式◆8086指令系统◆80X86及Pentium扩展指令3.1汇编指令格式计算机中的一条指令通常包含两部分:依据操作数的个数划分,80X86CPU指令系统中的指令格式最常用的有:双操作数指令、单操作数指令和无操作数指令。操作码 操作数1、双操作数指令汇编格式及操作规定格式:[标号:]操作符OPD,OPS[;注释]操作规定:(1)OPD与OPS应为同种操作类型且类型明确,即同为字节类型或字类型。(2)OPD不能是立即数。(3)OPS和OPD不能同时为存储器操作数,即:或者是OPS和OPD中至少有一个为寄存器操作数,或者是OPD为存储器操作数,
2、OPS为立即数。(4)操作结束后,运算结果存入OPD中,OPS内容不变。2、单操作数指令汇编格式及操作规定格式:[标号:]操作符OPD[;注释]操作规定:(1)OPD类型必须明确即为字节类型或字类型,不能是模糊类型。(2)操作对象为目的操作数,操作结束后结果存入OPD中。(3)OPD不能是立即数,只能是寄存器操作数或存储器操作数。3、无操作数指令汇编格式及操作规定格式:[标号:]操作符[;注释]操作规定:指令中只有操作码,不含操作数,这 种指令有两种可能:(1)无需任何操作数。如停机指令、空操作指令等。(2)所需操作数是隐含指定的,操作时取固定操作数进行操作。返回3.2寻址方式
3、寻找指令中所需操作数存放地址的方式或程序转移时寻找转移地址的方式称为寻址方式,因而寻址方式分为两大类,一类是数据寻址方式,另一类是转移地址寻址方式。由于80X86指令涉及四种操作数:立即操作数、寄存器操作数、存储器操作数和隐含操作数,因此,数据寻址方式又可对应四种寻址方式,即:立即寻址、寄存器寻址、存储器寻址和固定寻址。1、立即寻址此寻址方式所提供的操作数直接包含在指令中,它紧跟在指令操作码后面,存放在存储器代码段中。立即操作数可以是8位,也可以是16位。汇编格式:n(n是用8位或16位二进制补码表示的有符号数)【例3.1】MOVAX,1234H立即寻址方式用来表示常数,它常用于给寄存器
4、赋初值。需要强调的是,立即寻址只能用于源操作数,不能用于目的操作数。2、寄存器寻址此寻址方式的操作数直接存放在由指令指明的寄存器中。在汇编指令中直接书写寄存器名,如16位寄存器操作数可以是AX、BX、CX、DX、SI、DI、BP、SP、DS、ES、SS、CS等;8位寄存器操作数可以是AH、AL、BH、BL、CH、CL、DH、DL。汇编格式:R (其中R表示寄存器名)此寻址方式由于存取操作数直接从CPU内部寄存器中获得,不需访问存储器,因而指令执行的速度快。寄存器寻址既可用于源操作数,又可用于目的操作数,应用频率高。【例3.2】MOVDS,AXADDCL,AH3、存储器寻址存储器寻址方式
5、的操作数都是存放在存储器中,一般是数据段、附加段、堆栈段中的存储单元。指令中给出的是存储单元的地址或产生存储单元地址的表达式。在汇编语言源程序中,存储单元地址是采用逻辑地址的形式表示的,即:段首址:段内偏移地址。段首址存放在某个段寄存器中,段内偏移地址是指存放操作数的存储单元与段起始地址(段首址)之间的距离(字节数),又可称为“有效地址”,记作EA。有效地址EA是由3个地址分量的某种组合求得,这3个地址分量是:位移量、基址、变址。这3个地址分量的不同组合,使形成有效地址EA的方法不同,相应有以下5种不同的存储器操作数寻址方式。(1)直接寻址直接寻址是最简单的存储器寻址,这种寻址,操作数的
6、有效地址EA由指令直接给出。它主要用于存取简单变量。汇编格式:(a)[常量](b)变量 或 含有变量的表达式【例3.3】MOVAL,[1000H]MOVVAL,BX对使用直接寻址方式需说明以下几点:●操作数默认存放在数据段中,段寄存器DS在指令格式无须指定。●若操作数在代码段、堆栈段或附加段中,则在指令格式中必须指定相应的段寄存器名。在操作数地址之前使用前缀指出段寄存器名,这种前缀称为段超越前缀。●指令中操作数的EA即可以是一个数字,也可以是一个符号地址。当EA是一个数字时,一定要注意立即寻址方式与直接寻址方式的区别。●直接寻址方式适合于处理存储器的单个存储单元。(2)寄存器间接寻址此寻
7、址方式中,操作数的有效地址EA存放在SI、DI、BX或BP四个寄存器之一中,即:EA=(BX)或(BP)或(SI)或(DI)。汇编格式: [R](其中R是寄存器SI、DI、BX、BP之一)SI、DI、BX、BP在这里叫间址寄存器。若用BX、SI或DI间址寻址时,则操作数默认在数据段中,且用DS内容作为段首址,操作数的物理地址为:(BX)PA=(DS)×16+(SI)(DI)【例3.4】MOVDL,[BX]若指令中使用BP间址寻址时,
此文档下载收益归作者所有