欢迎来到天天文库
浏览记录
ID:40489830
大小:471.10 KB
页数:72页
时间:2019-08-03
《控制转移和程序结构》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章控制转移和程序结构微型计算机原理及应用2006年5.1目标地址寻址方式5.2分支程序结构5.3循环程序结构5.4子程序结构5.1目标地址的寻址方式程序代码在代码段;CS:指明代码段在主存中的开始位置、即段基地址;EIP:给出将要执行指令的偏移地址;程序顺序执行,微处理器自动增量EIP;程序控制转移,EIP随之改变;程序转移到另外的代码段,EIP和CS都将改变;控制转移类指令:改变EIP(有时CS),即改变程序执行顺序(实现程序控制转移)的指令;目标地址寻址方式:指明目的地、即目标地址的方法;目标地址=目的地址=转移地址5.1.1转移范围1.
2、段内转移在当前代码段范围内的程序转移;不需更改CS,只改EIP(偏移地址);近转移(Near):16位段是16位近转移NEAR16,32位段是32位近转移NEAR32;短转移(Short):转移范围在127~-128字节;2.段间转移需要更改CS(段地址)和EIP(偏移地址);远转移(Far):16位段是32位远转移FAR16,32位段是48位远转移FAR32;5.1.2目标地址寻址方式1.相对寻址方式提供目标地址相对于当前指令指针EIP的位移量;目标地址(转移后的EIP)=当前EIP+位移量;相对寻址都是段内转移,最常用、最灵活;2.直接寻址方
3、式直接提供目标地址;目标地址(转移后的CS和EIP)=指令操作数;3.间接寻址方式由寄存器或存储单元提供跳转地址;目标地址来自寄存器或存储单元、间接获得;寄存器间接寻址:用寄存器保存目标地址;存储器间接寻址:用存储单元保存目标地址;5.1.3无条件转移指令JMPJMPlabel;程序转向label标号指定的地址;;有段内相对寻址,段间直接寻址;JMPreg16/reg32;程序转向寄存器指定的地址;;为寄存器间接寻址;JMPmem16/mem32;程序转向存储单元指定的地址;;为存储器间接寻址;JMP指令的4种类型1.段内转移、相对寻址标号指明目
4、标地址,指令代码包含位移量;2.段内转移、间接寻址通用寄存器或主存单元包含目标指令的偏移地址;3.段间转移、直接寻址标号包含目标指令的段地址和偏移地址;4.段间转移、间接寻址16位段用双字存储单元包含目标地址;32位段用3字存储单元包含目标地址;MASM会根据存储模式等信息自动识别[例题5-1]无条件转移程序-1;数据段00000000nvardw?;代码段0010EB01jmplabl1;8位位移量001290nop0013B8FF02labl1:movax,typelabl10016E90001jmpnearptrlabl2;16位位移量00
5、1990nop001AB80020Rlabl2:movax,offsetlabl3;001DFFE0jmpax001F90nop0020B8002BRlabl3:movax,offsetlabl40023A30000Rmovnvar,ax0026FF260000Rjmpnvar002A90nop相对短转移相对近转移寄存器间接近转移存储器间接近转移5.2分支程序结构5.2.1条件转移指令JccJcclabel根据指定的条件确定程序是否发生转移;条件满足,发生转移;否则,顺序执行下一条指令;LABEL表示目标地址,采用段内相对寻址方式;16位CPU:
6、字节位移量(-128~+127短转移);32位CPU:多字节位移量(达到32位的全偏移量);条件转移指令不影响标志,但要利用标志;cc表示利用标志判断的条件,16种、两类;单个标志状态作为条件;两数大小关系作为条件;转移条件cc:单个标志状态JZ/JEZF=1JumpifZero/EqualJNZ/JNEZF=0JumpifNotZero/NotEqualJSSF=1JumpifSignJNSSF=0JumpifNotSignJP/JPEPF=1JumpifParity/ParityEvenJNP/JPOPF=0JumpifNotParity/P
7、arityOddJOOF=1JumpifOverflowJNOOF=0JumpifNotOverflowJCCF=1JumpifCarryJNCCF=0JumpifNotCarry转移条件cc:两数大小关系JB/JNAECF=1JumpifBelow/NotAboveorEqualJNB/JAECF=0JumpifNotBelow/AboveorEqualJBE/JNACF=1或ZF=1JumpifBelow/NotAboveJNBE/JACF=0且ZF=0JumpifNotBeloworEqual/AboveJL/JNGESF≠OFJumpif
8、Less/NotGreaterorEqualJNL/JGESF=OFJumpifNotLess/GreaterorEqualJLE/JN
此文档下载收益归作者所有