Advertisement
Guest User

Untitled

a guest
Aug 10th, 2012
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; assembly x86 for asmloader(http://gynvael.coldwind.pl/?id=387)
  2. ; Author: Robert Warwas
  3. ; Description:
  4. ; taki sobie kalkulatorek
  5. ;
  6. ;
  7.  
  8. [bits 32]
  9.  
  10. mov ebp, esp ;ramka stosu
  11.  
  12. sub esp, 12 ;odejmujemy 12 bajtów od wskaźnika szczytu stosu(przesuwamy w prawo względem rysunku)
  13.  
  14. ;odejmowanie od stosu jest ezględem samego stosu a nie niższych adresów pamięci
  15.  
  16. ; druga liczba
  17. lea eax, [ebp-12]
  18. push eax
  19.  
  20. ; znak dzialania
  21.  
  22. lea eax, [ebp-8]
  23. push eax
  24.  
  25. ; pierwsza liczba
  26. lea eax, [ebp-4]
  27. push eax
  28.  
  29. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  30.  
  31. call skip_scanf
  32. db "%i %d %i",0
  33. skip_scanf:
  34.  
  35. call [ebx + 4 * 4]
  36.  
  37. add esp, 16
  38.  
  39. mov eax, 0
  40. mov eax, [ebp-8]
  41.  
  42. push ebx ;zapamietujemy na stosie aby moc łatwo przywrócic
  43.  
  44.  
  45. cmp eax, '/'
  46. jz DZIELENIE
  47.  
  48. cmp eax, '*'
  49. jz MNOZENIE
  50.  
  51. cmp eax, '+'
  52. jz DODAWANIE
  53.  
  54. cmp eax, '-'
  55. jz ODEJMOWANIE
  56.  
  57. jmp EXIT
  58.  
  59. DZIELENIE:
  60.  
  61. mov edx, 0
  62. mov eax, [ebp-4] ;zmienna a
  63. mov ebx, [ebp-12] ;zmienna b
  64. div ebx
  65.  
  66. pop ebx
  67.  
  68. add esp,4
  69. jmp WYPISZ_WYNIK
  70.  
  71. MNOZENIE:
  72.  
  73. mov edx, 0
  74. mov eax, [ebp-4] ;zmienna a
  75. mov ebx, [ebp-12] ;zmienna b
  76. mul ebx
  77.  
  78. pop ebx
  79.  
  80. jmp WYPISZ_WYNIK
  81.  
  82. DODAWANIE:
  83.  
  84. mov eax, [ebp-4] ;zmienna a
  85. mov ebx, [ebp-12] ;zmienna b
  86. add eax, ebx
  87.  
  88. pop ebx
  89. jmp WYPISZ_WYNIK
  90.  
  91. ODEJMOWANIE:
  92.  
  93. mov eax, [ebp-4] ;zmienna a
  94. mov ebx, [ebp-12] ;zmienna b
  95. sub eax, ebx
  96.  
  97. pop ebx
  98. jmp WYPISZ_WYNIK
  99.  
  100.  
  101. WYPISZ_WYNIK:
  102.  
  103. push eax
  104. call skip_z
  105. db "wynik: %i", 0
  106. skip_z:
  107. call [ebx + 3 * 4]
  108.  
  109. add esp, 8
  110.  
  111. jmp EXIT
  112.  
  113. ;call skip_wynik
  114. ;db "Wynik: %c EDX = %i ",0
  115. ;skip_wynik:
  116. ;call [ebx + 3 * 4]
  117.  
  118. EXIT:
  119. push 0
  120. call [ebx]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement