x86 Сборка выводится неправильно? - PullRequest
0 голосов
/ 18 октября 2018

Я новичок в ассемблере и не могу понять, почему именно это не работает правильно.Он основан на

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...