Sanady

Assembler

Apr 3rd, 2017
727
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. /* ******************************************************************************** */
  2. /* */
  3. /* Architektura pocitacov - Uloha 2.1 */
  4. /* */
  5. /* Program inkrementuje v assembleri premennu */
  6. /* */
  7. /* Autor: Richard Balogh <[email protected]> */
  8. /* Historia: */
  9. /* 2.3.2006 zakladna verzia funkcna */
  10. /* 6.3.2006 verzia pre oba kompilatory */
  11. /* Prenositelnost: */
  12. /* Zalezi na syntaxi prekladaca! */
  13. /* ******************************************************************************** */
  14.  
  15. #include <stdio.h>
  16.  
  17. static int iCislo1, iCislo2, iVysledok; // Niektore verzie potrebuju globalne premenne
  18.  
  19. int main(int argc, char* argv[])
  20. {
  21. iCislo1 = 27;
  22. iCislo2 = 3;
  23. iVysledok = 0;
  24. printf("\nPrve cislo: %d Druhe cislo: %d Vysledok: %d",iCislo1, iCislo2, iVysledok);
  25.  
  26. #ifdef __GNUC__ // Tato cast sa preklada len v Dev-C++ (gcc)
  27.  
  28. asm(".intel_syntax noprefix \n" // Prepneme z AT&T syntaxe na na Intel
  29.  
  30. "mov eax,_iCislo1 \n" // iCislo -> EAX
  31. "inc eax \n" // EAX ++
  32. "mov _iVysledok,eax \n" // EAX -> iVysledok
  33.  
  34. ".att_syntax \n"); // Dame vsetko do povodneho stavu
  35.  
  36. #elif _MSC_VER // Tato cast sa preklada iba v MS Visual C++
  37.  
  38. __asm { // zaciatok bloku asm
  39. MOV EAX, iCislo1 // do EAX vloz hodnotu premennej iCislo (z pamate)
  40. ADD EAX, iCislo2 // pripocitaj 1
  41. MOV iVysledok,EAX // do premennej iVysledok vloz vysledok z registra EAX
  42. } // koniec bloku asm
  43.  
  44. #endif
  45.  
  46. printf("\nPrve cislo: %d Druhe cislo: %d Vysledok: %d", iCislo1, iCislo2, iVysledok);
  47.  
  48. printf("\n\nStlac ENTER a skoncime...");
  49. scanf("?");
  50. return(0);
  51. }
Advertisement
Add Comment
Please, Sign In to add comment