修改CS、IP的指令

在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。CPU从何处执行指令是由CS、IP中的内容决定的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。

我们如何改变CS、IP的值呢?显然,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。

若想仅修改IP的内容,可用形如"jmp 某一合法寄存器"的指令完成,如

jmp ax,指令执行前:ax=1000H,CS=2000H,IP=0003H指令执行后:ax=1000H,CS=2000H,IP=1000Hjmp bx,指令执行前:bx=0B16H,CS=2000H,IP=0003H指令执行后:bx=0B16H,CS=2000H,IP=0B16H

"jmp 某一合法寄存器"指令的功能为:用寄存器中的值修改IP。

jmp ax,在含义上好似:mov IP,ax。

注意,我们在适当的时候,会用已知的汇编指令的语法来描述新学的汇编指令的功能。采用一种"用汇编解释汇编"的方法来使读者更好地理解汇编指令的功 能,这样做有助于读者进行知识的相互融会。要强调的是,我们是用"已知的汇编指令的语法"进行描述,并不是用"已知的汇编指令"来描述,比如,我们用 mov IP,ax来描述jmp ax,并不是说真有mov IP,ax这样的指令,而是用mov指令的语法来说明jmp指令的功能。我们可以用同样的方法描述jmp 3:01B6的功能:jmp 3:01B6 在含义上好似mov CS,3  mov IP,01B6。

内存中存放的机器码和对应的汇编指令情况如图2.27所示,设CPU初始状态:CS=2000H,IP=0000H,请写出指令执行序列。思考后看分析。

 
图2.27  内存中存放的机器码和对应的汇编指令

分析:

CPU对图2.27中的指令的执行过程如下。

(1) 当前CS=2000H,IP=0000H,则CPU从内存2000H×16+0=20000H处读取指令,读入的指令是:B8 22 66(mov ax,6622H),读入后IP=IP+3=0003H;

(2) 指令执行后,CS=2000H,IP=0003H,则CPU从内存2000H×16+0003H =20003H处读取指令,读入的指令是:EA 03 00 00 10(jmp 1000:0003),读入后IP=IP+5=0008H;

(3) 指令执行后,CS=1000H,IP=0003H,则CPU从内存1000H×16+0003H =10003H处读取指令,读入的指令是:B8 00 00(mov ax,0000),读入后IP=IP+3=0006H;

(4) 指令执行后,CS=1000H,IP=0006H,则CPU从内存1000H×16+0006H =10006H处读取指令,读入的指令是:8B D8(mov bx,ax),读入后IP=IP+2=0008H;

(5) 指令执行后,CS=1000H,IP=0008H,则CPU从内存1000H×16+0008H =10008H处读取指令,读入的指令是:FF E3(jmp bx),读入后IP=IP+2=000AH;

(6) 指令执行后,CS=1000H,IP=0000H,CPU从内存10000H处读取指令……

经分析后,可知指令执行序列为:

(1) mov ax,6622H

(2) jmp 1000:3

(3) mov ax,0000

(4) mov bx,ax

(5) jmp bx

(6) mov ax,0123H

(7) 转到第3步执行

修改CS、IP的指令,布布扣,bubuko.com

时间: 2024-08-07 16:46:09

修改CS、IP的指令的相关文章

oracle 10g rac 修改public ip、vip和private ip

oracle 10g rac 修改public ip.vip和private ip [TOC] 1.IP地址规划 Hostname 当前IP 修改后IP Public IP node1 192.168.56.20 192.168.100.20 Public IP node2 192.168.56.21 192.168.100.21 VIP node1-vip 192.168.56.98 192.168.100.98 VIP node2-vip 192.168.56.99 192.168.100.

oracle10g rac 零宕机修改public ip&vip

先修改1节点的 1.修改ocr中public的信息 [[email protected] ~]$ oifcfg delif -global eth0 [[email protected] ~]$ oifcfg setif -global eth0/172.168.1.0:public [[email protected] ~]$ oifcfg getif eth0 172.168.1.0 global public eth1 192.168.1.0 global cluster_intercon

Ubuntu-12.04-server 配置修改静态 IP地址

前几天在装Ubuntu 12.04 Server版系统的服务器时IP地址写错了,导致服务器不能上网,今天重新修改了一下IP地址,这里做一个总结. 1.配置静态IP地址 sudo vi /etc/network/interfaces 原有内容默认使用DHCP分配IP,如下 auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp 这里将其修改,将eth0的IP分配方式修改为静态分配(static)后,为其设定IP地址.子网掩码.网关

Linux CentOS修改网卡IP/网关设置

1. 修改对应网卡IP的配置文件 vi /etc/sysconfig/network-scripts/ifcfg-eth0   修改以下内容 DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0BOOTPROTO=static #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别对应静态指定的 ip地址,通过dhcp协议获得的ip地址,通过bootp协议获得的ip地址BROADCAST=192.168.0.255 #对应的子

修改网卡IP信息

修改网卡IP信息的情况有很多种,不过从大体上可以分为两种,一种是临时修改,重启网络服务后修改便会失效:一种是永久修改,重启网络服务后才会生效.一般临时修改应用在临时的动作中,我们通过分类名字也可以知道,是为了应对以下临时问题.而永久修改时为了构建一个稳定的网络环境,也就是所谓的生产环境. 现在我们分类介绍两种修改的简单操作. 一.临时修改 更改前: [[email protected] network-scripts]# ifconfig br0 br0       Link encap:Eth

oracle rac 修改private ip

背景:由于rac环境私有ip网段和java应用冲突,因此需要修改私有ip的网段. 修改前的privateip为10.10.2网段 修改后的privateip为10.10.1网段 节点一的信息: [[email protected] ~]# ifconfig eth1       Link encap:Ethernet  HWaddr  00:0C:29:02:88:AB inet addr:10.10.3.141   Bcast:10.10.3.255   Mask:255.255.255.0

Unix Study--Solaris 10修改主机IP和主机名

Unix Study--Solaris 10修改主机IP和主机名     对于Solaris系统,是通过一系列配置文件(文本)来存储和管理主机ip和主机名信息,通过编辑器修改这些配置文件就可以完成相关的配置. 一.修改主机ip 1.配置hosts文件 [[email protected]:/]# cat /etc/hosts # Internet host table ::1     localhost        127.0.0.1       localhost        192.16

oracle 11g 修改private ip, public ip, vip, scan ip

查看当前系统信息 [[email protected] ~]# crs_stat -t Name           Type           Target    State    Host ------------------------------------------------------------ ora.DATA.dg    ora....up.type ONLINE    ONLINE   node1 ora.FLASH.dg   ora....up.type ONLINE

本地连接图标消失;修改地址IP地址

(1)网络连接中没有本地连接,电脑无法进行拨号.无法上网,右键点击“网上连接”选择“属性”,弹出的“网络连接”文件夹中没有本地连接的图标,类似情况处理起来要相对复杂些了,我们逐一判断故障原因,在想办法解决:1.右键点击“我的电脑”选择“属性”——>弹出的“系统属性”中选择“硬件”选项卡——>点击“设备管理器”——>在弹出的“设备管理器”中查看“网络适配器”前面是否出现感叹号!,或者“网络控制器”前面有个问号?,假如出现问号或感叹号,这说明网卡驱动不正常或根本就没有安装网卡驱动: (2)修