如果:(我相信这些寄存器是相邻的.)
A BYTE 0xB, 0d20, 0d10, 0d13, 0x0C
B WORD 0d30, 0d40, 0d70, 0hB
D DWORD 0xB0, 0x200, 0x310, 0x400, 0x500, 0x600 然后:
我认为这些是答案,但我不确定。因为一个单词是一个字节,而DWORD是两个字,所以当你计算B+2数组时,你应该从0d30开始,然后从0d40开始(数两个单词)。A+2是0d20,因为您正在计算两个字节。我做错了什么?
这也是因为:考虑到A、B和D的第一个值是偏移量,x86是小端点。A= 0d10,B...bytes (十进制)= 30,0,40,0,70,0,11,0 B是0d 40,D...bytes (十六进制)= 0x200,0,0,0,0,0,0,0,...0,2,0,0,...0x10,3,0,0,...0,4,0,0,...0,5,0,0,...0,6,0,0 D是0x200。从那里数4个字节。从0xb0向后数10个字节。所以D-10不是等于0x0C吗?
如果我做了B-3,会不会是0d13?我被告知它实际上是0d10到0d13之间,这样它将是0A0D,并且由于小endian将是0D0A。对吗?
发布于 2016-10-16 06:15:50
A+2是什么?答案是0d20或0x15。
从A开始,前进两个字节
A BYTE 0xB, 0d20, 0d10, 0d13, 0x0C
^0 ^1 ^2 答: 0d10
B+2是什么?答案是40或0x28
一个单词是两个字节。
偏移总是以字节为单位的。因此+2 = +2字节= +1字
B WORD 0d30, 0d40, 0d70, 0hB
^0 ^+2 <--bytes
^0 ^+1 <--words答: 0d40
D+4是什么?不确定
每个dword是四个字节。
索引总是以字节为单位,所以+4 = +4字节= +1 dword
从D开始,和D+0一样.更前移
D DWORD 0xB0, 0x200, 0x310, 0x400, 0x500, 0x600
^0 ^+1 <--dwords
^0 ^+4 <--bytes回答: 0x200
D10是什么?不确定
偏移总是以字节为单位的。
一个dword包含四个字节。
一个单词包含两个字节。
A BYTE 0xB, 0d20, 0d10, 0d13, 0x0C
^-10 ^-9
B WORD 0d30, 0d40, 0d70, 0hB
^-8 ^-6 ^-4 ^-2
D DWORD 0xB0, 0x200, 0x310, 0x400, 0x500, 0x600
^0答: 0d13
https://stackoverflow.com/questions/40069818
复制相似问题