Intel x86汇编代码 - Int未正确添加

时间:2014-11-14 13:16:34

标签: assembly x86 intel addition

我正在构建一个简单的程序,它接收用户数字并打印数字的总和。唯一的问题是总和总是一个非常大的数字,甚至不接近输入的数字。谁能发现问题?添加发生在积极的功能!谢谢,詹姆斯

int main(void)
{
    char welcome[] = "Comp 103 Assignment 1 - James Austin\n\n";
    char loopNum[] = "How many times would you like to loop? ";
    char get1[] = "Enter a number: ";
    char posTotal[] = "\nPositive Total: ";
    char negTotal[] = "\nNegative Total: ";
    char format[] = "%d";
    char printFormat[] = "\n%d";

    int first;
    int j;
    int posAmount = 0;
    int negAmount = 0;

    _asm{   lea eax,welcome
            push eax
            call printf
            add esp,4

            lea eax, loopNum
            push eax
            call printf
            add esp,4 

            lea eax,first
            push eax
            lea eax,format
            push eax
            call scanf_s
            add esp,8

            mov ecx, first
        Lj: push ecx
            lea eax, get1
            push eax
            call printf
            add esp, 4

            lea eax, j
            push eax
            lea eax, format
            push eax
            call scanf_s
            add esp, 8

            cmp first,0
            jg positive
            jl negative
    backin : pop ecx
            loop Lj

            lea eax, posTotal
            push eax
            call printf
            add esp, 4

            lea eax, posAmount
            push eax
            lea eax, format
            push eax
            call printf
            add esp, 8

            lea eax, negTotal
            push eax
            call printf
            add esp, 4

            lea eax, negAmount
            push eax
            lea eax, format
            push eax
            call printf
            add esp, 8

            jmp finish

   positive : mov eax, posAmount
            add eax, j
            mov posAmount, eax
            jmp backin

   negative : mov eax, negAmount
            add eax, first
            mov negAmount, eax
            jmp backin
            finish :
    }
    return 0;
}

0 个答案:

没有答案