初级的关于偏移地址的有关问题
发布时间:2010-06-14 15:33:35 文章来源:www.iduyao.cn 采编人员:星星草
初级的关于偏移地址的问题
1 、dos汇编中有offset这个操作符,是取偏移地址,可是什么是偏移地址呢?是不是相对于段的地址,比如100:6666,6666这部分是不是偏移地址?lea指令是不是获得这样的值呢。
2、在32保护模式下,这个偏移地址又是怎么回事,段寄存器所获得是一个基地址吧,那么偏移地址是不是也根据这个基地址的偏移,虽然我们看到的虚拟地址好象是004040000格式,可是实际上还是
段寄存器取到的基地址:相对这个基础地址的偏移地址这样的格式呢
3。标号到底是什么意思呢?标号的内容是什么,是全地址(段:偏移)形式,还是只是偏移的形式?为什么有的jmp 标号,能跳到别的段中去,为什么有时候不跳,我知道有远近的关系,可是这个标号到底是什么东西呢?在32下用的时候,为什么取offset 标号 的形式呢?
谢谢,大家,我是个新来的,没什么分,可是还是谢谢大家。
------解决方案--------------------
请看看王爽的《汇编语言》 里面都有说
------解决方案--------------------
offset 与 lea 的比较,请到偶的blog观赏相关文章。
------解决方案--------------------
偏移地址就是到定义该符号或变量的段的偏移吧。有效地址是 段址:有效地址 这个地址空间中冒号后面的部分。。有些时候应该是一样的。
这个么,offset和lea的效果应该是一样的,不过操作过程不同。
lea是个指令,有专门的机器指令与其相对应,也就是说,lea si,XXX(一标识符)有一条机器指令与其相对应。
offset是个析值操作符,在mov ax,offset xxx,其偏移不是又机器指令产生,而是由汇编程序计算而来的。且offset只能用于数据定义伪指令定义的变量名。
也就是说lea在程序运行时产生有效地址,而offset在汇编成机器代码时就已经产生了偏移,即在运行时,offset xxx这个语句已经变成了一个偏移量。
在32位地址空间下,也是基址+偏移的寻址方式,只是段寄存器中保存的不再是段址,而是段描述符(Descriptor)到GDT段表或者LDT段表首地址的便宜--选择子(因为一个描述符的大小是8byte,所以其末3个2进制位必定是0,便用来存放其他信息。)。又选择子决定了基地址。这部分只是可以看杨季文的《80x86汇编语言程序设计教程》中的第10章。
标号,我认为就是到其所在段的段首的偏移。jmp指令有好几种形式的机器码,分别对应段内的转移和段间的转移,还区分16位和32位。段间的转移的时候,若目标段在jmp指令前已经定义过,便不用再加上far;若没有定义过,即在jmp语句前目标段还没有定义,便必须加上far。
我也是初学者,望大家指正呀。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
MSN通讯协议逆向
MSN 进行数据通讯中,据说用了TWN认证,通过SSL/TLS连接到login.passport.com和 loginnet.passportr.com 等服务器。
...
-
win7+64位cpu的exe反汇编问题,多次问人,无果
vs20008写的一个很简单的c++控制台程序
平台是:win7 64位操作系统
用od进行反汇编,...
-
可能很白痴的问题:想给ax赋一个负数怎么做?
比如想要赋一个-5给ax,是不是只有求出这个-5的补码,然后mov进这个补码这一种方法?
------...
-
居然显示不出负数来,悲剧
Assembly code
.386
.model flat,stdcall
include kernel32.inc
includelib kernel32.lib
include ms...
-
call far ptr '标号'的问题[在线等答案]
为什么ax会是1010?不是1006??求详细解答
难道call far ptr不是执行了push cs,push ip,jm...
-
CPU的程序计数器PC和指令指针寄存器IP是一个东西吗?
看上去好像功能完全一样,又觉得不应该是一回事,求教
------解决方案----------...
-
菜鸟问题,高人来帮忙
编程,统计data段中数值为8的字节的个数,用ax保存结果
我的代码
Assembly code
assume cs:code,ds:data
data se...
-
一个死循环问题
什么原因造成内循环才刚循环一次还没完,到了loop s1的时候cx突然变成F?
Assembly code
assume cs:codesg,ds:datas...
-
初学MUL乘法指令,写法求解释下
MUL r8/m8 ;无符号字节乘:AX←AL×r8/m8
MUL r16/m16 ;无符号字乘:DX.AX←AX×r16/...
-
汇编如何 取到8051的P0口的内容呢?
Assembly code
ORG 0000H
AJMP START
ORG 0030H
START: MOV P0,#00H
LOOP: ...