资源描述:
《汇编语言程序设计_3_1.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、汇编语言程序设计AssemblyLanguageProgramming第三章80x86指令系统3.1指令格式指令的一般格式操作码说明计算机要执行哪种操作,它是指令中不可缺少的组成部分操作数是指令执行的参与者,即各种操作的对象,为数据及数据所在地址。操作码操作数1操作数2操作码操作数1操作数2【;注释】【标号:】3.1指令格式操作数的形式立即操作数:指令的操作数是立即数(常量),只能是源操作数。寄存器操作数:操作数存放在寄存器中值,指令中使用寄存器名。内存操作数:操作数存放在内存中,指令中给出内存地址,通常为有效地址EA,段地址在某个段寄存器中。3.2寻址方
2、式寻址方式(addressingmode)——是指在指令中用以说明操作数所在地址(位置)的方法对某一个操作数而言808632位CPU的扩展方式3.2.18086寻址方式立即寻址方式寄存器寻址方式内存操作数寻址方式1.立即寻址方式(immediateaddressing)操作数在指令中给出,作为指令机器码的一部分存储MOVAL,34H;机器码:B034MOVAX,0034H;机器码:B83400使用场合:常数,8位和16位。注意:只能用于源操作数2.寄存器寻址方式(registeraddressing)操作数在指定的数据寄存器中MOVAX,BXMOVAL,B
3、H注意:无FS和GSCS/IP不能用作目的操作数:MOVCS/IP,AX(X)3.内存操作数寻址方式直接寻址方式(directaddressing)寄存器间接寻址方式(registerindirect)寄存器相对寻址方式(registerrelative)基址变址寻址方式(basedindexed..)相对基址变址方式(relativebasedindexed..)直接寻址方式(directaddressing)内存操作数的偏移地址由指令直接给出MOVAX,[2000H]MOVWORDPTR[1000H],-1MOVAX,Y注意:隐含的段为数据段DS物理地
4、址=16*(DS)+偏移地址…………1000H1001HAX3412AHAL比较比较1MOVAL,[1000H]AL=34H;MOVAX,[1000H]AX=1234H比较2MOVAX,1000HAX=1000H;MOVAX,[1000H]AX=1234H1234寄存器间接寻址方式(registerindirect)指定某个地址寄存器(SI、DI、BX、BP)的内容作为内存操作数的偏移地址MOVAX,[BX]MOV[BP],AL使用场合:表格、字符串、缓冲区处理注意:段地址规则BX,SI,DI(DS)BP(SS)寄存器相对寻址方式(registerr
5、elative)指令中指定地址寄存器(SI、DI、BX、BP)与一个位移量相加作为内存操作数的偏移地址MOVAX,[SI+2]MOV[BP-6H],AL使用场合:适于表格、字符串、缓冲区的处理;一维数组方式(DATA[DI]=[DATA+DI])偏移地址=(BX)(BP)(SI)(DI)+8位16位位移量基址变址寻址方式(basedindexed..)指定基址寄存器(BX,BP)、变址寄存器(SI,DI)内容相加作为内存操作数的地址。MOV[BX+DI],DXMOVAL,[BP+SI]使用场合:适于数组、字符串、表格的处理,更加灵活注意:必须是一个基址寄存
6、器和一个变址寄存器的组合MOVAX,[BX][BP](X)MOVAX,[SI][DI](X)相对基址变址方式(relativebasedindexed..)指定基址寄存器(BX,BP)、变址寄存器(SI,DI)、位移量之和作为内存操作数的地址MOVAL,[SI+BX+2]MOVAL,2[SI+BX]MOV[BX+DI-16H],DX使用场合:适于二维数组的寻址(Buffer[BX][SI]=[Buffer+BX+SI])偏移地址=(BX)(BP)+(SI)(DI)+8位16位位移量4.段超越隐式段地址——8086/8088指令系统对存储单元的访问,其段地址
7、都是从系统事先约定好的段寄存器中获取;规则为:除串操作指令外,若出现BP(SP),默认在SS中,否则所有的操作都默认在DS中。(显式段地址)段超越——不是按照系统的约定,而是在指令中显式指定某一段寄存器作为存储器操作数的段地址。5.Notice!变量名编译后用偏移地址代替MOVAL,XMOVAL,[0001H]在寄存器相对寻址和相对基址寻址中,位移量可以是常量或变量,若是变量,则为偏移地址。MOVAL,X[BX]MOVAL,[0001H+BX]内存操作数可以有多种写法:[BX+DI+2]2[BX+DI]2[BX][DI]5.Notice!操作数中使用变
8、量的地方可均使用“变量名+(-)整数表达式”的形式。MOVAX,X