Assembly 在程序集中编码以访问链表的第二个值元素
任何帮助都是值得的,我好几天都无法解决 我有一套链表。 例:0,0,0,0,0 或1,1,1,1,1 或-10,-5,0,5,10 我可以访问链接列表的第一个元素! 第一个在堆栈中,但第二个不在堆栈内存中 下面是我访问链表的第一个value元素的代码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
__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]
; ...