0

我继续编写代码,程序运行良好。

 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,否则您可能会损坏寄存器。

我不确定他的意思是什么以及如何解决它。

4

0 回答 0