汇编偏移量问题
我想问这个偏移量是多少mov[ecx+esi],dlecx=0010A83Aesi=00eefb9f...
我想问这个偏移量是多少
mov [ecx + esi],dl
ecx=0010A83A
esi=00eefb9f 展开
mov [ecx + esi],dl
ecx=0010A83A
esi=00eefb9f 展开
4个回答
展开全部
8086的地址线有20根,能够直接访问的地址空间为2^20即1MB。即内存的地址编号可以从0编到1M。用16进制数表示内存的物理地址,其地址范围为00000H~FFFFFH,为5位16进制数。每一个内存单元都有一个确定的20位物理地址。
但是,16位CPU的字长为16位,一次只能访问2^16=64k内存,如何访问1M的内存空间呢,在8086CPU中采用了地址分段的办法。即每一个存储单元的物理地址都有段地址和偏移地址两部分构成。
规定:只有地址为16的整数倍的物理地址可以作为段地址。这样,1MB的内存空间被分为了1M/16=64K个段。段地址的特征为xxxx0H。
物理地址的计算公式为:
物理地址=段地址 * 16 + 偏移地址
或者,物理地址=段地址 * 10H + 偏移地址
所以:你的问题:
物理地址=426AH * 16 + 86H =426A0H + 86H =42726H
也可以这样做,因为物理地址是20位的,所以:物理地址等于段地址左移4位后再加上偏移地址。
希望我的回答对你有所帮助……
但是,16位CPU的字长为16位,一次只能访问2^16=64k内存,如何访问1M的内存空间呢,在8086CPU中采用了地址分段的办法。即每一个存储单元的物理地址都有段地址和偏移地址两部分构成。
规定:只有地址为16的整数倍的物理地址可以作为段地址。这样,1MB的内存空间被分为了1M/16=64K个段。段地址的特征为xxxx0H。
物理地址的计算公式为:
物理地址=段地址 * 16 + 偏移地址
或者,物理地址=段地址 * 10H + 偏移地址
所以:你的问题:
物理地址=426AH * 16 + 86H =426A0H + 86H =42726H
也可以这样做,因为物理地址是20位的,所以:物理地址等于段地址左移4位后再加上偏移地址。
希望我的回答对你有所帮助……
展开全部
偏移量=ecx + esi=0010A83A+00eefb9f=ffa3d9
其实,你用XP下的科学计算器即可进行16进制的计算。
其实,你用XP下的科学计算器即可进行16进制的计算。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
32位的没学
你那什么寻址方式啊
我只见过寄存器基址变址的
ecx对吗?
偏移量就是ecx+esi啊
你那什么寻址方式啊
我只见过寄存器基址变址的
ecx对吗?
偏移量就是ecx+esi啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可能没有认真看教程,概念全都串了,再仔细看看吧。
如果是8086的CPU,那么地址线是20根,数据线是16根,传送数据时一次就传送16位。
物理地址是需要用16位的段地址和16位的段内偏移地址来合成的,合成的方法是:段地址左移4位(把16位扩展为20位)+段内偏移地址。
如果是8086的CPU,那么地址线是20根,数据线是16根,传送数据时一次就传送16位。
物理地址是需要用16位的段地址和16位的段内偏移地址来合成的,合成的方法是:段地址左移4位(把16位扩展为20位)+段内偏移地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询