Assembly 在程序集中编码以访问链表的第二个值元素

Assembly 在程序集中编码以访问链表的第二个值元素,assembly,x86,Assembly,X86,任何帮助都是值得的,我好几天都无法解决 我有一套链表。 例:0,0,0,0,0 或1,1,1,1,1 或-10,-5,0,5,10 我可以访问链接列表的第一个元素! 第一个在堆栈中,但第二个不在堆栈内存中 下面是我访问链表的第一个value元素的代码 __declspec(naked) int valueLink(struct Node *head) { __asm{ PUSH EBX MOV EBX, [ESP+8] //get the addre

任何帮助都是值得的,我好几天都无法解决

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

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

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

__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,正和为5。 你的成绩是1

该列表包含-10、-5、0、5、10,正和为15。 你的成绩是-10

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

我会得到错误的值!!!请帮忙

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

该列表包含1,1,1,1,1,正和为5。 你的成绩是4760920

该列表包含-10、-5、0、5、10,正和为15。
您的结果是4769096

我看不到示例中定义的链接列表中的节点的结构。假设使用成员next和value定义了名为node的结构,则节点的语法和添加ebx指向的节点的值的语法为:

node    struct
next    dd      ?
value   dd      ?
node    ends
;       ...
        add     eax,node.value[ebx]
;       ...

你好,rcgldr,谢谢你的帮助。我只是在代码中添加了结构名称节点。但是我的汇编代码仍然不能使用“node.value”语法。我想将第二个值移动到register EAX,而不是累加。谢谢。?!你在用什么汇编程序?如果你想移动而不是添加,那么就使用mov EAX,node.value[ebx]。
node    struct
next    dd      ?
value   dd      ?
node    ends
;       ...
        add     eax,node.value[ebx]
;       ...