什么是ip寻址

什么是ip寻址,第1张

寻址方式

表示指令中操作数所在的方法称为寻址方式。8086/8088有七种基本的寻址方式:立即寻找,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址加变址寻址,相对基址加变址寻址。

直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址和相对基址加变址寻址,这五种寻址方式属于存储器寻址,用于说明操作数所在存储单元的地址。由于总线接口单元biu能根据需要自动引用段寄存器得到段值,所以这五种方式也就是确定存放操作数的存储单元有效地址ea的方法。有效地址ea是一个16位的无符号数,在利用这五种方法计算有效地址时,所得的结果认为是一个无符号数。

除了这些基本的寻址方式外,还有固定寻址和i/o端口寻址等。

1:寄存器直接寻址:

你就想成:其实你已经站在你要找的"门户号(家)"面前了,直接敲门进去就ok了!

例子:

mov

ax,[2000h]

mov

ax,2000h

-->2000h为存放操作数单元号的符号地址

上面两者是不等效的

2:寄存器间接寻址方式:

你就想成:你已经站在你要找的"门户号(家)"的"单元号",你要找到它,必须知道它在当前"单元号"几楼假如它在6楼,那你就上到6楼就ok了!!注意,最高只有16楼,因为什么呢那就用debug的d命令看看呀,慢慢数哦,呵呵!!

例子:

mov

ax,[bx]

计算公式:

物理地址=16d(ds)+(bx)

物理地址=16d(ds)+(si)

物理地址=16d(ds)+(di)

物理地址=16d(ss)+(bp)

3:寄存器相对寻址方式:

你就想成:你要找的"门户号(家)"其实就在你家的楼上或者楼下,你要找到它,就

必须知道它在你楼上几楼,或者在楼下几楼!就ok了!

例子:

mov

ax,count[si]

mov

ax,[count+si]

其中

count为位移量的符号地址

计算公式:

物理地址=16d(ds)+(bx)+8位位移量

或+(si)

16位位偏移量

或+(di)

物理地址=16d(ss)+(bp)+8位偏移量

4:基址变址寻址方式:

你就想成:你要找的"门户号(家)"是跟住在同一栋楼的不同"单元号",你要找到它,就必须知道它是该栋的哪个"单元号",并且住在几楼!那样你就可以找到它了

!

例子:

mov

ax,[bx][di]

mov

ax,[bx+di]

计算公式:

物理地址=16d(ds)+(bx)+(si)

或+(di)

物理地址=16d(ss)+(bp)+(si)

或+(di)

5:相对基址变址寻址方式:

你就想成:你就想成:你要找的"门户号(家)"是跟住在同一栋楼的不同"单元号",它比你高几层楼或者低几层楼,然后用的你目前的楼数+/-就可以得出你要找的住在几楼了!

例子:

mov,ax,mask[bx][si]

mov,ax,mask[bx+si]

mov,ax,[mask+bx+si]

以上三个例子是等效的!!

计算公式:

物理地址=16d(ds)+(bx)+(si)+8位位移量

或+(di)

16位位偏移量

物理地址=16d(ss)+(bp)+(si)+8位位移量

或+(di)

16位位偏移量

地址指针的字长是二进制的16位,说明可以表达的地址个数为2^16个。

2^16=(2^6)(2^10)=641024=64KB,也就是它的可寻址范围是64KB,相应的地址号是0000000000000000~1111111111111111,用十六进制表示,即0000H~FFFFH。

寻址范围仅仅是一个数字范围,不带有单位,而寻址范围的大小很明显是一个数,指寻址区间的大小。

M为数量单位。1024=1K,1024K=1M

MB指容量大小。1024B=1KB,1024KB=1MB

如寻址范围为0~(2^20)-1,寻址空间为1MB

物理寻址也称CHS(Cylinder、Head、Sector)寻址。Cylinder、Head、Sector这三个参数在很多硬盘表面的标签上都有标注其数值。这是硬盘容量大小的计算基础。物理寻址中对某扇区的表述为某某Cylinder某某Head的某某Sector。

硬盘容量=盘面数×柱面数×扇区数×512字节。

扩展资料:

逻辑寻址方式和物理寻址方式目前都在使用,很多软件也都可以用两种寻址方式进行定位。不过,由于物理寻址方式相对比较复杂,采用三数字进行定位,硬盘大小不同数值上限不同,起始不同(Cylinder和Head从0起始,Sector从1起始)等等原因,在数据恢复技术中更多的使用逻辑寻址方式完成定位。

存储器间接寻址指针,是作为指定的存储区域的确切数值单元来运用的。也就是说,指针不包含区域标识,它只是指明了一个数值。

存储器间接寻址的地址给定格式是:地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数值单元。

存储器间接寻址具有两个指针格式:单字和双字。

单字指针是一个16bit的结构,从0-15bit,指示一个从0-65535的数值,这个数值就是被寻址的存储区域的编号。

双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。

指针可以存放在M、DI、DB和L区域中,也就是说,可以用这些区域的内容来做指针。

参考资料:

百度百科---寻址

立即数寻址是汇编语言中的一种寻址方式,在面向不同形式的处理器中,会有不同的编写方式。

立即寻址方式只能用于源操作数字段,不能用于目的操作数字段,经常用于给寄存器赋初值。

例:MOV AX,251 ;将十进制数251送入寄存器AX,“251”是立即数。

MOV AL,‘5’ ;将5的ASCII码送入寄存器AL,‘5’是立即数。

MOV AL,E8H ;将8位立即数E8H送入寄存器AL。

MOV AX,2346H ;将16位立即数2346H送入寄存器AX。

扩展资料

在程序运行时,程序直接调用该操作数,而不需要到其他地址单元中去取相应的操作数,上述的写在指令中的操作数也称作立即数。

在MCS-51单片机汇编语言编程中,该寻址方式是将“#”号放在立即数前面,以表示该寻址方式为立即寻址,如将操作数写为#52H。

例: MOV A ,#52H

上述例子中“MOV”为操作码,“A”为第一操作数,其意义为累加寄存器,“#52H”为第二操作数,其意义就是立即数。通过该条程序指令可将十六进制数52H直接放入累加器中,当然也可以将立即数表示为二进制数或十进制数,如#00B。

在8086系列微型处理器汇编语言编程中,该寻址方式不用将“#”放在立即数前面。

参考资料来源:百度百科-立即寻址

一、隐含寻址 在指令中不明显的给出而是隐含着操作数的地址。例如,单地址的指令格式,没有在地址字段中指明第二操作数地址,而是规定累加寄存器AC作为第二操作数地址,AC对单地址指令格式来说是隐含地址。二、立即寻址 指令的地址字段指出的不是操作数的地址,而是操作数本身。这种方式的特点是指令执行时间很短,不需要访问内存取数。 例如:单地址的移位指令格式为 OP(移位) F D这里D不是地址,而是一个操作数。F为标志位,当F=1,操作数进行右移;当F=0时,操作数进行左移。三、直接寻址 直接寻址特点是:在指令格式的地址字段中直接指出操作数在内存的地址D。点击演示 采用直接寻址方式时,指令字中的形式地址D就是操作数的有效地址E,既E=D。因此通常把形式地址。 点击演示D又称为直接地址。此时,由寻址模式给予指示。 如果用S表示操作数,那么直接寻址的逻辑表达式为 S=(E)=(D)四、间接寻址 间接寻址的情况下,指令地址字段中的形式地址D不是操作数的真正地址,而是操作数地址的指示器,D单元的内容才是操作数的有效地址。 如果把直接寻址和间接寻址结合起来,指令有如下形式: 操作码 I D 寻址特征位I=0,表示直接寻址,这时有效地址E=D;I=1,表示间接寻址,这时有效地址E=(D)。 间接寻址方式是早期计算机中经常采用的方式,但由于两次访存,影响指令执行速度,现在已不大使用。五、寄存器寻址方式和寄存器间接寻址方式 当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式。此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。 寄存器间接寻址方式与寄存器寻址方式的区别在于:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。六、相对寻址方式 相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。“相对”寻址,就是相对于当前的指令地址而言。 点击演示 采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,所编程序可以放在内存任何地方。 此时形式地址D通常称为偏移量,其值可正可负,相对于当前指令地址进行浮动。七、基址寻址方式基址寻址方式是将CPU中基址寄存器的内容加上指令格式中的形式地址而形成操作数的有效地址。点击演示它的优点是可以扩大寻址能力。同形式地址相比,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中寻址。八、变址寻址方式 变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。 但使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律性变化。九、块寻址方式 块寻址方式经常用在输入输出指令中,以实现外存储器或外围设备同内存之间的数据块传送。块寻址方式在内存中还可用于数据块搬家。 块寻址时,通常在指令中指出数据块的起始地址(首地址)和数据块的长度(字数或字节数)。 如果数据块是变长的,可用三种方法指出它的长度: (1)指令中划出字段指出长度; (2)指令格式中指出数据块的首地址与末地址; (3)由块结束字符指出数据块长度。 操作码 首地址 标志位 末地址十、段寻址方式 微型机中采用了段寻址方式,例如它们可以给定一个20位的地址,从而有1M存储空间的直接寻址能力。为此将整个1M空间存储器以64K为单位划分成若干段。在寻址一个内存具体单元时,由一个基地址再加上某些寄存器提供的16位偏移量来形成实际的20位物理地址。这个基地址就是CPU中的段寄存器。在形成20位物理地址时,段寄存器中的16位数会自动左移4位,然后以16位偏移量相加,即可形成所需的内存地址。

以上就是关于什么是ip寻址全部的内容,包括:什么是ip寻址、寻址范围是什么意思、什么是立即数寻址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:聚客百科

原文地址: https://juke.outofmemory.cn/life/3829756.html

()
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-07
下一篇 2023-05-07

发表评论

登录后才能评论

评论列表(0条)

保存