8086汇编指令- jmpi
<p style="text-indent: 2em;">在Linux 0.00的boot.s中,为了改变CS的值,操作的方法如下所示:<br/></p><pre class="brush:ps;toolbar:false PrismJs">entry start
start:
jmpi go, #BOOTSEG
go: mov ax, cs</pre><p style="text-indent: 2em;">那么可以通过mov指令直接修改CS的内容吗,即如下:<br/></p><pre class="brush:ps;toolbar:false PrismJs">mov ax, #0x7c0
mov cs, ax</pre><p style="text-indent: 2em;">答案当然是不可以的,CS和IP是8086 CPU中2个最关键的寄存器。它们指示了要读取指令的地址。大部分8086 CPU寄存器的值,都可以使用mov指令来改变,但CS、IP中的值不能用mov指令来修改。能够改变CS、IP寄存器内容的指令称为转移指令。一个最简单的可以修改它们的指令,就是上面用的 jmp 指令。<br/></p><pre class="brush:ps;toolbar:false PrismJs">jmpi 0, 0x9000h</pre><p style="text-indent: 2em;">表示间接跳转(相当于跳到另一个段去开始执行), 即程序跳到9000:0 去继续执行了。<br/></p>
暂无评论,要不要来个沙发
发表评论
JLink V9掉固件修复(灯不亮) 3Zephyr笔记2 - 在STM32F429上运行HelloWorld 2计算NandFlash要传入的行地址和列地址 1Linux MMC子系统 - 6.eMMC 5.1工作模式-设备识别模式 0Linux MMC子系统 - 5.eMMC 5.1工作模式-引导模式 0Linux MMC子系统 - 4.eMMC 5.1常用命令说明(2) 0
标签云
Linux嵌入式实用技巧ARM内核学习问题集合CC++编程语言阅读笔记汇编Linux内核完全注释Windows驱动开发计算机基础ARM11ARMv7-ASTM32IDESublimeLinux内核学习eMMCMMC子系统Ubuntu操作系统OfficeVMWareAPUEgccRTOS中断漫游世界随笔感悟开发工具软件应用编程VsCodearmccarmclang编译器ZephyrSPIJLink网卡驱动安装各种芯片库函数NFSμCOS内核sambaFlashUnix命令与脚本输入法Linux内核设计与实现gitRIFFWAVJATGFTPar8161安装centos有线上网μCGUI字库工程建立右键菜单网络文件系统Firefox百度NTFS文件系统CodeBlocksCentOS数据结构算法PhotoShop51KeilQTUltraEditscanfglibc宏定义UIDGID优先级娱乐天地SourceInsight磁盘扇区总线I2CPDFBComparePythonI2SFPUMakefileSWDCPUARP软件推荐FileZilla