汇编程序的简单增量

时间:2009-11-08 05:28:45

标签: c assembly

我坚持这个。我自学习装配和翻译一些基本指令。但我不能用这个。

有人可以帮助我吗?

int
secuencia ( int n, EXPRESION * * o )
{
  int a, i;
  for ( i = 0; i < n; i++ ){

    a = evaluarExpresion( *o );

    // Im trying to do this: o++;
  __asm {
      mov eax,dword ptr [o] 
      mov ecx,dword ptr [eax] 
      inc [ecx]  
    }
  }
  return a ;
}

我写了内部并且工作,但仍然不知道如何增加O

int
secuencia ( int n, EXPRESION * * o )
{
  int a, i;
  for ( i = 0; i < n; i++ ){

      __asm {

            mov eax,dword ptr [o] 
            mov ecx,dword ptr [eax] 
        push ebp
            mov ebp, esp
            push ecx

            call evaluarExpresion
        mov esp, ebp

        pop ebp

        mov a, eax
      }

    o++;
  }
  return a ;
}

2 个答案:

答案 0 :(得分:1)

有两种选择:

或者:

  • o的值从内存移动到寄存器(例如eax)
  • 递增寄存器
  • 将值从寄存器移回内存

  • 直接递增存储在内存中的值

尝试使用这两种方法。

答案 1 :(得分:1)

mov esi, o
add esi, 4 //increment is here

第1行:我们将o指针移动到esi寄存器。 第2行:我们增加你的o指针

mov eax, o
mov esi, [eax]
add esi, 4

我完全不明白你想要做什么,但我希望它有所帮助!