[英]Array in Hexadecimal in Assembly x86 MASM
如果:(我相信寄存器彼此相邻...)
A BYTE 0xB, 0d20, 0d10, 0d13, 0x0C
B WORD 0d30, 0d40, 0d70, 0hB
D DWORD 0xB0, 0x200, 0x310, 0x400, 0x500, 0x600
然后:
我认为这些是答案,但我不确定。 由于WORD为1 BYTE,AND DWORD为2 WORDS,因此,例如,当计算[B + 2]的数组时,应从0d30开始,然后从0d40开始(计算两个WORD)。 [A + 2]为0d20,因为您要计数两个字节。 我究竟做错了什么?
这样做是因为:考虑到A,B和D的第一个值是偏移量x86是小尾数... A = 0d10,从那里再数2 B ...字节(十进制)= 30,0 ,40,0,70,0,11,0 B为0d40,从该D开始再计算2个字节...字节(十六进制)= 0x200,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,并且由于小字节序将是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 dword
从[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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.