Программа сборки не распознает _getchar - PullRequest
0 голосов
/ 13 февраля 2019

Я написал программу на ассемблере, которая должна получить некоторые значения от пользователя, а затем выполнить некоторые суммы.Однако используемая мной визуальная студия 2017 не распознает метод the_getchar

Я исследовал множество различных способов приема входных данных, но это, похоже, лучший вариант.система просто не примет методы _getchar

.586                            ;Enables assembly on non Priiliged intructions for the prntium processor
.model flat ,c                  ;model=Initialises the program memory mode, flat=Identifies the size of code and data pointers and 
                            ;c=  identifies the naming and calling coventions
.stack 100h
.data                           ; This section will contain all of the static variables for our program
foo dd 0                    ;Variable to be used to store into meory
.code                           ; Assembly code will be placed here

multi proc                      ; Start of the doit process. Like a method in C#. Method is called 
                            ;in the visual studio form Source
push   esi                   ; \ preserve
push   ebx                   ; |  callee-preserve
push   edi                   ; / registers

call   _getchar              ; read input; return result in EAX
mov    esi, eax              ; ESI = EAX
sub    esi, 48               ; ESI -= '0'

call   _getchar              ; read input; return result in EAX
mov    ebx, eax              ; EBX = EAX
sub    ebx, 48               ; EBX -= '0'

call   _getchar              ; read input; return result in EAX
mov    edi, eax              ; EDI = EAX
sub    edi, 48               ; EDI -= '0'

call   _getchar              ; read input; return result in EAX
mov    edx, eax              ; EDX = EAX
sub    edx, 48               ; EDX -= '0'

mov    ecx, edi              ; ECX = EDI
mov    eax, esi              ; EAX = ESI

add    eax, ebx              ; EAX += EBX
add    eax, edx              ; EAX += EDX
sub    eax, ecx              ; EAX -= ECX
mul    ebx                   ; EDX:EAX = EAX * EBX
mov    [foo], eax            ; *foo = EAX

pop    edi                   ; \ restore
pop    ebx                   ; |  callee-preserve
pop    esi                   ; /  registers

ret
multi endp                      ; End of the doit method

end                             ;End of program

, и это мой код, который я использую для запуска сборки

#include <iostream>

extern "C" int multi();

void main()
{
    printf("%d%",multi());
    std:getchar();
}

Я просто хочу, чтобы программа принимала ввод отпользователь.Я сделаю проверку на последнем этапе.Есть ли причина, по которой он не принимает _getchar?

код ошибки: My error. Image was the easiest way to show

...