转移指令的原理04 – 零基础入门学习汇编语言46

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

让编程改变世界

Change the world by program

根据位移进行转移的意义

前面我们讲到:

jmp short 标号

jmp near ptr 标号

jcxz 标号

loop 标号

等几种汇编指令,它们对 IP的修改是根据转移目的地址和转移起始地址之间的位移来进行的。

在它们对应的机器码中不包含转移的目的地址,而包含的是到目的地址的位移距离。

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

例如:

宽客网,量化投资,宽客俱乐部

根据位移进行转移的意义

这段程序装在内存中的不同位置都可正确执行,因为 loop s 在执行时只涉及到 s的位移( – 4,前移 4个字节,补码表示为FCH),而不是s的地址。

如果loop s的机器码中包含的是s的地址,则就对程序段在内存中的偏移地址有了严格的限制。

因为机器码中包含的是 s 的地址,如果 s 处的指令不在目的地址处,程序的执行就会出错。

而loop s的机器码中包含的是转移的位移,就不存在这个问题了。

因为,无论 s处的指令的实际地址是多少,loop指令的转移位移是不变的。

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

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

注意:

我们在第2章中讲到的形如“jmp 2000:0100”的转移指令,是在 Debug 中使用的汇编指令,汇编编译器并不认识。

如果在源程序中使用,编译时也会报错。

实验八

分析一个奇怪的程序!(利用转移原理“玩”系统一下~)

实验九

根据材料编程(第一次——黑底白字下终于有了色彩!)

视频下载
技术, IT技术, 汇编语言, 视频教程



                                                    风险提示及免责条款

市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部