我继续编写代码,程序运行良好。
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,否则您可能会损坏寄存器。
我不确定他的意思是什么以及如何解决它。