Facebook
From xxxxx, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 228
  1. ;alg euklidesa
  2. default rel
  3. global main
  4.  
  5. extern printf
  6. extern scanf
  7.  
  8. section .data
  9. format db "%d",10,0
  10. format_stos db "%d",10,0
  11.  
  12. section .text
  13.  
  14. main:
  15.  
  16. push rbp
  17. mov rbp,rsp
  18.  
  19. mov edi,3084
  20. mov esi,1424
  21. call stos
  22.  
  23. call nwd
  24. mov rdi, format
  25. mov esi, eax
  26. xor rax,rax
  27. call printf wrt ..plt
  28.  
  29.  
  30. call stos
  31. mov rsp,rbp
  32. pop rbp
  33. ret          ;zwraca to co w raxie i konczy program
  34.  
  35.  
  36. nwd:
  37. call stos         ;kolejne wywolania rekurencyjne
  38. cmp esi,0
  39. je _zwroc_a
  40. mov eax,edi
  41. xor edx,edx
  42. div esi
  43. mov edi,esi
  44. mov esi,edx           ;reszta dzielenia w edx edi=a esi=b
  45. call nwd
  46.  
  47. _zwroc_a:
  48. mov eax,edi
  49. ret
  50.  
  51. stos:
  52. push rsi
  53. push rdi
  54. mov rdi, format_stos
  55. lea rsi,[rsp+24]
  56. xor rax,rax
  57. call printf wrt ..plt    ;wypisywanie adresu powrotu //rekurencja
  58. pop rdi
  59. pop rsi
  60. ret
  61.  
  62.  //2
  63.  default rel
  64. global main
  65. extern scanf
  66. extern printf
  67.  
  68. section .data
  69.  
  70. zmienna10 dd 10
  71. tab TIMES 100 dd 0
  72. format_wypisz db "wartosc to %d",10,0
  73.  
  74. section .text
  75.  
  76. main:
  77.  
  78. push rbp
  79. mov rbp,rsp
  80.  
  81. mov r12,[tab]
  82. mov r13d,0
  83.  
  84. _petla:
  85.  
  86. cmp r13d,100    ;petla
  87. je _dalej
  88.  
  89. mov eax,r13d    ;wkladam nr iteracji do dzielnika
  90. xor edx,edx    
  91. div dword[zmienna10] ; dziele przez 10
  92. mov r14d,eax    ;wynik przenosze do r14d jest to nr kolumny
  93. mov r15d,edx    ;to jest nr wiersza w kolumnie
  94. add r14d,r15d   ;dodaje nr iteracji i nr kolumny
  95.  
  96. mov [tab+4*r13],r14d
  97.  
  98. inc r13d
  99.  
  100. jmp _petla
  101.  
  102. _dalej:
  103.  
  104. mov r12,[tab]
  105. mov r13d,0
  106.  
  107. _lop:
  108. cmp r13d,100
  109. je _koniec
  110.  
  111. mov rdi,format_wypisz
  112. mov rsi,[tab+r13d*4]
  113. xor rax,rax
  114. call printf wrt ..plt
  115.  
  116. inc r13d
  117.  
  118. jmp _lop
  119.  
  120. _koniec:
  121.  
  122. mov rsp,rbp
  123. pop rbp
  124.  
  125. ret
  126.  //3
  127.  default rel
  128. global main
  129. extern scanf
  130. extern printf
  131.  
  132. section .data
  133.  
  134. format db "%d"
  135. format_wypisz db "najwieksza liczba to %d",10,0
  136.  
  137. tab TIMES 10 DB 0
  138.  
  139. section .text
  140.  
  141. main:
  142.  
  143. push rbp
  144. mov rbp,rsp
  145.  
  146. mov r12,tab
  147. mov r14d,10
  148.  
  149. _petla:
  150.  
  151. cmp r14d,0
  152. je _dalej
  153.  
  154. mov rdi,format
  155. mov rsi,r12
  156. xor rax,rax
  157. call scanf wrt ..plt
  158.  
  159. dec r14d
  160. add r12,4
  161. jmp _petla
  162. _dalej:
  163.  
  164. mov r13d,[tab]
  165. mov r14d,1
  166.  
  167. _lop:
  168.  
  169. cmp r14d,10
  170. je _koniec
  171.  
  172. cmp r13d,[tab+4*r14d] ;porownaj r13d z po prawej
  173. jl _mniejsza; jesli r13d mniejsze skoczz
  174.  
  175. mov r13d,[tab+4*r14d]
  176.  
  177. _mniejsza:
  178. inc r14d
  179.  
  180. jmp _lop
  181.  
  182. _koniec:
  183.  
  184. mov rdi,format_wypisz
  185. mov esi,r13d
  186. xor rax,rax
  187. call printf wrt ..plt
  188.  
  189. mov rsp,rbp
  190. pop rbp
  191.  
  192. ret
  193.  
  194. //4
  195. default rel
  196. global main
  197. extern scanf
  198. extern printf
  199.  
  200. section .data
  201.  
  202. format db "%d"
  203. ;format_wy db "%d",10,0
  204.  
  205. zm dd 0
  206.  
  207. blad db "zla ocena",10,0
  208. dwa db "dwa",10,0
  209. trzy db "trzy",10,0
  210. cztery db "cztery",10,0
  211. piec db "piec",10,0
  212.  
  213. tab dq _blad, _blad, _dwa, _trzy, _cztery, _piec, _blad
  214.  
  215. section .text
  216.  
  217. main:
  218.  
  219. push rbp
  220. mov rbp,rsp
  221.  
  222. mov rdi,format
  223. mov esi,zm
  224. xor rax,rax
  225. call scanf wrt ..plt
  226.  
  227. mov r15d,dword[zm]
  228.  
  229. jmp qword[tab+8*r15d]
  230.  
  231. _blad:
  232.  
  233. mov rdi,blad
  234. xor rax,rax
  235. call printf wrt ..plt
  236.  
  237. jmp _koniec
  238. _dwa:
  239.  
  240. mov rdi,dwa
  241. xor rax,rax
  242. call printf wrt ..plt
  243.  
  244. jmp _koniec
  245. _trzy:
  246.  
  247. mov rdi,trzy
  248. xor rax,rax
  249. call printf wrt ..plt
  250.  
  251. jmp _koniec
  252. _cztery:
  253.  
  254. mov rdi,cztery
  255. xor rax,rax
  256. call printf wrt ..plt
  257.  
  258. jmp _koniec
  259. _piec:
  260.  
  261. mov rdi,piec
  262. xor rax,rax
  263. call printf wrt ..plt
  264.  
  265. _koniec:
  266.  
  267. mov rsp,rbp
  268. pop rbp
  269.  
  270. ret
  271. //5
  272.  
  273. section .text
  274. global zliczcyfry
  275.  
  276. zliczcyfry:
  277.  
  278. push rbp
  279. mov rbp,rsp
  280.  
  281. mov r14d,0
  282.  
  283. _loop:
  284.  
  285. cmp edi,10
  286. jl _koniec
  287.  
  288. mov eax,edi
  289. xor rdx,rdx
  290.  
  291. div dword[liczba10]
  292.  
  293. mov edi,eax
  294. inc r14d
  295.  
  296. jmp _loop
  297.  
  298. _koniec:
  299.  
  300. mov eax,r14d
  301.  
  302. mov rsp,rbp
  303. pop rbp
  304.  
  305. ret
  306.  
  307. section .data
  308.  
  309. liczba10 dd 10
  310. //5 cpp
  311.  
  312. #include <iostream>
  313. #include <cstdlib>
  314.  
  315. using namespace std;
  316.  
  317. extern "C" int zliczcyfry(int a);
  318.  
  319. int main()
  320. {
  321.         int a=19942;
  322.         int wynik = zliczcyfry(a);
  323.        
  324.         cout<<wynik<<endl;
  325.        
  326.         int b = a;
  327.         int licz = 0;
  328.         while(b>10)
  329.         {
  330.                 licz++;
  331.                 b/=10;
  332.         }
  333.         cout<<licz<<" :/"<<endl;
  334.        
  335.        
  336.         return 0;
  337. }
  338.