在 CPU 中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对 CPU 的控制。CPU 从何处执行指令是由 CS、IP 中的内容决定的,程序员可以通过改变 CS、IP 中的内容来控制 CPU 执行目标指令。
我们如何改变 CS、I 的值呢?显然,8086CPU 必须提供相应的指令。我们如何修改AX 中的值? 可以用 mov 指令,如 mov ax,123 将 ax 中的值设为 123,显然,我们也可以用同样的方法设置其他寄存器的值,如 mov bx,123,mov cx,123,mov dx,123 等。其实,8086CPU 大部分寄存器的值,都可以用 mov 指今来改变,mov 指令被称为传送指令。
但是,mov 指令不能用于设置 CS、IP 的值,原因很简单,因为 8086CPU 没有提供这样的功能。8086CPU 为 CS、IP 提供了另外的指令来改变它们的值。能够改变 CS、IP 的内容的指令被统称为转移指令(我们以后会深入研究)。我们现在介绍一个最简单的可以修改 CS、IP 的指令: jmp 指令。
若想同时修改 CS、IP 的内容,可用形如“jmp 段地址:偏移地址”的指令完成,
如jmp 2AE3:3,执行后: CS-2AE3H,IP-0003H,CPU 将从 2AE33H 处读取指令。
jmp 3:0B16,执行后: CS=0003H,IP-0B16H,CPU 将从 00B46H 处读取指令。
“jmp 段地址:偏移地址”指令的功能为: 用指令中给出的段地址修改 CS,偏移地址修改 IP。 文章来源:https://www.toymoban.com/news/detail-473354.html
若想仅修改IP的内容,可用形如“jmp 某一合法寄存器”的指令完成,如文章来源地址https://www.toymoban.com/news/detail-473354.html
到了这里,关于修改 CS、IP 的指令-汇编复习(6)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!