找回密码
 register

QQ登录

只需一步,快速开始

查看: 12|回复: 0

[汇编语言] [零基础入门学习]·43·转移指令的原理·操作符offset ·jmp指令· 依据位移进行转移的jmp指令

[复制链接]

[汇编语言] [零基础入门学习]·43·转移指令的原理·操作符offset ·jmp指令· 依据位移进行转移的jmp指令

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
Waylee

主题

0

回帖

1万

积分

仙帝

积分
11929
Waylee 2025-1-17 17:57 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

第9章 转移指令的原理

可以修改IP,或同时修改CSIP的指令统称为转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。

8086CPU的转移行为有以下几类。

  • 只修改IP时,称为段内转移,比如:jmp ax
  • 同时修改CSIP时,称为段间转移,比如:jmp 1000:0

由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移。

  • 短转移IP的修改范围-128~127
  • 近转移IP的修改范围-32768~32767

8086CPU的转移指令分为以下几类。

  • 无条件转移指令(如:jmp
  • 条件转移指令
  • 循环指令(如:loop
  • 过程
  • 中断

这些转移指令转移的前提条件不同,但转移的基本原理是相同的。我们在这一章主要通过深入学习无条件转移jmp来理解CPU执行转移指令的基本原理。

9.1 操作符 offset

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

asssume cs:codesg
codesg segment
    start:mov ax,offset start   ;相当于mov ax,0
    s:  mov ax,offset s     ;相当于mov ax,3
codesg ends
end start

在上面的程序中,offset操作符取得了标号start和s的偏移地址0和3,所以指令:
mov ax,offset start相当于 mov ax,0,因为start是代码段中的标号,它所标记的指令是代码段中的第一条指令,偏移地址为0;
mov ax,offset s 相当于 mov ax,3,因为s是代码段中的标号,它所标记的指令是代码段中的第二条指令,第一条指令长度位3个字节,则s的偏移地址为3。

问题 9.1

有如下程序段,添写两条指令,使该程序在运行中将s处的一条指令复制到s0处。

assume cs:codesg
codesg segment
    s:  mov ax,bx       ;mov ax,bx的机器码占两个字节
        mov si,offset s
        mov di,offset s0
        ____________
        ____________
    s0: nop         ;nop的机器码占用一个字节
        nop
codesg ends
end s

思考后看分析。

分析:

  1. s和s0处的指令所在的内存单元的地址是多少?cs:offset s和cs:offset s0。
  2. 将s处的指令复制到s0处,就是将cs:offset s处的数据复制到cs:offset s0处。
  3. 段地址已知在cs中,偏移地址offset s和 offset s0 已经送入si和di中。
    4.要复制的数据有多长?mov ax,bx指令的长度位两个字节,即1个字。

程序如下。

assume cs:codesg
codesg segment
    s:  mov ax,bx       ;mov ax,bx的机器码占两个字节
        mov si,offset s
        mov di,offset s0
        mov ax,cs:[si]
        mov cs:[di],ax
    s0: nop         ;nop的机器码占用一个字节
        nop
codesg ends
end s

9.2 jmp指令

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

jmp指令要给出两种信息:

  1. 转移的目的地址
  2. 转移的距离(段间转移、段内短转移、段内近转移)

不同的给出目的地址的方法,和不同的转移位置,对应有不同格式的jmp指令。下面的几节内容中,我们以给出目的地址的不同方法为主线,讲解jmp指令的主要应用格式和CPU执行转移指令的基本原因。

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

您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-1-18 13:08 , Processed in 0.110142 second(s), 6 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表