#include <stdio.h>
#define OPT //define for assembly
int main()
{
char chr;
for(chr = 'A' ; chr <= 'Z' ; chr++)
{
#ifdef OPT
__asm
{
lea eax,chr
push eax
mov eax, putchar
call eax
pop ebx
}
#endif
#ifndef OPT
putchar(chr);
#endif
}
return 0;
}
При использовании кода сборки все, что происходит, - это случайный символ мусора. Обратите внимание, что это синтаксис intel.C/C++ Встроенная сборка [с петлями C]
также: Я учусь ассемблерные, как бы вы захватить возвращаемое значение вызываемой функции (через MOV EAX, FUNC затем вызвать EAX или эквив?)
Что не так с помощью 'call putchar'? – TonyK
TonyK, вы не можете вызвать putchar, потому что putchar - это переменная. Я думаю, что это в основном для целей отладки и может быть включено или выключено в настройках компилятора C. –
@ Aleš Keprt: Это новое на меня! – TonyK