如何在HLA汇编中保留寄存器

时间:2016-02-02 10:47:29

标签: assembly cpu-registers hla

我继续写下我的代码,程序运行得非常好。

 program recursiveSubtractionProgram;
 #include( "stdlib.hhf" );
 static

    zA : int32;
    zB : int32;
    zResult : int32;

   procedure recursiveSubtraction( a: int32; b : int32 ); @nodisplay; @noframe;
        static
            returnAddress : dword;
   begin recursiveSubtraction;
    pop(returnAddress);
    pop(zB);
    pop(zA);
    push(returnAddress);
    StartLoop:
    mov(zB, EBX);
    mov(zA, EAX);

    cmp(EBX, 0);
    je ValueA;
    cmp(EAX, 0);
    je ValueNegB;

    sub(1, EAX);
    sub(1, EBX);
    mov(EAX, zA);
    mov(EBX, zB);
    Call recursiveSubtraction;
    ValueA:
    mov(EAX, ECX);
    jmp zEnd;
    ValueNegB:
    neg(EBX);
    mov(EBX, ECX);
    jmp zEnd;

    zEnd:

    ret();
   end recursiveSubtraction;



 begin recursiveSubtractionProgram;
    stdout.put("Feed Me A: ");
    stdin.get(zA);
    stdout.put("Feed Me B: ");
    stdin.get(zB);
    push(zA);
    push(zB);
    call recursiveSubtraction;
    mov(ECX, zResult);
    stdout.put("RecursiveSubtraction of A-B = ",zResult);

 end recursiveSubtractionProgram;

当我上交作业时,我的教授写了

  

您的排序功能必须保留BX,CX和DX寄存器,否则您可能会收到注册损坏。

我不完全确定他的意思以及如何解决它。

0 个答案:

没有答案