Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ******************************************************************************** */
- /* */
- /* Architektura pocitacov - Uloha 2.1 */
- /* */
- /* Program inkrementuje v assembleri premennu */
- /* */
- /* Autor: Richard Balogh <[email protected]> */
- /* Historia: */
- /* 2.3.2006 zakladna verzia funkcna */
- /* 6.3.2006 verzia pre oba kompilatory */
- /* Prenositelnost: */
- /* Zalezi na syntaxi prekladaca! */
- /* ******************************************************************************** */
- #include <stdio.h>
- static int iCislo1, iCislo2, iVysledok; // Niektore verzie potrebuju globalne premenne
- int main(int argc, char* argv[])
- {
- iCislo1 = 27;
- iCislo2 = 3;
- iVysledok = 0;
- printf("\nPrve cislo: %d Druhe cislo: %d Vysledok: %d",iCislo1, iCislo2, iVysledok);
- #ifdef __GNUC__ // Tato cast sa preklada len v Dev-C++ (gcc)
- asm(".intel_syntax noprefix \n" // Prepneme z AT&T syntaxe na na Intel
- "mov eax,_iCislo1 \n" // iCislo -> EAX
- "inc eax \n" // EAX ++
- "mov _iVysledok,eax \n" // EAX -> iVysledok
- ".att_syntax \n"); // Dame vsetko do povodneho stavu
- #elif _MSC_VER // Tato cast sa preklada iba v MS Visual C++
- __asm { // zaciatok bloku asm
- MOV EAX, iCislo1 // do EAX vloz hodnotu premennej iCislo (z pamate)
- ADD EAX, iCislo2 // pripocitaj 1
- MOV iVysledok,EAX // do premennej iVysledok vloz vysledok z registra EAX
- } // koniec bloku asm
- #endif
- printf("\nPrve cislo: %d Druhe cislo: %d Vysledok: %d", iCislo1, iCislo2, iVysledok);
- printf("\n\nStlac ENTER a skoncime...");
- scanf("?");
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment