zoukankan      html  css  js  c++  java
  • 王爽《汇编语言》第三版 第九章 转移指令的原理

    引言

      8086CPU的转移指令分为以下几类:
        无条件转移指令 (如:jmp)
        条件转移指令
        循环指令(如:loop)
        过程
        中断

     

    9.1 操作符offset

      操作符offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址。


    9.2 jmp指令

      jmp为无条件转移,可以只修改IP,也可以同时修改CS和IP。


    9.3 依据位移进行转移的jmp指令

      jmp short 标号(转到标号处执行指令)这种格式的 jmp 指令实现的是段内短转移,它对IP的修改范围为 -128~127,也就是说,它向前转移时最多越过128个字节,向后转移最多越过127个字节。

      CPU 在执行EB 03(EB为jmp short的机器码)的时候,并不知道转移目的地址。

      

      jmp short s指令的读取和执行过程:
      1.(CS)=0BBDH,(IP)=0006,CS:IP指向EB 03(jmp short s的机器码);
      2.读取指令码EB 03进入指令缓冲器;
      3.(IP)=(IP)+所读取指令的长度=(IP)+2=0008,CS:IP指向add ax,1;
      4.CPU指行指令缓冲器中的指令EB 03;
      5.指令EB 03执行后,(IP)=000BH,CS:IP指向inc ax。

      指令“jmp near ptr 标号”的说明:
      1.16位位移=“标号”处的地址-jmp指令后的第一个字节的地址;
      2.near ptr指明此处的位移为16位位移,进行的是段内近转移;
      3.16位位移的范围为-32769~32767,用补码表示;
      4.16位位移由编译程序在编译时算出。


    9.4 转移的目的地址在指令中的jmp指令

      jmp short(near)指令,其对应的机器码中并没有转移的目的地址,而是相对于当前IP的转移位移。

      指令 “jmp far ptr 标号” 实现的是段间转移,又称为远转移:
      1.(CS)=标号所在段的段地址;
      2.(IP)=标号所在段中的偏移地址。
      3.far ptr指明了指令用标号的段地址和偏移地址修改CS和IP。

      


    9.5 转移地址在寄存器中的jmp指令

      jmp 16位寄存器功能:IP =(16位寄存器)。


    9.6 转移地址在内存中的jmp指令

      jmp dword ptr 内存单元地址(段间转移)功能:从内存单元地址处开始存放着两个字,高地址处的字是转移的目的段地址,低地址处是转移的目的偏移地址。


    9.7 jcxz指令

      jcxz指令为有条件转移指令,所有的有条件转移指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址。对IP的修改范围都为-128~127。

      jcxz 标号 指令操作:当(cx)=0时,(IP)=(IP)+8位位移)。

      我们从 jcxz的功能中可以看出,指令“jcxz 标号”的功能相当于:if((cx)==0) jmp  short 标号;


    9.8 loop指令


    9.9 根据位移进行转移的意义

      jmp short 标号、jmp near ptr 标号、jcxz 标号、loop 标号等几种汇编指令,它们对 IP的修改是根据转移目的地址和转移起始地址之间的位移来进行的。不包含转移的目的地址,而包含的是到目的地址的位移距离。方便了程序段在内存中的浮动装配。

      
    9.10 编译器对转移位移超界的检测

      根据位移进行转移的指令,它们的转移范围受到转移位移的限制,如果在源程序中出现了转移范围超界的问题,在编译的时候,编译器将报错。

    参考资料:《小甲鱼汇编零基础入门》

     

         《汇编语言》第三版

  • 相关阅读:
    HTML--1标签表格
    HTML--4格式布局
    HTML--3css样式表
    快速制作网页的方法
    表单
    表单练习——邮箱注册
    斐波那契数列
    0125 多线程 继承Thread 练习
    Hash(哈希)
    [COI2007] [luogu P1823] Patrik 音乐会的等待 解题报告 (单调栈)
  • 原文地址:https://www.cnblogs.com/mubu/p/6360061.html
Copyright © 2011-2022 走看看