#include "stdafx.h" #include "stdio.h" static int iCislo, iVysledok,iVysledok1, iCislo2,iCislo3; // Niektore verzie potrebuju globalne premenne int main(int argc, char* argv[]) { int iCislo; int iCislo2; int iCislo3; iVysledok = 0; iVysledok1 = 0; printf("** uloha 2.1 a **\n"); printf("\nzadaj prve cislo\n"); scanf("%d",&iCislo); printf("zadaj druhe cislo\n"); scanf("%d",&iCislo2); #ifdef __GNUC__ // Tato cast sa preklada len v Dev-C++ (gcc) #elif _MSC_VER // Tato cast sa preklada iba v MS Visual C++ __asm { // zaciatok bloku asm MOV EAX, iCislo // do EAX vloz hodnotu premennej iCislo (z pamate) ADD EAX, iCislo2 // pripocita iCislo2 MOV iVysledok,EAX // do premennej iVysledok vloz vysledok z registra EAX } // koniec bloku asm #endif printf("\n%d + %d = %d\n",iCislo,iCislo2,iVysledok); printf("\n** uloha 2.1 b **\n"); printf("\nzadaj cislo ktore bude vynasobene cislom 2\n"); scanf("%d",&iCislo3); __asm { // zaciatok bloku asm MOV EAX, iCislo3 // do EAX vloz hodnotu premennej iCislo (z pamate) SHL EAX, 1 // pripocita iCislo2 MOV iVysledok1,EAX // do premennej iVysledok vloz vysledok z registra EAX } // koniec bloku asm printf("\n%d * 2 = %d",iCislo3,iVysledok1); printf("\n\nStlac ENTER a skoncime..."); scanf("?"); getchar(); getchar(); return(0); }