关于转移指令和调用指令的寻址

下面以转移指令为对象来分析各种转移地址的寻址方式
(1)段内直接转移方式
用这种方式时,指令中给出一个相对位移量,这样,专一地址为EIP的当前内容再加上一个8位、16位或32位的位移量。因为位移量是相对于EIP来计算的,所以段内直接转移寻址也称为相对寻址。
既可用在条件转移指令中,也可用在无条件转移指令中,同样也可在调用指令中。

(2)段内间接转移方式
有效地址总是在寄存器中或在内存单元中,而对内存单元则用前面所述的对数据的各种寻址方式进行访问
只适用于无条件转移指令。

(3)段间直接转移方式
指令中要给出转移地址的段码(段地址或段选择子)和偏移量。产生转移时,将段码装入CS中,将偏移量装入EIP。可提供一种使程序从一个代码段转移到另一个代码段的方法。
只适用于无条件转移指令。

(4)段间间接寻址方式
EIP和CS用内存中内容来装入。
只适用于无条件转移。

子程序调用和返回指令CALL/RET

Pentium指令系统中提供了子程序的4中调用指令

作用:
1.段内直接调用,调用地址在指令中给出
2.段内间接调用,调用地址由EAX给出
3.段间直接调用,调用的段码和偏移量都在指令中给出
4.段间间接调用,调用地址在DI所指地址开始的4单元

无条件转移指令和条件转移指令JMP/J*(其中,*代表各种条件)

(1)无条件转移指令JMP
无条件转移指令可转到内存中任何程序段。转移地址可在指令中给出,也可在寄存器中给出,或在存储器中给出。
和调用指令类似,无条件转移指令也可有四种形式

(2)条件转移指令J*
这类指令以某一个标志位的值或某个比较结果作为判断是否进行转移的依据,如果满足指令中所要求的的条件,则产生转移,否则往下执行排在条件转移指令后面的一条指令。
特点:
1.所有的条件转移指令都是相对转移形式的,即只能在以本指令所指的EIP或IP加上8位、16位或32位的位移量范围内转移。
2.条件转移指令中,有相当一部分指令是在比较完两个数的大小以后,根据比较结果决定是否转移,对于具体的二进制数,看作有符号数和无符号数结果不同。
无符号数:用高于或低于的概念来作为判断依据
有符号数:用大于或小于的概念来作为判断依据

根据两个数的比较结果来决定转移

作用:
有符号
1.结果为0,转移
2.结果不为0,转移
3.大于,即不小于且不等于,转移
4.不大于,即小于等于,转移
5.小于,即不大于且不等于,转移
6.不小于,即大于或等于,转移
无符号
7.低于,即不高于且不等于,转移
8.不低于,即高于或等于,转移
9.高于,即不低于且不等于,转移
10.不高于,即低于或等于,转移


作用:
1.符号标志SF为1,转移
2.符号标志SF不为1,转移
3.溢出标志OF为1,则转移
4.溢出标志OF为0,则转移
5.奇/偶标志PF为1,则转移
6.奇/偶标志PF为0,则转移

专门根据CX或ECX中的值来决定是否转移

作用:
1.CX为0,则转移到LABLE处,否则执行下一条指令
2.ECX为0,则转移到ABC处,否则执行下一条指令

实现功能:在2000H开始的区域中,存放着14H个数据,要求找出其中最大的一个数,并存到2000H单元。

作用:
1.BX指向2000H
2.将BX所指单元的1个字节放入AL中
3.将14H放入CX中
4.BX指向下一个数
5.比较AL和BX指向的数的大小
6.如果大于等于,转移到P2
7.小于的话将BX指向的数放入AL中
8.CX减1
9.如果CX不等于0的话,转移到P1
10.CX等于0时,BX重新指向2000H
11.AL中的数放到2000H

循环控制指令LOOP、LOOPZ/LOOPE和LOOPNZ/LOOPNE

(一)计数循环指令LOOP
执行LOOP指令时,先将ECX或CX的内容减1,再判断ECX或CX中是否为0,如不为0,则继续循环,如为0,则退出循环,执行下一条指令。

作用:
1.设置循环次数
2.CX减1,如不为0,则循环

(二)相等则循环指令LOOPZ/LOOPE
LOOPZ/LOOPE是同一条指令的两个不同助记符。执行时,先将ECX(CX)减1,再判断是否为0,并判断ZF是否为1,如果ZF=0,或ECX(CX)为0,则退出循环,只有ZF=1,且ECX(CX)不为0的情况下才继续循环。
注意:ECX(CX)中的值为0时,并不会影响标志位ZF,这就是说,ZF是否为0,是由前面其他指令通常是比较指令的执行决定的。
程序功能:在40个元素构成的数组中寻找第一个非0元素

作用:
1.将28H放入CX中
2.数组序号从0开始,第0个元素的地址先设为FFH
3.当前数组元素序号放在SI中
4.判断此元素是否为0
5.当ZF=1且CX≠0时再循环,即当前元素为0且为找完时,则再寻找
6.当找到一个非0元素时,转移到OKK
7.如未找到任何一个非0元素,则转显示程序DISPLAY1
8.如找到非0元素,则转显示程序DISPLAY2

(三)不等则循环指令LOOPNZ/LOOPNE
当执行LOOPNZ/LOOPNE指令时,先使ECX(CX)减1,再判断ECX是否为0,且判断ZF的值。如果ECX(CX)不为0且ZF=0,则继续循环。

Pentium的指令系统(5)——调用/转移/循环控制/中断指令相关推荐

  1. 信捷plc c 语言全局变量,三菱PLC编程中,跳转指令CJ、子程序调用CALL和中断指令有什么区别?...

    满意答案 0519gao 2013.10.06 采纳率:46%    等级:12 已帮助:11303人 子程序帮助您对程序进行分块.主程序中使用的指令决定具体子程序的执行状况.当主程序调用子程序并执行 ...

  2. Pentium的指令系统(4)——串操作指令

    通过加重复前缀,串操作指令可以实现对一串数据的操作.一条带重复前缀的串操作指令的执行过程往往相当于执行一个循环程序.在每次重复之后,都会自动修改地址指针ESI和EDI,如果在执行串操作指令的过程中,有 ...

  3. 嵌入式:ARM异常中断指令SWI、BKPT、CLZ详解

    文章目录 SWI 二进制编码 汇编格式 断点指令(BKPT-仅用于v5T体系) 二进制编码 汇编格式 前导0计数 二进制编码 汇编格式 异常中断指令可以分为一下两种: 软件中断指令(SWI) 断点指令 ...

  4. 计算机的指令系统、控制器、运算器以及指令执行的过程

    目录 一.计算机的指令系统 1.机器指令的形式 2.机器指令的操作形式: 3.机器指令的寻址方式: 二.计算机的控制器 三.计算机的运算器 四.计算机指令执行的过程 一.计算机的指令系统 1.机器指令 ...

  5. 中断的分类,中断指令,中断类型码,中断向量表,中断优先级

    目录 PC机的中断系统 中断的分类 内部中断(软件中断) 故障 陷阱 异常终止 中断指令 指令类型中断指令 INT N 溢出中断指令  INTO 中断返回指令  IRET 外部中断(硬件中断) 非屏蔽 ...

  6. pci中断号分配_西门子S7-200 SMART中断及中断指令概述

    中断就是中止当前正在运行的程序,去执行为立刻响应的信号而编写的中断服务程序,执行完毕后再返回原来中止的程序并继续执行.西门子S7-200 SMART CPU最多支持38个中断事件,其中8个为预留.为了 ...

  7. 0中断优先级_西门子S7-200 SMART中断及中断指令概述

    中断就是中止当前正在运行的程序,去执行为立刻响应的信号而编写的中断服务程序,执行完毕后再返回原来中止的程序并继续执行.西门子S7-200 SMART CPU最多支持38个中断事件,其中8个为预留.为了 ...

  8. php exec执行多条命令,小技巧:在PHP中调用多条shell指令

    原标题:小技巧:在PHP中调用多条shell指令 有时候,在持续集成的过程中,需要通过网页在目标服务器上执行shell指令,今天就列举一个实例进行讲解. 比如,我们需要能通过网页将SVN update ...

  9. 西门子200PLC中断指令

    文章目录 目录 文章目录 前言 一.中断 1.概念 二.中断的分类 1.输入输出中断 2.时基中断 3.通信中断 三.中断指令 1.指令 2.指令的使用 四.练习题 1.循环中断,每200ms,VB1 ...

最新文章

  1. AI 实验--v_JULY_v
  2. mysql编译安装 rpm安装_Linux常用工具小结:(2) Mysql的rpm安装和编译安装
  3. 三个数从小到大排序—南阳acm
  4. SAP MM Consignment 寄售库存
  5. Oracle 练习题P256
  6. android背景不填充,(Android Studio)应用程序背景图像不填充屏幕
  7. 大学计算机课程设计日历,课程设计题三:日历和数字钟
  8. js f12就关闭标签、禁止右击,感兴趣的可以看一下
  9. Recoil 是 React 的状态管理库
  10. android jni示例_Android动画示例
  11. windows xp sp3 下载地址
  12. 神经网络二分类输出概率,神经网络二分类预测
  13. Mysql 事务锁等待时间超时
  14. DSP内核结构中的 D L S M
  15. 如何用漏斗模型进行数据分析
  16. python 老师_一个法语老师的python 入门之路
  17. python批量将PPT导出成图片集
  18. 微信浏览器ua,手机微信UA 2022年1月最近版本,最新微信纯净ua
  19. oracle 没有锁 ora00054,ORA-00054锁等待问题
  20. 如何优雅的在 Word 中插入代码,PlanetB 的完美替代方案

热门文章

  1. Kafka 消息序列化反序列化
  2. pstack 安装linux_pstack命令
  3. Destoon源数据库配置文件在哪_数据库监控软件Lepus安装部署详解
  4. 字符串匹配之KMP算法
  5. 今天闲着没事弄个几个表情包
  6. 2014-10-22 NOIP模拟赛
  7. zoj3494BCD Code(ac自动机+数位dp)
  8. 解决IE8上传文件时javascript取文件的本地路径的问题C:\fakepath\..
  9. Android布局控件之LinearLayout详解
  10. mysql插入删除_mysql插入、更新与删除