如果:(我相信寄存器是相邻的…(
A BYTE 0xB, 0d20, 0d10, 0d13, 0x0C
B WORD 0d30, 0d40, 0d70, 0hB
D DWORD 0xB0, 0x200, 0x310, 0x400, 0x500, 0x600
然后:
- 什么是[A+2]?答案是0d20或0x15
- 什么是[B+2]?答案是40或0x28
- 什么是[D+4]?不确定
- 什么是[D-10]?不确定
我想这些都是答案,但我不确定。由于一个单词是1字节,AND DWORD是2个单词,因此,例如,当您对[B+2]数组进行计数时,您应该从0d30开始,然后从0d40开始(计数两个单词(。[A+2]是0d20,因为您正在计算两个字节。我做错了什么?
这是因为:考虑到A、B和D的第一个值是偏移x86是小端序。。。A=0d10,从中再计数2个B…字节(十进制(=30,0,40,0,70,0,11,0 B是0d40,从中又计数2个字节D…字节(十六进制(=0x200,0,0,0,。。。0,2,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。这是正确的吗?
什么是[A+2]?答案是0d20或0x15
从[A](与[A+0]相同(开始,前进两个字节
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]?不确定
每个双字是四个字节的
索引总是以字节为单位,因此+4=+4字节=+1双字
从[D]开始,这与[D+0]相同。。。多个前向
D DWORD 0xB0, 0x200, 0x310, 0x400, 0x500, 0x600
^0 ^+1 <--dwords
^0 ^+4 <--bytes
答案:0x200
什么是[D-10]?不确定
偏移总是以字节为单位
一个双字包含四个字节的
一个单词包含两个字节的
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