zoukankan      html  css  js  c++  java
  • 转移指令的原理02 零基础入门学习汇编语言44

    第九章:转移指令的原理02

     

    让编程改变世界

    Change the world by program


     

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

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

    指令 “jmp far ptr 标号” 实现的是段间转移,又称为远转移。

    指令 “jmp far ptr 标号” 功能如下:

    (CS)=标号所在段的段地址;

    (IP)=标号所在段中的偏移地址。

    far ptr指明了指令用标号的段地址和偏移地址修改CS和IP。   我们看下面的程序 [codesyntax lang="asm"]
    assume cs:codesg
    
    codesg segment
    start:
        mov ax,0
        mov bx,0
        jmp far ptr  s
        db 256 dup (0)
    s:  add ax,1
        inc ax
    codesg ends
    
    end start
    [/codesyntax]   我们在Debug中将程序9.3翻译成为机器码,看到的结果如图: [caption id="attachment_359" align="aligncenter" width="300"] debug程序[/caption] [caption id="attachment_360" align="aligncenter" width="300"] jmp far ptr s所对应的机器码[/caption] 如图中所示:源程序中的db 256 dup (0),被Debug解释为相应的若干条汇编指令 。   这不是关键,关键是,我们要注意一下jmp far ptr s所对应的机器码:EA 0B 01 BD 0B ,其中包含转移的目的地址。 [caption id="attachment_360" align="aligncenter" width="300"] jmp far ptr s所对应的机器码[/caption]   “0B 01 BD 0B” 是目的地址在指令中的存储顺序,高地址的“BD 0B”是转移的段地址:0BBDH,低地址的“0B 01” 是偏移地址:010BH。 对于“jmp X 标号”格式的指令的深入分析请参看附注3。  

    指令格式:jmp 16位寄存器

    功能:IP =(16位寄存器) 这种指令我们在前面的课程(参见2.11节)中已经讲过,这里就不再详述。  

    转移地址在内存中的jmp指令有两种格式:

      (1)jmp word ptr 内存单元地址(段内转移) 功能:从内存单元地址处开始存放着一个字,是转移的目的偏移地址。 内存单元地址可用寻址方式的任一格式给出。 示例:

    mov ax,0123H

    mov ds:[0],ax

    jmp word ptr ds:[0]

    执行后,(IP)=0123H

    mov ax,0123H

    mov [bx],ax

    jmp word ptr [bx]

    执行后,(IP)=0123H

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

    (CS)=(内存单元地址+2)

    (IP)=(内存单元地址)

    内存单元地址可用寻址方式的任一格式给出。 示例:

    mov ax,0123H

    mov ds:[0],ax

    mov word ptr ds:[2],0

    jmp dword ptr ds:[0]

    执行后,

    (CS)=0

    (IP)=0123H

    CS:IP 指向 0000:0123。

    mov ax,0123H

    mov [bx],ax

    mov word ptr [bx+2],0

    jmp dword ptr [bx]

    执行后,

    (CS)=0

    (IP)=0123H

    CS:IP 指向 0000:0123。

     

    检测点9.1

    [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LBQJFSRDZEDF']视频下载[/Downlink]
  • 相关阅读:
    java实现拼出漂亮的表格
    java实现金额组合
    java实现金额组合
    java实现金额组合
    java实现金额组合
    java实现Playfair 密码
    Mblog 部署手册
    配置Tomcat apr运行模式
    Duboo入门示例(Idea开发环境)
    Font-Awesome最新版完整使用教程
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3847010.html
Copyright © 2011-2022 走看看