首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序集中的代码以访问链接列表的第二个值元素。

程序集中的代码以访问链接列表的第二个值元素。
EN

Stack Overflow用户
提问于 2014-03-08 03:23:04
回答 1查看 862关注 0票数 2

任何帮助都是无济于事的,我好几天都无法确定。

我有一套链接列表。例如: 0,0,0,0,0或1,1,1,1或-10,-5,0,5,10

我可以访问链接列表的第一个元素很好!第一个是堆栈,但第二个不在堆栈内存中。

下面是我访问链接列表的第一个值元素的代码

代码语言:javascript
复制
__declspec(naked) int valueLink(struct Node *head) {
__asm{
           PUSH EBX

           MOV EBX, [ESP+8] //get the address of the first element of linked list on the stack

           MOV EAX, [EBX] // move the value to EAX

           POP EBX
           ret
         }
        }

我会得到正确的输出如下:

该列表包含-1、-1、-1、-1、-1,正和为0。你的结果是-1。

列表包含1,1,1,1,1,1和5。

这个列表包含-10,-5,0,5,10,正和15。你的结果是-10。

但是现在我要访问链接列表的第二个值,我修改了代码->

代码语言:javascript
复制
__declspec(naked) int valueLink(struct Node *head) {
__asm{
          PUSH EBX

          MOV EBX, [ESP+8] //get the address of the first element of linked list on the stack

          MOV EAX, [EBX+4] // move the second value to EAX

          POP EBX
          ret
         }
       }

我会得到错误的价值!帮帮忙?!

该列表包含-1、-1、-1、-1、-1,正和为0。你的成绩是4760640

该列表包含1,1,1,1,1,1和5。结果是4760920。

这个列表包含-10,-5,0,5,10,正和15。你的结果是4769096。

EN

回答 1

Stack Overflow用户

发布于 2014-03-08 03:35:28

我没有看到在您的示例中定义的链接列表中节点的结构。假设使用next和value定义了一个名为node的结构,那么该节点的语法并从ebx指向的节点中添加一个值是:

代码语言:javascript
复制
node    struct
next    dd      ?
value   dd      ?
node    ends
;       ...
        add     eax,node.value[ebx]
;       ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22264597

复制
相关文章

相似问题

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