Assembly 需要以下汇编语言的帮助吗

Assembly 需要以下汇编语言的帮助吗,assembly,x86,Assembly,X86,这是一个简单的问题,但我是汇编语言新手。有人能回答吗?谢谢 A BYTE 0Ah,20,10,40 B WORD 30,40,50,0Bh D DWORD A00,200,300,400,500,600 a) 将[2]移入eax寄存器的单行命令是什么 b) 什么是[A+2] c) 什么是[B+2] d) 什么是[d+4] e) 什么是[D-10] 答复: a) mov eax, A[2] b) [A+2] is third array position that is 10. c)

这是一个简单的问题,但我是汇编语言新手。有人能回答吗?谢谢

A BYTE 0Ah,20,10,40

B WORD 30,40,50,0Bh

D DWORD A00,200,300,400,500,600
a) 将[2]移入eax寄存器的单行命令是什么

b) 什么是
[A+2]

c) 什么是
[B+2]

d) 什么是
[d+4]

e) 什么是
[D-10]

答复:

a)  mov eax, A[2]

b)  [A+2] is third array position that is 10.

c)  [B+2] is zero

d)  [D+4] is 200

e)  [D-10] is byte 40   
a)
a[2]
只不过是一个字节的信息,因此,您应该将其移动到一个字节长的寄存器中。您可以将其移动到
EAX
寄存器的较低字节,写入
MOV AL[A+2]
() 检查
EAX
寄存器配置。 那么,您的代码将做什么呢?这意味着在
EAX
寄存器中从
[A+2]
开始移动4个字节,因为4个字节是
EAX
的大小

c)这取决于你的记忆力。在大多数PC机中,您的答案可能是错误的,因为数据存储为
30 00、40 00等。
也就是说,最重要的位在右边(这种存储数据的方式被称为
little-endian
方式),但如果您的CPU体系结构确实实现了big-endian方式,那么您的答案是正确的

e)如果您按照发布的方式声明数据段,那么您将拥有
[D-10]=[A+2]=10
。原因是,
B
中的数据填充了内存的8字节,
[A+3]
是第九个字节,
[A+2]
是第十个字节,向后移动

(*)请注意,正如Michael在下面的评论中所报告的,您可以使用
movsx
movzx
说明

MOVSX-EAX,[A+2]
[A+2]
字节移动到
EAX
双字,扩展数字的符号

MOVZX-EAX,[A+2]
[A+2]
字节移动到
EAX
双字,将所有0放在剩余的24位

其他答案对我来说似乎是正确的。

a)
a[2]
只不过是一个字节的信息,因此,您应该将其移动到一个字节长的寄存器中。您可以将其移动到
EAX
寄存器的较低字节,写入
MOV AL[A+2]
() 检查
EAX
寄存器配置。 那么,您的代码将做什么呢?这意味着在
EAX
寄存器中从
[A+2]
开始移动4个字节,因为4个字节是
EAX
的大小

c)这取决于你的记忆力。在大多数PC机中,您的答案可能是错误的,因为数据存储为
30 00、40 00等。
也就是说,最重要的位在右边(这种存储数据的方式被称为
little-endian
方式),但如果您的CPU体系结构确实实现了big-endian方式,那么您的答案是正确的

e)如果您按照发布的方式声明数据段,那么您将拥有
[D-10]=[A+2]=10
。原因是,
B
中的数据填充了内存的8字节,
[A+3]
是第九个字节,
[A+2]
是第十个字节,向后移动

(*)请注意,正如Michael在下面的评论中所报告的,您可以使用
movsx
movzx
说明

MOVSX-EAX,[A+2]
[A+2]
字节移动到
EAX
双字,扩展数字的符号

MOVZX-EAX,[A+2]
[A+2]
字节移动到
EAX
双字,将所有0放在剩余的24位


其他答案对我来说似乎是正确的。

问题是什么?你已经有答案了A,C和E的答案在我看来不正确。请解释你们的理由。第一部分是问题,我对我的答案表示怀疑。它们是否正确?A。mov将把A[2]移到蜡像登记器中。否
A
是一个字节数组,
EAX
是4个字节,因此它会将
DWORD
A[2]
开始移动到
EAX
。问题是什么?你已经有答案了A,C和E的答案在我看来不正确。请解释你们的理由。第一部分是问题,我对我的答案表示怀疑。它们是否正确?A。mov将把A[2]移到蜡像登记器中。否
A
是一个字节数组,
EAX
是4个字节,因此它会将
DWORD
A[2]
开始移动到
EAX
.A)从80386开始有
movsx
movzx
.A)从80386开始有
movsx
movzx