Advertisement
Guest User

Untitled

a guest
Jan 15th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. SECTION .data  ; /* contains initialized data */
  2. a   DD  4,1,4,2,4,3,4,5     ; int a[][2] = { {4,1}, {4,2}, {4,3}, {4,5} };
  3. i   DD  2                   ; int i = 2;
  4. SECTION .bss                ; /* contains uninitialized data */
  5. b RESD 1                    ; int b;
  6. rslt RESD 1                 ; int rslt;
  7. SECTION .text               ; /* contains code
  8.  
  9. GLOBAL _start  ;
  10.  
  11. _start:                                 ; void main(void){
  12.         nop                             ; /* do not remove the "nop" */
  13.         mov ecx, [i]                    ; /* i -> ecx Zaehlervariable inner Loop */
  14.         sub ebx, ebx                    ; for ( b = 0; /* ebx Zaehlervariable outer Loop */
  15. outer:  cmp ebx, 4                      ;       b < 4; ++b) /* inkrement folgt spaeter */
  16.         jge endOuter                            ;      
  17.         jecxz outer2                    ; /* falls i = 0, ueberspringe innere Scheleife */
  18.  
  19. inner:  mov [i], ecx                    ;
  20.         mov edx, ebx                    ; /* Speicherabbildungsfunktion - benutzte edx um ebx  nicht zu überschreiben*/
  21.         shl edx, 1                      ; b *= 2;
  22.         add edx, [i]                    ; b += i;
  23.         add eax, [cs:a+edx*4]   ; rslt += a[b][i];
  24.                                         ; /*a=Anfangsadresse, ebx=Zeile, 2=Spalten, ecx=Spalte, 4=Byte pro Element */
  25.         loopnz inner                    ; /* loope solange ecx (i) != 0 ist */
  26.  
  27. outer2: mov ecx, 2                      ; i = 2;
  28.         inc ebx                         ; b++;
  29.         jmp outer                       ;
  30.  
  31. endOuter: mov [rslt], eax               ; /* Zuletzt wird eax in der rslt Variable gespeichert */
  32.                ; return 0;
  33. end:mov eax, 1 ; /* the exit system call
  34.     mov ebx, 0 ;    no errorcode
  35.     int 80h    ;    execute system call */
  36.                ; }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement