Я новичок в ассемблере и не могу понять, почему именно это не работает правильно.Он основан на
int main ( )
{
int a=2, b=1, c;
if (a < b)
{
c = a + 1;
}
else
{
c = a – b;
}
}
И сборочная деталь выглядит так.
.model flat,c
.code
CalcResult_ proc
push ebp
mov ebp,esp
;see if a<b
mov eax,[ebp+8] ;eax = a
mov ecx,[ebp+12] ;ecx = b
cmp eax,ecx
jg d ;Makes program jump dow to d if a < b
add eax, 1 ;eax = a + 1
d:
sub eax, ecx ;eax = a - b
pop ebp
ret
CalcResult_ endp
end
Он отлично работает, когда спрыгивает на d, но когда нет, просто дает мнеответ 0 вместо 1.