资源描述:
《(第11讲)第5章控制转移和程序结构ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章控制转移和程序结构5.1目标地址寻址方式5.2分支程序结构标准流程图符号汇编语言程序的基本结构1.顺序结构2.分支程序结构循环程序结构IP(或EIP)线性增加IP(或EIP)受标志位的影响而跳变IP(或EIP)因计数器CX(或ECX)中的值不为零而循环例.顺序结构程序要求:用查表法将一位十六进制数转换成相应的ASCII码DATASEGMENTTABLEDB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46HHEXDB4ASCIDB?DATAENDSSTACKSEGME
2、NTSTACKDW20HDUP(0)STACKENDSCOSEGSEGMENTASSUMECS:COSEG,DS:DATA,SS:STACKBEING:MOVAX,DATAMOVDS,AXMOVBX,OFFSETTABLEMOVAH,0MOVAL,HEXADDBX,AXMOVAL,[BX]MOVASCI,ALMOVAH,4CHINT21HCOSEGENDSENDBEINGXLAT≡XLAT;AL←[BX+AL]当改变了EIP或CS就改变了程序的执行顺序即实现了程序的控制转移第5章控制转移和程序结构5.1目标地址寻址方式5.1.1转移范
3、围5.1.2寻址方式5.1.3无条件转移指令5.2分支程序结构5.2.1条件转移指令5.2.2单分支结构5.2.3双分支结构5.2.4多分支结构5.3循环程序结构5.3.1循环指令5.3.2计数控制循环5.3.3条件控制循环5.4子程序结构5.4.1子程序指令5.4.2子程序设计5.4.3参数传递5.4.4程序模块5.1目标地址寻址方式5.1.1转移范围5.1.2寻址方式5.1.3无条件转移指令5.1.1程序转移范围段内转移在当前代码段内的转移不改CS,只改EIP近转移(Near)16位段:16位近转移NEAR1632位段:32位近转移NEAR32短转移
4、(Short)转移范围-128~127字节段间转移从当前代码段跳转到另一个代码段改CS和EIP远转移(Far)16位段:32位远转移FAR1632位段:48位远转移FAR325.1.2目标地址寻址方式1.相对寻址方式2.直接寻址方式3.间接寻址方式类似于存储器数据的寻址方式指明目标地址的方法1.相对寻址方式指令代码提供目标地址相对于当前指令指针EIP的位移量目标地址(转移后的EIP)=当前EIP+位移量特点都是段内转移,最常用、最灵活2.直接寻址方式指令代码直接提供目标地址目标地址(转移后的CS和EIP)=指令操作数3.间接寻址方式指令代码给出存放目标地
5、址的寄存器或存储单元分类寄存器间接寻址用寄存器保存目标地址存储器间接寻址用存储单元保存目标地址5.1.3无条件转移指令JMP作用无条件改变程序执行顺序格式段内相对寻址或段间直接寻址JMPlabel;程序转向label标号指定的地址寄存器间接寻址JMPreg16/reg32;程序转向寄存器指定的地址存储器间接寻址JMPmem16/mem32;程序转向存储单元指定的地址JMP指令的4种类型1.段内转移(1)相对寻址标号指明目标地址,指令代码包含位移量(2)间接寻址通用寄存器或主存单元包含目标指令的偏移地址2.段间转移(1)直接寻址标号包含目标指令的段地址和偏
6、移地址(2)间接寻址16位段:用双字存储单元包含目标地址32位段:用3字存储单元包含目标地址1.段内转移——(1)相对寻址段内直接短转移JMPSHORTlable;IP←IP+8位偏移量(有符号)段内直接近转移JMPNEARPTRlable;IP←IP+16位位移量(有符号)操作码EB位移量E9位移量(低)位移量(高)操作码位移量=标号偏移地址—当前IP值(JMP指令的下一条指令的IP值)注意标号、逻辑段名、子程序名也有地址和类型属性例.标号next:addal,01h逻辑段名datasSEGMENTdatasENDS子程序名dpcharprocdpch
7、arendp例1.段内直接短转移JMPSHORTnext操作码EB位移量;next的(IP)←当前(IP)+D8例2.段内直接近转移JMPNEARPTRNEXT设(1)标号NEXT的EA=1000H(2)JMP指令的当前IP为0009H求:位移量=?指令代码E9F70F(代表JMP1000H)1000H-0009H=0FF7HE9位移量(低)位移量(高)操作码1.段内转移——(2)间接寻址寄存器间接寻址JMPreg;IP←reg存储器间接寻址JMPmem;IP←[EA]属于绝对转移例1.设CS=3000H,IP=2400H,BX=3100HJMPBX指令
8、执行后,IP=?例2.设DS=2000H,BX=1000H,[21020H]=3