8086汇编指令- jmpi

本文详细介绍了在Linux0.00的启动代码中如何正确地修改代码段寄存器CS的值。文章指出,直接使用MOV指令修改CS寄存器是不可行的,而应使用如JMP这样的转移指令来实现这一目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

By: Ailson Jack
Date: 2018.11.05

个人博客: http://www.only2fire.com/
本文在我博客的地址是:http://www.only2fire.com/archives/85.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。

在Linux 0.00的boot.s中,为了改变CS的值,操作的方法如下所示:

entry start

start:

                   jmpi go, #BOOTSEG

go:             mov ax, cs

         那么可以通过mov指令直接修改CS的内容吗,即如下:

mov ax, #0x7c0

mov cs, ax

         答案当然是不可以的,CS和IP是8086 CPU中2个最关键的寄存器。它们指示了要读取指令的地址。大部分8086 CPU寄存器的值,都可以使用mov指令来改变,但CS、IP中的值不能用mov指令来修改。能够改变CS、IP寄存器内容的指令称为转移指令。一个最简单的可以修改它们的指令,就是上面用的 jmp 指令。

jmpi  0, 0x9000h

表示间接跳转(相当于跳到另一个段去开始执行), 即程序跳到9000:0 去继续执行了。

排版更好的内容见我博客的地址:http://www.only2fire.com/archives/85.html
注:转载请注明出处,谢谢!^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackailson

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值