网站前期准备工作,淘宝做网站被骗,如何做微信商城网站建设,h5调用小程序api文章目录 前言1. jcxz 指令1.1 什么是jcxz指令1.2 如何操作 2. loop 指令2.1 什么是loop指令2.2 如何操作 3. 根据位移进行转移的意义3.1 为什么#xff1f;3.2 举例说明 4. 编译器对转移位移超界的检测结语 前言 #x1f4cc; 汇编语言是很多相关课程#xff08;如数据结构… 文章目录 前言1. jcxz 指令1.1 什么是jcxz指令1.2 如何操作 2. loop 指令2.1 什么是loop指令2.2 如何操作 3. 根据位移进行转移的意义3.1 为什么3.2 举例说明 4. 编译器对转移位移超界的检测结语 前言 汇编语言是很多相关课程如数据结构、操作系统、微机原理的重要基础。但仅仅从课程的角度出发就太片面了其实学习汇编语言可以深入理解计算机底层工作原理提升代码效率尤其在嵌入式系统和性能优化方面有重要作用。此外它在逆向工程和安全领域不可或缺帮助分析软件运行机制并增强漏洞修复能力。 本专栏的汇编语言学习章节主要是依据王爽老师的《汇编语言》来写的和书中一样为了使学习的过程容易展开我们采用以8086CPU为中央处理器的PC机来进行学习。 1. jcxz 指令
1.1 什么是jcxz指令 jcxz指令为有条件转移指令所有的有条件转移指令都是短转移在对应的机器码中包含转移的位移而不是目的地址。 对IP的修改范围都为-128~127。
指令格式jcxz 标号如果(cx)0则转移到标号处执行。
1.2 如何操作
jcxz 标号指令操作 当(cx)0时(IP)(IP)8位位移 8位位移“标号”处的地址 - jcxz指令后的第一个字节的地址 8位位移的范围为-128~127用补码表示 8位位移由编译程序在编译时算出。 当(cx)0时什么也不做程序向下执行。 我们从 jcxz的功能中可以看出指令“jcxz 标号”的功能相当于 if((cx)0) jmp short 标号 这种用C语言和汇编语言进行的综合描述或许能使你对有条件指令理解得更加清楚。 2. loop 指令
2.1 什么是loop指令 loop指令为循环指令所有的循环指令都是短转移在对应的机器码中包含转移的位移而不是目的地址。 对IP的修改范围都为-128~127。
指令格式loop 标号(cx))(cx)-1如果(cx)≠0转移到标号处执行。
2.2 如何操作
loop 标号指令操作
1(cx)(cx)-1;
2如果(cx)≠0(IP)(IP)8位位移。 8位位移“标号”处的地址-loop指令后的第一个字节的地址 8位位移的范围为-128~127用补码表示 8位位移由编译程序在编译时算出。 当(cx)0什么也不做程序向下执行。 我们从loop的功能中可以看出指令“loop 标号”的功能相当于 (cx)–; if((cx)≠0) jmp short 标号; 3. 根据位移进行转移的意义
3.1 为什么
前面我们讲到
jmp short 标号
jmp near ptr 标号
jcxz 标号
loop 标号等几种汇编指令它们对 IP的修改是根据转移目的地址和转移起始地址之间的位移来进行的。
在它们对应的机器码中不包含转移的目的地址而包含的是到目的地址的位移距离。 这样设计方便了程序段在内存中的浮动装配。 3.2 举例说明
例如 这段程序装在内存中的不同位置都可正确执行因为 loop s 在执行时只涉及到s的位移 - 4前移 4个字节补码表示为FCH而不是s的地址。
如果loop s的机器码中包含的是s的地址则就对程序段在内存中的偏移地址有了严格的限制因为机器码中包含的是 s 的地址如果 s 处的指令不在目的地址处程序的执行就会出错。
而loop s的机器码中包含的是转移的位移就不存在这个问题了因为无论 s 处的指令的实际地址是多少loop指令的转移位移是不变的。
4. 编译器对转移位移超界的检测
注意根据位移进行转移的指令它们的转移范围受到转移位移的限制如果在源程序中出现了转移范围超界的问题在编译的时候编译器将报错。
比如下面的程序将引起编译错误
assume cs:codecode segment
start: jmp short sdb 128 dup(0)s: mov ax,0ffffh
code endsend start报错如下
jmp shorts的转移范围是-128~127IP最多向后移动127 个字节,
我们在前面的文章中讲到的形如“jmp 2000:0100”的转移指令是在 Debug 中使用的汇编指令汇编编译器并不认识。如果在源程序中使用编译时也会报错。
结语
今天的分享到这里就结束啦如果觉得文章还不错的话可以三连支持一下。
也可以点点关注避免以后找不到我哦
Crossoads主页还有很多有趣的文章欢迎小伙伴们前去点评您的支持就是作者前进的动力