首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在后续汇编语言方面需要帮助

在后续汇编语言方面需要帮助
EN

Stack Overflow用户
提问于 2013-10-08 18:26:37
回答 1查看 135关注 0票数 1

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

代码语言:javascript
复制
A BYTE 0Ah,20,10,40

B WORD 30,40,50,0Bh

D DWORD A00,200,300,400,500,600

( a)将A[2]移动到eax寄存器的一行命令是什么?

( b)什么是[A+2]

( c)什么是[B+2]

( d)什么是[D+4]

( e)什么是[D-10]

答案:

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-08 18:51:54

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

c)它取决于内存的恩迪内斯。在大多数PC机中,您的答案可能是错误的,因为数据存储为30 00, 40 00, .... --也就是说,最重要的部分是正确的(这种存储数据的方式被称为little-endian方式),但是如果您的CPU体系结构确实实现了大端方式,您将是正确的。

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

(*)请注意,正如Michael在下面的评论中所述,您可以使用movsxmovzx指令。

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

MOVZX EAX, [A+2]将把[A+2]字节移动到EAX双字,将所有的0都放在其余的24位中。

其他的答案在我看来是正确的。

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

https://stackoverflow.com/questions/19255447

复制
相关文章

相似问题

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