上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
无条件转移指令分析
作者:未知 申领版权
2010年12月12日 共有 1872 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    

转移指令

8086/8088提供了大量用于控制程序流程的指令,按功能可分成如下四类:
    (1)无条件转移指令和条件转移指令;
    (2)循环指令;
    (3)过程调用和过程返回指令;
    (4)软中断指令和中断返回指令。
    由于程序代码可以分为多个段,所以根据转移时是否重置代码段寄存器CS的内容,它们又可分为段内转移和段间转移两大类。段内转移是指仅重新设置指令指针IP的转移,由于没有重置CS,所以转移后继续执行的指令仍在同一个代码段中。条件转移指令和循环指令只能实现段内转移。段间转移是指不仅重新设置IP,而且重新设置代码段寄存器CS的转移,由于重置CS,所以转移后继续执行的指令在另一段中。软中断指令和中断返回指令总是段间转移。无条件转移指令和过程调用及返回指令既可以是段内转移,也可以是段间转移。段内转移也称为近转移,而段间转移也称为远转移。
    对无条件转移指令和过程调用指令而言,按确定转移目的地址的方式还可分为直接转移和间接转移两种。
    下面介绍无条件转移指令﹑条件转移指令和循环指令。这些指令均不影响标志。
    1.无条件转移指令
    1)无条件段内直接转移指令
    无条件段内直接转移指令的使用格式如下:
    JMP   标号
    这条指令使控制无条件地转移到标号地址处。例如:
    NEXT:  MOV   AX,CX
    ……
    JMP    NEXT       ;转NEXT处
    ……
    JMP    OVER       ;转OVER处
    ……
    OVER:  MOV  AX,1
    
    
    无条件段内直接转移指令对应的机器指令格式如下,由操作码和地址差值构成。
    
    

指令操作码
    
地址差
    

其中的地址差是程序中该无条件转移指令的下一条指令的开始地址到转移目标地址(标号所指定指令的开始地址)的差值,由汇编程序在汇编时计算得出。因此,在执行无条件段内转移指令时,实际的动作是把指令中的地址差加到指令指针IP上,使IP之内容为目标地址,从而达到转移的目的。图2.20是无条件段内转移指令的存储和执行示意图。请注意,指令中的地址差值由汇编程序计算得出。
    段内无条件直接转移指令中的地址差可用一个字节表示,也可用一个字表示。如果地址差值只要用一个字节表示,就称为短转移;如果地址差要用一个字表示,就称为近转移。一个字节表示的地址差的范围是-128至 128,所以,如果以转移指令本身为基准,那么短转移的范围则在-126至 129之间。一个字表示的地址差的范围是0至65535,当IP与地址差之和超过65535时,那么便在段内反饶(即取65536的模),所以,近转移的范围是整个段。
    如果当汇编程序汇编到该转移指令时能够正确地计算出地址差,那么汇编程序就根据地址差的大小,决定使用一个字节表示地址差,还是使用一个字表示地址差。例如,上例中的“JMP  NEXT”指令。如果当汇编程序汇编到该指令时还不能计算出地址差,那么汇编程序就按两字节地址差汇编此转移指令。例如,上例中的“JMP OVER”指令。对于后一种情况,如果程序员在写程序时能估计出一字节就可表示地址差,那么可在标号前加一个汇编程序操作符SHORT,例如:
    JMP  SHORT OVER
    这样汇编程序就按一字节的地址差汇编此转移指令。当实际的地址差无法用一个字节表示时,汇编程序会发出汇编出现错误的提示信息。
    这种利用目标地址与当前转移指令本身地址之间的差值记录转移目标地址的转移方式也称为相对转移。相对转移有利于程序的浮动。
    储存器
    

……
    
78
    
56
    
……
    
 
    
……
    
op
    
34
    
12
    
……
    
MOV AX,1
    
……
    

 
    DS : 1234
    
    
    
    
    原IP=XXXX
    
    
    
    
    新IP=5678
    
    
    图2.20 无条件段内间接转移指令示意图
    2)无条件段内间接转移指令
    无条件段内间接转移指令的格式如下:
    JMP   OPRD
    这条指令使控制无条件地转移到由操作数OPRD的内容给定的目标地址处。操作数OPRD可以是通用寄存器,也可以是字存储单元。例如:
    JMP   CX                    ;CX寄存器的内容送IP
    JMP   WORD  PTR [1234H]    ;字存储单元[1234H]的内容送IP
    图2.21给出了上述指令的存储和执行示意图。其中假设当前数据段偏移1234H处字单元的内容是5678H。
    3) 无条件段间直接转移指令
    无条件段间直接转移指令的使用格式如下:
    JMP  FAR  PTR 标号
    这条指令使控制无条件地转移到标号所对应的地址处。标号前的符号“FAR  PTR”向汇编程序说明这是段间转移。只有当标号具有远属性,且标号处的指令已先被汇编的情况下,才可省去远属性的说明“FAR  PTR”。
    例如:
    JMP  FAR  PTR  EXIT   ;EXIT是定义在另一个代码段中的标号
    无条件段间直接转移指令的机器指令格式如下,由操作码及包括段值和偏移的地址构成。
    

指令操作码
    
目标地址偏移
    
目标地址段值
    

无条件段间直接转移指令的具体动作是把指令中包含的目标地址的段值和偏移分别置入CS和IP。
    这种指令中直接包含转移目标地址的转移方式称为绝对转移。
    4) 无条件段间间接转移指令
    无条件段间间接转移指令的格式如下;
    JMP   OPRD
    这条指令使控制无条件地转移到由操作数OPRD的内容给定的目标地址处。操作数OPRD必须是双字存储单元。例如:
    JMP    DWORD  PTR  [1234H]    ;双字存储单元的低字内容送IP
    ;双字存储单元的高字内容送CS
    

 

相关新闻

运用购买指令成功缔结客户,最具诱惑力的催眠式销售方法
第1篇 计算机的基础知识
SQL优化34条
学习存储过程
大家来看一些不错的sql语句
SQL操作全集(1)
c语言 位运算 解析
全国高校计算机等级考试(广西考区2007)二级C语言试题卷
全国高校计算机等级考试(广西考区)二级C语言试题卷
计算机网络基础知识(15)

您可能对这些感兴趣  

干货分享|10本最受国外孩子喜爱的英文词典——上
从孩子的表现看父母的缺点!请家长对号入座,看看你是哪一类?
20条制作PPT的视觉原则
培训简史:培训者必知的历史轨迹
广田丰管理培训生人才培养调查报告
第4讲 作为上司的职业经理
第3讲 作为同事的职业经理
第2讲 作为下属的职业经理
第1讲 培养经理人的管理素养
酒店前台新员工上岗培训计划

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》