9 转移指令的原理

汇编语言——第9章 转移指令的原理 阅读详情

1、可以修改IP,或同时修改CS和IP的指令统称为转移指令。概括的讲,转移指令就是可以控制CPU执行内存中某处代码的指令,8086CPU的转移行为有两种

(1)只修改IP时,称为段内转移,比如:jmp ax

(2)同时修改CS和IP时,称为段间转移,比如:jmp 1000:0

段内转移又分为

(1)短转移:IP的修改范围为-128~127

(2)近转移:IP的修改范围为-32768~32767

 

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

3、jmp指令

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

jmp指令要给出两种信息

(1)转移的目的地址

(2)转移的距离(段间转移、段内短转移,段内近转移)

 

4、依据位移进行转移的jmp指令

给下面一段程序:

assume cs:codesg

codesg segment

    start:mov ax,0

            mov bx,0

            jmp short s

            add ax,1

         s: inc ax

 

我们需要知道一个概念:CPU在执行jmp指令的时候并不需要转移的目的地址

为什么?

我们先简单回忆一下CPU执行指令的过程

(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;

(2)(IP) = (IP)+ 所读取指令的长度,从而指向下一条指令;

(3)执行指令。转到1,重复这个过程。

按照这个步骤,jmp short s指令的过程如下:

(1)(CS)= 0BBDH,(IP)=0006H,CS:IP指向EB 03(jmp short s 的机器码);

(2)读取指令码EB 03 进入指令缓冲器;

(3)(IP) = (IP)+ 所读取指令的长度 = (IP)+ 2 = 0008H,CS:IP指向add ax,1;

(4)CPU执行指令缓冲器中的指令EB 03;

(5)指令EB 03执行后,(IP) = 000BH,CS:IP指向inc ax

从上面的过程中我们看到,CPU将指令EB 03 读入后,IP指向了下一条指令,接着执行EB 03 如果没有对IP进行修改的话,那么,接下来CPU将执行add ax,1,可是,CPU执行的EB 03却是一条修改IP的转移指令,执行后CS:IP指向inc ax ,CS:0008处的add ax,1没有被执行

在转移指令EB 03中并没有告诉CPU要转移的目的地址,却告诉了CPU要转移的位移

实际上  ,“jmp short 符号”的功能为:(IP) = (IP)+8位位移

“jmp near ptr 标号”的功能为:(IP) = (IP)+16位位移

 

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

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

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

 

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

指令格式:jmp 16位 reg

功能: (IP) = 16位reg

 

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

(1)jmp word ptr 内存单元地址(段内转移)

功能:从内存单元地址处开始存放着一个字,是转移的目的偏移地址

(2)jmp dword ptr 内存单元地址(段间转移) 

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

 

8、jcxz指令

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

操作:当(cx)=0时,(IP)

jcxz的功能相当于C语言中的:

if((cx )== 0)  jmp short 标号;

 

9、loo[指令

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

操作:

(1)(cx)= (cx)-1

(2)如果(cx)!=0,(IP) = (IP)+8位位移。

用C语言的语法表示为

(cx)--;

if((cx) != 0) jmp short 标号;

 

10、根据位移转移的意义

这种设计,方便了程序段在内存中的浮动装配

如果存的时地址,那么当装配地址发生改变时,固定地址后找不到要转移的地址会发生报错,如果依据位移进行转移,就不存在这个问题

 

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

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

 

YOLO26涨点改进 | 全网首发Conv独家改进篇 | CVPR 2025 | 引入GCConv卷积改进YOLO26,含GCC3k2二次创新,能够捕捉更加丰富和复杂的特征信息,助力高效涨点 本文提出了一种基于GCConv模块的YOLO26目标检测模型改进方案。GCConv模块通过多路径结构增强特征学习能力,在训练阶段采用垂直多卷积和水平多路径配置,推理时重参数化为单一3x3卷积,显著提升推理速度而不损失性能。实验表明,该模块在复杂场景和多尺度目标检测任务中表现优异,特别适合资源受限的实时应用场景。文章详细介绍了GCConv的网络结构、核心代码实现、YAML配置文件修改方法,并提供了两种改进方案(GCConv和GCC3k2)的具体配置指导。 阅读详情

相关推荐

Latex里面关于作者名字显示有灰色; 二级+三级标题斜体;

Latex里面关于 作者名字显示有灰色; 二级+三级标题斜体,与正文的距离; 邮箱字体;ORCID字体设置(整理不易,请先关注,Thanks)

m0_61015717的博客 746

【计算机组成原理-chapter4】指令系统

文章目录1. 指令格式1.1 指令的基本概念1.2 指令的分类1.2.1 按地址码数目分类1.2.2 按指令的长度分类1.2.3 按操作码长度分类1.2.4 按操作类型分类1.2.4 小结1.3 扩展操作码1.3.1 扩展操作码的组成1.3.2 扩展操作码的设计1.3.3 扩展操作码与定长操作码的对比2. 指令的寻址方式2.1 指令寻址和数据寻址2.1.1 指令寻址(通过PC)2.1.2 数据寻址2.1.2.1 直接寻址2.1.2.2 间接寻址2.1.2.3 寄存器寻址2.1.2.4 寄存器间接寻址2.1.

渐渐的忘记,赶不上明天(读研ing,2024年毕业) 3424

Hi3559AV100制作ext4文件系统和烧录emmc

1、首先生成所需文件系统,见本博客<Hi3559AV100文件系统制作cramfs>。 2、使用工具生成EXT4文件系统 ./make_ext4fs -s -l 96M rootfs_hi3559av100.ext4 ./rootfs 3、烧录文件系统 mw.b 0x82000000 ff 0x12C00000;tftp 0x82000000 STM_...

阿Sir问道 7033

4-2指令系统-指令的寻址方式

指令寻址(顺序寻址、跳跃寻址)、数据寻址(隐含寻址、立即(数)寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、相对寻址、基址寻址、变址寻址、堆栈寻址)

欢迎来到我的博客 1万+

保姆级教程:用CameraX API快速搞定Android多摄像头切换与预览(附避坑指南)

本文提供了一份详细的CameraX API教程,帮助开发者快速实现Android多摄像头切换与预览功能。通过简化API设计和生命周期感知能力,CameraX大幅降低了开发复杂度,同时解决了多摄像头兼容性、预览优化等常见问题。文章包含完整代码示例和实战避坑指南,特别适合需要高效集成相机功能的Android开发者。

weixin_42699679的博客 166

ChatGPT Windows桌面版:从安全下载到高效配置的全流程指南

WebView封装技术是将网页应用转化为独立桌面程序的核心方法,它通过嵌入浏览器内核实现跨平台功能复用。其原理在于利用Electron或Tauri等框架,将Web内容打包进原生应用外壳,同时注入系统级API调用能力。这项技术的工程价值在于显著提升了Web应用的系统集成度和用户体验,使其能够支持全局快捷键、独立进程和本地数据存储等原生特性。在AI助手深度集成工作流的应用场景中,这种封装模式解决了浏览器多标签页切换繁琐、会话管理不便等痛点。本文以ChatGPT桌面客户端为例,详细解析了基于开源项目的安全下载路径

weixin_30437847的博客 481

《操作系统教程》第5版-名词解释整理

内容整理自:高等教育出版社——《操作系统教程》第5版 第三章 ***1. PCB:英文名称是Process Control Block,意为进程控制块,用来记录各个进程执行时的情况。 2. 程序浮动:程序可以随机地从主存储器的一个区域移动到另一个区域,程序被移动后,扔丝毫不影响它的执行。这种技术称为程序浮动。 ***3. 进程:把一个程序在一个数据集上的一次执行称为一个...

AlphaCat的博客 4419

从外包到转正:一个华为OD亲历者的真实工作体验与避坑指南

本文分享了一位华为OD员工从外包到转正的真实经历与实用建议。通过详细解析华为OD的日常工作、转正核心指标、机试备考技巧及职场突围策略,为读者提供了一份全面的避坑指南。特别针对机试E卷的高频考点和刷题方法,给出了具体的数据分析和实战经验。

weixin_33686714的博客 692

转移指令的原理

可以修改IP,或者同时修改cs和ip的指令统称为转移指令。 8086cpu的转移行为有以下几类: 只修改ip,称为段内转移,如jmp ax 同时修改cs和ip,称为段间转移,如jmp 1000:0 根据转移指令对于ip的修改范围不同,所以段内转移又分为:短转移和近转移 短转移IP的修改返回为-128~127 近转移IP的修改范围为-32768~32767 ...

weixin_43464294的博客 517

三菱FX3U PLC红绿灯ST编程实战:从基础逻辑到急停功能完整实现

本文以十字路口红绿灯控制为例,详细讲解了三菱FX3U PLC使用ST编程的完整实战过程。内容涵盖从基础时序逻辑、状态机设计,到急停功能、黄灯闪烁、昼夜模式切换等高级功能的实现,并提供了代码优化与调试技巧,帮助工程师掌握结构化文本在工业控制中的清晰、结构化应用。

weixin_29070861的博客 533

《QGIS快速入门与应用基础》151:批量属性值赋值(字段计算器)

本文介绍了QGIS中字段计算器的批量属性值赋值方法,重点讲解了简单赋值(统一值和递增序列)的操作步骤与表达式应用。文章首先强调数据备份、字段类型确认等必要前提,随后详细解析字段计算器的界面功能分区和打开方式。通过具体场景示例,展示了如何为图层统一赋值固定值或生成连续编号序列,并提供了文本、数字、日期等不同字段类型的表达式模板。文中特别提醒新手优先创建新字段而非直接更新现有字段,以避免数据丢失风险,同时推荐使用$id和rownum()函数实现基础序列生成。该教程适合GIS初学者快速掌握批量属性编辑的核心技能。

LuckyHanMo的博客 486

浅谈 exists 和 in 的执行原理及使用场景

exists的执行原理:  对外表做loop循环,每次loop循环再对内表(子查询)进行查询,那么因为对内表的查询使用的索引(内表效率高,故可用大表),而外表有多大都需要遍历,不可避免(尽量用小表),故内表大的使用exists,可加快效率;in的执行原理 是把外表和内表做hash连接,先查询内表,再把内表结果与外表匹配,对外表使用索引(外表效率高,可用大表),而内表多大都需要查询,不可避免,故外表...

dzyweer的博客 3183

openclaw通俗入门系列4——智能体工作区

工作区 = 智能体的家,存放它的性格、记忆、技能。默认不是牢笼(可以用沙箱隔离)。建议放到私有 Git 备份,但绝对不要提交密钥!

m0_60605453的博客 462

第9章 转移指令的原理

概括的讲,转移指令就是可以控制CPU执行内存中的某处代码的指令。

yyhshm520的博客 1158

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

第9章转移指令的原理

《汇编语言第三版》王爽著 ------读书笔记 定义 可以修改IP,或同时修改CS和IP的指令统称为转移指令。 概述的讲,转移指令就是可以控制CPU执行内存中某处的指令 段内转移 只修改IP jmp ax 段间转移 同时修改CS和IP时,比如 jmp 1000:0 短转移 IP范围 -128~127 近转移 ip范围 -32768~32767 8086CPU的转移指令分为以下几类(条件不同,原理一致) 无条件转移指令(如: j...

Net Zoom的博客 521

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

第9章 转移指令的原理

9.1  操作符offset 取得标号的偏移地址 例如: 9.2  jmp指令 无条件转移指令 9.3  依据位移进行转移的jmp指令 CPU在执行jmp指令时并不需要转移的目的地址。 “jmp short 标号”指令所对应的机器码中,并不包含转移的目的地址,而包含的是转移的位移。 ①段内短转移

花花的博客 349

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

《汇编语言》王爽 第9章 转移指令的原理 实验8 实验9

《汇编语言》——王爽 实验8、实验9参考答案

2301_79165408的博客 1592

9.转移指令的原理

1.可以修改IP,或同时修改CS和IP的指令统称转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。 2.8086CPU的转移行为有以下几种:   (1)只修改IP时,称为段内转移。例如:jmp ax   (2)同时修改CS和IP时,成为段间转移。例如:jmp 1000:0 3.由于转移指令对IP值修改范围的不同,段内转移又分为:短转移和近转移。   (1)短转移IP...

weixin_34363171的博客 109

第9章 转移指令的原理 笔记

P175 可以修改IP,或同事修改CS和IP的指令统称为转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。         8086CPU的转移行为有以下几类:● 只修改IP时,称为段内转移,比如 jmp ax● 同时修改CS和IP时,称为段间转移,比如 jmp 1000:0         由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移。● 短转移IP的修改范围为-128~127。● 近转移IP的修改范围为-32768~32767。         8086CPU的

canmeng50401的专栏 608

复习-第九章 第9章转移指令的原理

这里写自定义目录标题

qq_42788016的博客 431

【笔记】【汇编语言】第9章 转移指令的原理

9.0 概述 可以修改IP,或同时修改CS:IP的指令统称为转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。 8086CPU的转移行为有以下几类: <> 只修改IP时,称为段内转移指令。如 jmp ax <> 同时修改CS和IP时,称为段间转移指令。如 jmp 1000:0 由于转移指令对IP的修改范围不同,段内转移又分为短转移和...

dengkenglu1416的博客 149

《汇编语言》第9章 -转移指令的原理 实验8与实验9

第9章 转移指令的原理 可以修改ip,或同时修改cs和ip的指令统称为转移指令。(就是可以控制CPU执行内存中某处代码的指令) 段内转移:只修改ip(如:jmp ax) 段间转移:同时修改cs和ip(如jmp 1000:0) 其中,段内转移又分为: 短转移:ip的修改范围是-128-127 近转移:ip的修改范围是-32768-32767 8086的转移指令分类 1.无条件转移指令(如:jmp) ...

Impt_gofly的博客 1840

汇编语言-第9章-转移指令的原理

第9章-转移指令的原理

qq_42788016的博客 197
上一篇: 8 数据处理的两个基本问题
下一篇: 10 CALL和RET指令
fa1lr4in
博客等级 码龄9年 64粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值