精华内容
下载资源
问答
  • 今天遇见一道题,只有一点不明白,就是为什么最后IP等于0000H他跟AX的关系是什么? 下面的3条指令执行后,cpu几次修改IP?都是在什么时候?最后IP中的值是多少? mov ax,bx sub ax,ax jmp ax 答:一共...
  • 物理地址=段地址X16(十进制)+偏移地址 == 物理地址=段地址X10(十六进制)+偏移地址 Cs是代码段寄存器,IP是指令指针寄存器 段地址 x 16 等于 左移四位 一个数据(16进制)左移1位,相当于乘以16。 一个数据 (十...

    总结:

    物理地址=段地址X16(十进制)+偏移地址 == 物理地址=段地址X10(十六进制)+偏移地址


    Cs是代码段寄存器,IP是指令指针寄存器


    在这里插入图片描述
    段地址 x 16 等于 左移四位
    一个数据(16进制)左移1位,相当于乘以16。
    一个数据 (十进制)左移1位,相当于乘以10。
    一个数据(N进制) 左移1位 ,相当于乘以N。
    在这里插入图片描述
    段地址X16+偏移地址=物理地址。 含义:Cpu在访问内存时,用一个基础地址(段地址X16)+偏移地址相加 = 给出内存单元的物理地址。
    举例:
    假设: 该段的起始地址(基础地址)是 10000H,则他的段地址是1000H

    问题来了:公式是 基础地址=段地址X16 . 但结果为什么会这样呢!
    答案: 16 是10进制。 16=10(十六进制)。地址都是用16进制表示,所以将16(10进制)转化为 10(十六进制)。 得
    基础地址=段地址X10(十六进制)
    物理地址=段地址X16(十进制)+偏移地址 == 物理地址=段地址X10(十六进制)+偏移地址




    Cs与IP
    Cs是代码段寄存器,IP是指令指针寄存器
    在8086CPU中,设,Cs中的内容是M,IP内容是N,则从内存 M x 16+N单元开始,读取一条指令并执行
    在这里插入图片描述
    右边内存 20000H - 20009H 单元存放着可执行的机器码。右边是汇编代码
    举例:前三个(第一个括号括起来的部分),内容是B8 23 01 长度是 3byte 对应的汇编代码 mov ax,0123H

    图的执行逻辑:

    1.Cs IP中的内容送到地址加法器(段地址X16+偏移地址=物理地址)
    2.地址加法器将物理地址送入到输入输出控制电路
    3.输入输出控制电路将物理地址20000H送上地址总线
    4.从20000H开始存放的机器指令 B8 23 01通过数据总线送入Cpu
    5.输入输出控制电路将机器指令B8 23 01送入指令缓冲器
    6.读取一条指令后,IP中的值自动增加,Cpu读取下一条指令。因为当前指令的长度是3个字节,所以IP中的值加3。此时,Cs:Ip指向内存单元2000:0003
    综述:
    Cs:Ip指向内存单元读取指令,读取的指令进入缓冲器,
    Ip=Ip+指令的长度,从而指向下一条
    执行指令,然后重复

    展开全文
  • IP地址IP地址被用来当做Internet上的电脑的身份编号。大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信。我们可以把“个人电脑”比作“一部电话”,那么“IP地址”就相当于“电话号码”,而Internet...

    IP地址

    IP地址被用来当做Internet上的电脑的身份编号。大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信。我们可以把“个人电脑”比作“一部电话”,那么“IP地址”就相当于“电话号码”,而Internet中的路由器,就相当于电信局的“程控式交换机”。

    IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。

    4341e04289130bb29a418cdea46a2e31.png

    A类,B类,C类的IP地址

    概念特征网络范围默认掩码A类地址第1个8位中的第1位始终为00-127.x.x.x255.0.0.0/8B类地址第1个8位中的第1、2位始终为10128-191.x.x.x255.255.0.0/16C类地址第1个8位中的第1、2、3位始终为110192-y.x.x.x255.255.255.0/24

    D类和E类地址

    D类 以1110开始 用于组播

    E类 以11110开始 用于科研保留

    范围上划分有些要注意的:

    A类 从1.0.0.0 到127.255.255.255

    B类 从128.0.0.0到191.255.255.255

    C类 从192.0.0.0到223.255.255.255

    其中172.x.x.x段地址空间是被保留的回环地址

    IP地址包含 网络地址+主机地址,即IP地址=网络地址+主机地址

    • 网络地址举例:

    1、如果IP地址是192.168.1.110,地址掩码是:255.255.255.0,那么,网络地址就是:192.168.1.0。

    2、如果地址掩码是:255.255.0.0,那么网络地址就是:192.168.0.0。

    3、网络地址很大一部分是由地址掩码决定的。

    • 主机地址举例:

    如IP地址是202.112.14.137,掩码是255.255.255.224 ,那么网络地址是202.112.14.128,子网号是128。主机地址是202.112.14.137 。

    b15e4f1d3df1a728ee691b03fc71d1c6.png

    子网掩码

    子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。

    子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

    子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。

    子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。

    • 通过子网掩码,就可以判断两个IP在不在一个局域网内部。
    • 子网掩码可以看出有多少位是网络号,有多少位是主机号

    网关

    网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。网关实质上是一个网络通向其他网络的IP地址。

    比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。

    在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。

    而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。

    所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。

    广播地址(Broadcast Address)

    广播地址(Broadcast Address)是专门用于同时向网络中所有工作站进行发送的一个地址。

    在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。例如,对于10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1.255 (255 即为2 进制的11111111 ),当发出一个目的地址为10.1.1.255 的分组(封包)时,它将被分发给该网段上的所有计算机。

    以下可以忽略,不然你已经高高手了!

    根据IP地址和子网掩码求 网络地址 和 广播地址

    • 将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址
    • IP地址和子网掩码进行与运算,结果是网络地址(即主机号全0是网络地址)
    • 将运算结果中的网络地址不变,主机地址变为1,结果就是广播地址
    • 地址范围就是含在本网段内的所有主机

    网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,

    由此可以看出地址范围是: 网络地址+1 至 广播地址-1

    • 主机的数量=2^二进制位数的主机-2

    减2是因为主机不包括网络地址和广播地址。

    示例

    一个主机的IP地址是202.112.14.137,掩码是255.255.255.224,要求计算这个主机所在网络的网络地址和广播地址

    根据子网掩码可以分割网络号+主机号

    255.255.255.224 转二进制:11111111 11111111 11111111 11100000

    网络号有27位,主机号有5位

    网络地址就是:把IP地址转成二进制和子网掩码进行与运算

    IP地址&子网掩码即:202.112.14.128

    计算广播地址

    广播地址:网络地址的主机位全部变成1 ,10011111 即159 即:202.112.14.159

    主机数

    主机号有5位,那么这个地址中,就只能有2^5−2=30个主机。

    因为其中全0作为网络地址,全1作为广播地址

    根据每个网络的主机数量进行子网地址的规划和计算子网掩码

    这也可按上述原则进行计算。

    比如一个子网有10台主机,那么对于这个子网需要的IP地址是

    10+1+1+1=13

    注意:加的第一个1是指这个网络连接时所需的网关地址,接着的两个1分别是指网络地址和广播地址。

    因为13小于16(16等于2的4次方),所以主机位为4位。

    而 256-16=240 所以该子网掩码为255.255.255.240。

    如果一个子网有14台主机,不少人常犯的错误是:依然分配具有16个地址空间的子网,而忘记了给网关分配地址。这样就错误了,因为:

    14+1+1+1=17

    17大于16,所以我们只能分配具有32个地址(32等于2的5次方)空间的子网。这时子网掩码为:255.255.255.224

    206.110.4.0/18被划分成16个子网,每个子网掩码?

    (划分成16个子网,/18就表示有子网掩码18个1,就要从的IP地址的主机位借4位来用作网络位!)

    子网掩码是255.255.252.0

    每个子网可以容纳的主机数是1024台。

    下面我来给你详细解答:

    206.110.1.0 /18 由最后的那个/18,我们可以知道这个IP已经规定了它的网络位是18位,它默认的子网掩码就是11111111.11111111.11 | 000000.00000000(其中1代表网络位,0代表主机位)

    可以看出我们可以操作的位数就是后面的14个0,也就是说我们可以在里面划分出几位作为子网的网络位,进而来划分子网。要求是切分成16个子网,我们知道2的4次方刚好等于16,这就说明子网网络位的位数是4位,那14-4=10就是子网的主机位。所以上面我写的那串二进制就可以变成:11111111.11111111.111111 | 00.00000000(其中1代表网络位,0代表主机位)

    ip段/数字-如192.168.0.1/24是什么意思?

    后面这个数字标示了我们的网络号的位数,也就是子网掩码中前多少号为1

    129.168.1.1 /24 这个24就是告诉我们网络号是24位

    也就相当于告诉我们了

    子网掩码是:11111111 11111111 11111111 00000000

    即:255.255.255.0

    172.16.10.33/27 中的/27

    也就是说子网掩码是255.255.255.224 即27个全1

    11111111 11111111 11111111 11100000

    849a995e3b099692975026dcf3f00627.png
    展开全文
  • 汇编语言中,jmp short指令是8位转移指令,可以修改ip寄存器的范围为-128~127 (8位补码的表示范围,因为偏移地址计算使用的是补码) 短转移指令的机器码格式为EB??,其中??表示8位偏移地址,接下来研究??的...

    汇编语言中,jmp short指令是8位转移指令,可以修改ip寄存器的范围为-128~127 (8位补码的表示范围,因为偏移地址计算使用的是补码)

    短转移指令的机器码格式为EB??,其中??表示8位偏移地址,接下来研究??的计算方法。

    一、公式介绍
    要计算jmp short的偏移地址,我们要记住公式:
    偏移地址=标记处的偏移地址-CPU读完该jmp指令后的ip寄存器值

    二、方法步骤

    1.后跳转
    我们引入MASM中的代码片段

    DATAS SEGMENT
    
    DATAS ENDS
    
    
    CODES SEGMENT
        ASSUME CS:CODES,DS:DATAS,SS:STACKS
    START:
        MOV AX,DATAS
        MOV DS,AX
        jmp short s
        mov ax,1000H
        mov ax,1000H
        mov ax,1000H
        s:mov bx,ax
        MOV AH,4CH
        INT 21H
    CODES ENDS
        END START
    

    s位于jmp指令的后面。
    编译后进行debug,使用u指令查看汇编指令,如下图:
    在这里插入图片描述
    可以看到标记s处的偏移地址为0010H,CPU读取完jmp指令后ip指向了0007H,找到了这两个关键数据后套用公式:偏移地址=标记地址-ip地址,即0010H-0007H。
    在计算机中,减法运算是转换成加法进行,即-x转化成+(x)补,需要将减号后面的数字转换成补码:
    0010H=0000 0000 0001 0000B
    0007H=0000 0000 0000 0111B
    (0007H)补=1111 1111 1111 1001B
    进行加法运算:0000 0000 0001 0000B + 1111 1111 1111 1001B=1 0000 0000 0000 1001B
    在这里要注意:
    进行的是8位的加减法,超过8位的数据要进行舍弃
    得到结果0000 1001B,即09H的补码
    所以得出结果:??=09,原来jmp指令的机器码为EB09。
    大家可以在jmp指令前加上 dd 100 dup (1),讲jmp指令的偏移地址增大,得到的结果也是符合这个计算公式的。后跳转这种情况得以认证。

    2.前跳转
    前跳转指令就是标记位置在jmp指令的前面,引入代码:

    DATAS SEGMENT
    
    DATAS ENDS
    
    
    CODES SEGMENT
        ASSUME CS:CODES,DS:DATAS
    START:
        MOV AX,DATAS
       s:MOV DS,AX
        dd 10 dup (3)
        jmp short s
        mov ax,1000H
        mov ax,1000H
        mov ax,1000H
        mov bx,ax
        MOV AH,4CH
        INT 21H
    CODES ENDS
        END START
    

    将s定位在mov ds,ax位置,中间定义10个双字变量,jmp指令位于后面。
    注意:dup不要太大了,超过了jmp short 的范围会报错。
    指令分布如下图:
    在这里插入图片描述在这里插入图片描述
    我们可以看到,s标记的偏移地址是0003H,CPU执行完jmp指令后的偏移地址是002FH,根据以上计算公式:
    0003H=0000 0000 0000 0011B;
    002FH=0000 0000 0010 1111B;(002FH)补=1111 1111 1101 0000B
    0003H-002FH=0000 0000 0000 0011B +1111 1111 1101 0001B=1111 1111 1101 0100B
    舍去8位以后的数据,得到1101 0100B,即(D4H)的补码,JMP指令的机器码为EBD4,上述结论得以验证。

    综上,偏移地址的计算方法为:
    找到CPU读取jmp指令后的IP寄存器值,即jmp的下一条指令的偏移地址;
    找到标记位,即jmp 目标的偏移地址;
    进行标记位地址-IP寄存器值的补码运算,得到的补码结果就是短跳转指令的偏移地址。

    展开全文
  • 地址有关的寄存器SP、IP、BP、SI、DI也都是16位的,所以对地址的运算也只能是16位的。对于8086/8088来说,无论采用哪种寻址方式,寻找操作数的范围最大是2^16,也就是64K。如何才能形成20位的物理地址呢。系统先将...

    8086/8088有20条地址线,它的直接寻址能力为1MB。也就是在一个系统中可以有多达1MB的存储器,地址从00000H—FFFFFH。给定任意一个20位物理地址,就可以从中取出需要的指令和操作数。但是8086/8088CPU只能进行16位运算。与地址有关的寄存器SP、IP、BP、SI、DI也都是16位的,所以对地址的运算也只能是16位的。对于8086/8088来说,无论采用哪种寻址方式,寻找操作数的范围最大是2^16,也就是64K。如何才能形成20位的物理地址呢。系统先将1MB存储器以64KB为范围分成若干段。在寻址一个具体物理地址时,由一个基本地址再加上由SP或IP等可由CPU处理的16位偏移量来形成20位物理地址。

    当系统需要产生一个20位地址的时候,一个段寄存器会自动被选择。且自动左移4位再与一个16位地址偏移量相加产生所需的20位地址 [1]  。

    例如:数据段DS寄存器的值=0088H

    偏移地址=22H

    那么生成的20位物理地址等于 00880H+22H=008A2H

     

     

    1M等于2^20bytes

    1M=1024KB,1KB=1024Bytes,故1M=1024*1024=2^20Bytes。

    数据存储是以“字节”(Byte)为单位,bai数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。

    该字节大小历来依赖于硬件,也没有明确的标准,存在这一任务的大小。而事实上的标准的八位是一个方便的两个电源允许通过一个255字节的值0。许多类型的应用程序使用的变量在八个或更少位表示的,与处理器设计优化这一共同使用。

    扩展资料:
    其他的存储容量单位换算如下:

    1、1GB(Gigabyte,吉字节,十亿字节,又称“千兆”)=1024MB= 10^9 B;

    2、1TB(Terabyte,万亿字节,太字节)=1024GB= 10^12 B;

    3、1PB(Petabyte,千万亿字节,拍字节)=1024TB= 10^15 B;

    4、1EB(Exabyte,百亿亿字节,艾字节)=1024PB= 10^18 B;

    5、1ZB(Zettabyte,十万亿亿字节,泽字节)= 1024EB= 10^21 B;

    6、1YB(Yottabyte,一亿亿亿字节,尧字节)= 1024ZB= 10^24 B;

    7、1BB(Brontobyte,一千亿亿亿字节)= 1024YB= 10^27 B;

    8、1NB(NonaByte,一百万亿亿亿字节) = 1024BB = 10^30B;

    9、1DB(DoggaByte,十亿亿亿亿字节) = 1024 NB = 10^33 B。

    展开全文
  • (下一条指令的地址,CS给出段基值+ip偏移地址,20位的物理地址) 标志寄存器FR:存放当前程序执行的状态,相加以后结果为0,溢出,符号位为正为负等。指令指针IP(16位): CS提供指令地址的段基值,IP提供偏移量...
  • 8086内存地址

    2018-04-25 02:00:04
    物理地址相同,段地址cs和偏移地址ip不一定相同。段地址+偏移地址 = 段地址x16 + 偏移地址 
  • IP地址

    2017-11-28 20:49:03
    网络层: 一、IP数据包结构和功能 ip包的结构分析: 第一行: version字段:版本字段,IPv4orIPv6 ihl:首部长度; type:区分服务:QUS,服务质量保障,限流,将不同业务等级划分...fragment offset:片偏移 第三行:
  • ipset用户空间 linux ipset IP地址集C应用层库,部分代码偏移ipset6.3.1,支持添加地址地址范围,网络地址;支持IPV6 IPV4 使;使安装
  • IP地址计算与IP协议

    2019-05-21 01:21:00
    子网掩码与IP地址一一对应,是32字节的二进制数。 子网掩码为1表示网络位,为0为主机位。 版本:占四位,指IP协议版本。 首部长度:占4位 区分服务:占8位。 总长度与、标识:各占16位。 标志:占3位,标志...
  • 8086 cpu为什么要把段地址*16+偏移量形成物理地址呢? 这是因为,8086地址线是20位,段寄存器是16位,将段寄存器*16实际上就是向左移动4位,形成20位和8086的二十位地址线匹配. IP(Instruction Pointer):指令指针...
  • Version:版本,IHL:IP头数据...Identification:身份,flag:标签,Fragment Offaet:偏移量,Time of Live:存活时间,Protocol:协议形式,Header Check sum:头部校验,Source Address:源地址,Destination:目标地址,O
  • ip地址库 很全的库

    2020-02-08 13:39:16
    * 注意,这个文件里的ip地址和所有的偏移量均采用little-endian格式,而java是采用 big-endian格式的,要注意转换 */ public class IPSeeker { /** * 用来封装ip相关信息,目前只有两个字段,ip所在的...
  • 汇编JMP语句 IP值和偏移量的问题。问题如下,我想知道IP值是怎么变化的。还有8086一条指令占个几字节啊 2011-10-16 22:26干物虫子 | 分类:汇编...2:有指令JMP NEAR PTR qus,一直指令在内存的偏移地址为100H,qu
  • php本地匹配ip地址

    千次阅读 2017-02-21 16:56:20
    /** * IP 地理位置查询类 */ class IpLocation { /** * QQWry.Dat文件指针 * * @var resource */ private $fp; /** * 第一条IP记录的偏移地址 * * @var int */
  • 昨天有完成一个【ASP.NET 进阶】根据IP返回对应位置信息 的小Demo,既然可以通过IP获得位置信息,那当然可以通过位置信息的经纬度获取IP的当前定位了,虽然与实际地址偏移较大,毕竟不是GPRS,但是还是在本市内,...
  • tcpdump抓取指定ip地址范围内的报文

    万次阅读 2012-07-09 15:50:07
    用tcpdump可以抓取某个ip地址范围内的报文。例如: 抓取目的地址范围是192.168.1.10 ~ 192.168.1.100 的报文使用命令:  tcpdump -n -nn 'ip[16] == 192 and ip[17] == 168...ip[16]是取得ip协议偏移为16的那个字节
  • 8086的寻址方法有一个简单的公式:段地址×16+偏移地址=物理地址 只要我们能够理解这个公式,其实也就理解了8086的寻址方法,在8086中,他的地址总线是20位的,有1MB的寻址能力,但是我们知道,8086cpu
  • 昨天有完成一个【ASP.NET 进阶】根据IP返回对应位置信息的小Demo,既然可以通过IP获得位置信息,那当然可以通过位置信息的经纬度获取IP的当前定位了,虽然与实际地址偏移较大,毕竟不是GPRS,但是还是在本市内,效果...
  • 原理是向攻击者发送的多个分片的IP包,由于操作系统会将分开的IP包重新组合,系统收到偏移量错误IP包然后组合,导致数据异常。 实验代码:为“网络编程技术”参考书上 “2.11 原始套接字编程”中的Teardrop代码编程...
  • /*** @author 马秉尧*/class IpLocation {/*.../*** 第一条IP记录的偏移地址** @var int*/var $firstip;/*** 最后一条IP记录的偏移地址** @var int*/var $lastip;/*** IP记录的总条数(不包含版本信息记录)** @var int
  • 实例如下: <?...// +---------------------------------------------------------------------- // | // +---------------------------------------------------------------------- ... //第一条ip索引的偏移
  • ip归属地IP地址查询//ipcheck.class.php代码如下class .../*** 第一条IP记录的偏移地址** @var int*/var $firstip;/*** 最后一条IP记录的偏移地址** @var int*/var $lastip;/*** IP记录的总条数(不包含版本...
  • IP协议

    2019-05-12 23:08:21
    六、IP分片偏移 6.1、分片原因 6.2、不同传输层协议的分片 七、IP报文重组 八、IP报文校验 【扩展资料】 一、IP协议来源 Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我...
  • linux下C获取MAC地址ip

    千次阅读 2012-08-15 21:33:16
    //必须先获得套接口清单,得到设备...//获取信息后保存在--.sa_data存在偏移,暂时没弄懂 #include #include #include #include #include #include #include #include #include #include #include
  • 网络字节序内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的 多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将...
  • 3)最后看实际ip地址的主机号,高的为master 举例:(主从模式) 假设有两台同一网段的主机,192.168.6.1 与 192.168.6.2 虚拟ip,vip:192.168.6.100 |'' MASTER :100优先级 BACKUP:90优先级 vip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 813
精华内容 325
关键字:

偏移地址ip