首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >汇编x86 MASM中十六进制数组

汇编x86 MASM中十六进制数组
EN

Stack Overflow用户
提问于 2016-10-16 03:36:12
回答 1查看 239关注 0票数 0

如果:(我相信这些寄存器是相邻的.)

代码语言:javascript
复制
 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是什么?不确定
  • D10是什么?不确定

我认为这些是答案,但我不确定。因为一个单词是一个字节,而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。对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-16 06:15:50

A+2是什么?答案是0d20或0x15。

A开始,前进两个字节

代码语言:javascript
复制
A BYTE 0xB, 0d20, 0d10, 0d13, 0x0C
       ^0   ^1    ^2   

答: 0d10

B+2是什么?答案是40或0x28

一个单词是两个字节。

偏移总是以字节为单位的。因此+2 = +2字节= +1字

代码语言:javascript
复制
B WORD 0d30, 0d40, 0d70, 0hB 
   ^0    ^+2  <--bytes
   ^0    ^+1  <--words

答: 0d40

D+4是什么?不确定

每个dword是四个字节。

索引总是以字节为单位,所以+4 = +4字节= +1 dword

从D开始,和D+0一样.更前移

代码语言:javascript
复制
D DWORD 0xB0, 0x200, 0x310, 0x400, 0x500, 0x600 
        ^0    ^+1   <--dwords
        ^0    ^+4   <--bytes

回答: 0x200

D10是什么?不确定

偏移总是以字节为单位的。

一个dword包含四个字节。

一个单词包含两个字节。

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40069818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档