Advertisement
Guest User

Macierze

a guest
Dec 5th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .686
  2. .model flat
  3.  
  4. public _EvalRowsWeights
  5.  
  6. .data
  7.     szerokosc   EQU 0
  8.     wysokosc    EQU 4
  9.     macierz     EQU 8
  10.     wynik       EQU 12
  11.  
  12. .code
  13.  
  14. _EvalRowsWeights PROC
  15.     push    ebp
  16.     mov     ebp, esp
  17.     push    ecx
  18.     add     ebp, 8
  19.     mov     ebx, [ebp + szerokosc] ; n - szer
  20.     mov     ecx, [ebp + wysokosc] ; m - wys
  21.     mov     esi, [ebp + macierz] ; double* M
  22.     mov     edi, [ebp + wynik] ; double* W
  23.  
  24.     finit
  25.     ;suma kolumny
  26.     mov     edx, [ebp + szerokosc] ; edx - wiersz
  27.    
  28.  
  29.     ptl3: ; petla wierszy
  30.         dec     edx
  31.         mov     esi, [ebp + macierz]
  32.         lea     esi, [esi + edx*8] ; przesuniecie wiersza
  33.         mov     ecx, [ebp + wysokosc]
  34.         fldz
  35.  
  36.         ptl:; suma kolumny
  37.    
  38.             fld     qword ptr [esi]
  39.             faddp   st(1), st(0)
  40.             lea     esi, [esi + ebx*8] ; przesuniecie kolumny
  41.         loop    ptl
  42.  
  43.         mov     ecx, [ebp + wysokosc] ; wracam na poczatek kolumn
  44.         mov     esi, [ebp + macierz]
  45.         lea     esi, [esi + edx*8]
  46.  
  47.         ptl2:
  48.             fld     qword ptr [esi]
  49.             fdiv    st(0), st(1)
  50.             fstp    qword ptr [esi]
  51.             lea     esi, [esi + ebx*8]
  52.         loop    ptl2
  53.         fstp st(0)
  54.     cmp     edx, 0
  55.     jne     ptl3
  56.  
  57.  
  58.     mov     ecx, [ebp + wysokosc]
  59.     mov     esi, [ebp + macierz]
  60.     kolejnyWiersz:
  61.         dec     ecx
  62.         fldz
  63.         mov     ebx, [ebp + szerokosc]
  64.         kolejnaKolumna:
  65.             dec     ebx
  66.             fadd    qword ptr [esi]
  67.  
  68.             lea     esi, [esi + 8]
  69.             cmp     ebx, 0; czy szerokosc = 0
  70.         jne     kolejnakolumna
  71.         fidiv   dword ptr [ebp+szerokosc]
  72.         fstp    qword ptr [edi]
  73.         lea     edi, [edi+8]
  74.  
  75.         cmp     ecx, 0 ; czy wysokosc = 0
  76.     jne     kolejnyWiersz
  77.    
  78.     pop     ecx
  79.     pop     ebp
  80.     ret
  81. _EvalRowsWeights ENDP
  82. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement