《汇编语言程序设计》-相伟-电子教案第4章【分支程序设计】

《汇编语言程序设计》-相伟-电子教案第4章【分支程序设计】

ID:35568794

大小:175.50 KB

页数:53页

时间:2019-03-29

《汇编语言程序设计》-相伟-电子教案第4章【分支程序设计】_第1页
《汇编语言程序设计》-相伟-电子教案第4章【分支程序设计】_第2页
《汇编语言程序设计》-相伟-电子教案第4章【分支程序设计】_第3页
《汇编语言程序设计》-相伟-电子教案第4章【分支程序设计】_第4页
《汇编语言程序设计》-相伟-电子教案第4章【分支程序设计】_第5页
资源描述:

《《汇编语言程序设计》-相伟-电子教案第4章【分支程序设计】》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、21世纪高等院校规划教材汇编语言程序设计相伟主编 徐小平李珍香副主编中国水利水电出版社第4章分支程序设计本章主要讲解分支程序设计的基本思想和设计方法。通过本章学习,读者应掌握以下内容:段内寻址与段间寻址无条件转移指令条件转移指令二分支程序设计方法多分支程序设计方法4.1转移地址的寻址方式Intel8086/8088CPU中,程序的执行顺序是由代码段寄存器CS和指令指针IP确定的。CS包含当前指令所在代码段的段地址,IP则是要执行的下一条指令的偏移地址。通常情况下,程序是顺序执行的,即CPU取出指令后,自动形

2、成下一条指令的地址,依指令序列顺序执行。但有时需要改变程序的流程,这就要给出目标指令的段地址(CS)和偏移地址(IP)值,这就是与转移地址有关的寻址方式。与转移地址有关的寻址方式有四种:段内直接寻址、段内间接寻址、段间直接寻址和段间间接寻址。4.1.1段内寻址段内寻址分为段内直接寻址和段内间接寻址两种方式。其转移方式是在当前代码段64KB范围内转移,因此不需要更改段地址CS的值,只要改变偏移地址IP的值即可。1.段内直接寻址指令中直接给出转移地址的偏移量(8位或16位),转移目标与转移指令在同一段内。转移指

3、令执行后,CS值保持不变。转移的有效地址为当前的IP值与指令中指定的偏移量之和。即目标地址=IP(当前值)+偏移量其中偏移量为8位或16位有符号数。若偏移量为正数,向前转移(即高地址方向);若偏移量为负数,则向后转移(即低地址方向)。另外,对8位偏移量,其转移范围为-128~+127,称为短转移;对16位偏移量,其转移范围为-32768~+32767,称为近转移。短转移指令为2字节指令,IP的当前值为转移指令所在的IP值加2。近转移指令为3字节指令,IP的当前值为转移指令所在的IP值加3。例4-1:分析下列

4、指令。JMPSHORTDSP1;短转移指令JMPNEARPTRDSP2;近转移指令假设两条指令存放地址均为1000H:0200H,偏移量DSP1为08H,偏移量DSP2为0012H。短转移指令执行时,当前IP值=0200H+2=0202H。目标地址=IP(当前值)+偏移量=0202H+08H=020AH指令执行后将转向1000H:020AH去执行。近转移指令执行时,当前IP值=0200H+3=0203H。目标地址=IP(当前值)+偏移量=0203H+0012H=0215H指令执行后将转向1000H:0215

5、H去执行。2.段内间接寻址与段内直接寻址方式相同,转移目标与转移指令在同一段内。转移指令执行后,CS值保持不变。与段内直接寻址方式不同的是,转移的有效地址值存放在16位的通用寄存器或连续两个存储单元中。若有效地址在存储单元中,一定要指出存储单元为字型。例4-2:假设(DS)=2000H,(BX)=3000H,(23000H)=2536H,分析下列指令。JMPBX指令执行后,将BX的内容直接赋给IP。所以,(IP)=3000H。JMPWORDPTR[BX]指令执行后,先计算出存储单元地址23000H,再从该单

6、元中取出内容送给IP。所以,(IP)=2536H。4.1.2段间寻址段间寻址分为段间直接寻址和段间间接寻址两种方式。其转移方式是从当前代码段跳转到另一个代码段,因此需要修改CS段地址和IP偏移地址的值。1.段间直接寻址在指令中直接给出了转移目标的段地址和偏移地址。只要用指令中指定的偏移地址代替IP寄存器的内容,用指令中指定的段地址代替段寄存器CS的内容就可以完成从一个段到另一个段的转移操作。段间直接转移通常叫远转移(farjump),指令的操作数必须附加FARPTR操作符。例4-3:执行如下指令JMPFAR

7、PTRDSP假设指令存放地址为1000H:0200H,DSP的有效地址为3620H,段地址 为2000H。则指令执行后,(IP)=3620H,(CS)=2000H。 程序转移到2000H:3620H处继续执行。2.段间间接寻址与段间直接寻址方式相同,转移目标与转移指令不在同一段内,转移指令执行后,CS和IP都发生变化。不同的是转移目标的偏移地址和段地址存储在两个连续的字存储单元中。因此指令中需要用DWORDPTR操作符将存储单元指定为双字单元。指令执行时,根据存储单元的寻址方式计算出存储单元地址,从该存储单

8、元取第一个字传送到IP,取第二个字传送到CS,这样就可以实现段间转移。例4-4:执行如下指令JMPDWORDPTR6[BX]假设:(CS)=1000H,(IP)=0600H,(DS)=2000H,(BX)=1000H,(21006H)=3000H,(21008H)=6000H。则指令执行后,(CS)=6000H,(IP)=3000H。程序转移到6000H:3000H处继续执行。4.2无条件转移指令无条件转移指令J

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。