汇编语言:第9章 转移指令_第1页
汇编语言:第9章 转移指令_第2页
汇编语言:第9章 转移指令_第3页
汇编语言:第9章 转移指令_第4页
汇编语言:第9章 转移指令_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章转移指令转移指令就是可以控制CPU执行指令顺序的指令。8086CPU的转移行为分为:段内转移——只修改IP的值。短转移:IP的变化范围为-128—+127近转移:IP的变化范围为-32768—+32767段间转移——同时修改CS和IP的值。8086CPU的转移指令分为:无条件转移指令条件转移指令循环指令过程中断一、无条件转移指令(JMP)1、段内转移段内转移又可分为下面三种形式:段内直接短转移段内直接近转移段内间接转移2、段间转移段间转移又可分为下面二种形式:段间直接转移段间间接转移

3、应用举例

段内转移指令的转移范围在JMP指令所在的段内,只需将IP的值加上转移目的地的偏移量就可控制指令的转移。只需修改IP的值;转移目的地址是由JMP指令到目的地的偏移量决定的;偏移量为8位或16位的带符号数。(8位偏移量的范围为-128—127;16位的偏移量的范围为-32768—32767,其中负数为向前转移,正数为向后转移)段内直接短转移指令格式:

JMPSHORT标号执行操作:(IP)=(IP)+8位偏移量说明:标号是标号所在行指令的地址,即转移的目的地址。 转移的范围为以JMP指令为中的-128到+127字节内。程序9-1assumecs:codecode segmentstart: movax,0

jmpshorts addax,1s: incaxcode endsend start段内直接近转移指令格式:

JMPNEARPTR标号执行操作:(IP)=(IP)+16位偏移量转移的范围为以JMP指令为中的-32768到+32767字节内。注:上述两种转移指令都可以写作简化格式

JMP标号段内间接转移指令格式:JMPWORDPTROPR JMP寄存器注:OPR为除立即数寻址方式以外的任一种寻址方式。例:JMPCX; (IP)=(CX)JMPWORDPTR[BX]; (IP)=([BX])JMPWORDPTRDS:[0];JMPWORDPTR[BX][SI]

段间转移时,程序将从一个代码段转移到另一个代码段中支执行,转移的目的地址由段地址和偏移地址构成,因此段间转移需要同时修改CS和IP的值。需同时修改CS和IP的值;偏移量由段地址和偏移地址组成。段间直接转移指令格式:

JMPFARPTR标号执行操作:(IP)=标号的段内偏移地址 (CS)=标号所在段的段地址例:

JMPFARPTRS段间间接转移指令格式:

JMPDWORDPTR[]执行操作:用确定的内存单元中的双字的低字修改IP,高字修改CS的值。例:

JMPDWORDPTR[BX] JMPDWORDPTR[BX][DI]注: JMP1000:0020

这种格式只能用于DEBUG中,在源程序中出现时编译器不能编译,会报错。 二、取值运算符OFFSET功能:取得一个标号的偏移地址。举例:

MOVAX,OFFSETS三、条件转移指令JCXZ格式:

JCXZ标号功能:当CX=0时转移到标号处执行。注:所有的条件转移都为段内短转移四、循环指令LOOP功能:当CX≠0时转移到标号处执行。注:所有的循环指令都是段内短转移已知DS=1000H,ES=2000H,SS=3800H,SI=1010H,BX=0200H,BP=0020H,请指出下列指令的源操作数字段是什么寻址方式?源操作数字段的物理地址是多少?1)MOVAL,[1000H]2)MOVAH,SI3)MOVAX,[BP]4)MOVAL,BYTYPTR[BX][SI]5)ADDAX,[BP+10]6)ADDAL,ES:[BX]7)MOVAL,[BX][SI+8]8)MOVAL,ES:[BX+SI]补全下面程序,使该程序在运行中将S处的一条指令复制到S0处。

assume cs:code code segment s: movax,bx movsi,offsets movdi,offsetso

s0: nop nop code ends end s判断下列转移指令的转移方式:Jmpwordptr[bx+8]Jmpfarptrs;(S为标号)JmpbxJmpnearptrsJmpdwordptr[bx]JmpshortptrsJmpwordptr[bx+si]检测点9-11、程序如下:

assumecs:codedatasegment?dataendscodesegmentstart: movax,data movds,ax movbx,0 jmpwordptr[bx+1]codeendsendstart若要使程序中的JMP指令执行后,CS:IP指向程序的第一指令,在data段中应定义哪些数据?2、程序如下:

assumecs:code datasegment dd12345678h dataends codesegment start: movax,data movds,ax movbx,0 mov[bx],

mov[bx+2],

jmpdwordptrds:[0] codeends endstart补全程序,使jmp指令执行后,CS:IP指向程序的第一条指令。3、用DEBUG

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论