Advertisement
Guest User

Untitled

a guest
May 21st, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. searchMinesP2:
  2.     push rbp
  3.     mov  rbp, rsp
  4.  
  5.     push rbx
  6.     push rcx
  7.     push rdx
  8.     push r8
  9.     push r9
  10.  
  11.     mov eax, esi
  12.  
  13.     push rsi
  14.  
  15.     mov ebx, 4
  16.  
  17.     mov ecx, [rdi] ;row
  18.     mov edx, [rdi+rbx] ;col
  19.  
  20.     mov ebx, 0 ; a partir d'aquí, ebx farà de la variable "digit"
  21.  
  22.     mov r8d, ecx
  23.     mov r9d, edx    
  24.     mov esi,r8d
  25.     imul esi, DimMatrix
  26.     add esi, r9d
  27.     cmp BYTE[marks+esi], 32
  28.     jne SM_fiCondicioInicial
  29.  
  30.     mov sil, BYTE[mines+esi]
  31.     cmp esi,32
  32.     je SM_CondicioElse
  33.     mov eax, 3
  34.     jmp SM_fiCondicioInicial
  35.  
  36. SM_CondicioElse:
  37.     cmp ecx, 0
  38.     jle SM_condicioLeftCenter
  39.     cmp edx, 0
  40.     jle SM_CondicioUpCenter
  41.    
  42.     ; if (mines[row-1][col-1]=='*'){ Condició upleft
  43.     mov r8d, ecx
  44.     dec r8d
  45.    
  46.     mov r9d, edx
  47.     dec r9d
  48.    
  49.     mov esi,r8d
  50.     imul esi, DimMatrix
  51.     add esi, r9d
  52.     mov sil, BYTE[mines+esi]
  53.     cmp esi, 42
  54.     jne SM_CondicioUpCenter
  55.     inc ebx
  56.  
  57.     SM_CondicioUpCenter: ;condició UpCenter
  58.     mov r8d, ecx
  59.     dec r8d
  60.    
  61.     mov r9d, edx
  62.    
  63.     mov esi,r8d
  64.     imul esi, DimMatrix
  65.     add esi, r9d
  66.     mov sil, BYTE[mines+esi]
  67.     cmp esi, 42
  68.  
  69.     jne SM_CondicioUpRight
  70.     inc ebx
  71.     SM_CondicioUpRight:
  72.     mov esi, DimMatrix
  73.     dec esi
  74.     cmp edx, esi
  75.     jge SM_condicioLeftCenter
  76.  
  77.     ; if (mines[row-1][col+1]=='*')
  78.     mov r8d, ecx
  79.     dec r8d
  80.        
  81.     mov r9d, edx
  82.     inc r9d
  83.    
  84.     mov esi,r8d
  85.     imul esi, DimMatrix
  86.     add esi, r9d
  87.     mov sil, BYTE[mines+esi]
  88.     cmp esi, 42
  89.     jne SM_condicioLeftCenter
  90.    
  91.     inc ebx ;digit+++
  92.  
  93. SM_condicioLeftCenter:
  94.     cmp edx, 0
  95.     jle SM_CondicioRightCenter
  96.  
  97.     ;if (mines[row][col-1]=='*')
  98.     mov r8d, ecx
  99.    
  100.     mov r9d, edx
  101.     dec r9d
  102.    
  103.     mov esi,r8d
  104.     imul esi, DimMatrix
  105.     add esi, r9d
  106.     mov sil, BYTE[mines+esi]
  107.     cmp esi, 42
  108.     jne SM_CondicioRightCenter
  109.  
  110.     ;digit++
  111.     inc ebx
  112.  
  113. SM_CondicioRightCenter:
  114.    ;if (col < DimMatrix-1)
  115.     mov esi, DimMatrix
  116.     dec esi
  117.     cmp edx, esi
  118.     jge SM_CondicioDown
  119.  
  120.     ;if (mines[row][col+1]=='*')
  121.     mov r8d, ecx
  122.    
  123.     mov r9d, edx
  124.     inc r9d
  125.    
  126.     mov esi,r8d
  127.     imul esi, DimMatrix
  128.     add esi, r9d
  129.     mov sil, BYTE[mines+esi]
  130.     cmp esi, 42
  131.     jne SM_CondicioDown
  132.     inc ebx
  133.  
  134. SM_CondicioDown:
  135.    ;if (row < DimMatrix-1)
  136.     mov esi, DimMatrix
  137.     dec esi
  138.     cmp ecx, esi
  139.     jge SM_AssignarDigit
  140.  
  141.     ;if (col > 0)
  142.     cmp edx, 0
  143.     jle SM_CondicioDownCenter
  144.  
  145.     ;condició DownLeft
  146.     mov r8d, ecx
  147.     inc r8d
  148.    
  149.     mov r9d, edx
  150.     dec r9d
  151.    
  152.     mov esi,r8d
  153.     imul esi, DimMatrix
  154.     add esi, r9d
  155.  
  156.     cmp BYTE[mines+esi], 42
  157.     jne SM_CondicioDownCenter
  158.     inc ebx
  159.    
  160.     SM_CondicioDownCenter:
  161.     mov r8d, ecx
  162.     inc r8d
  163.    
  164.     mov r9d, edx
  165.     mov esi,r8d
  166.     imul esi, DimMatrix
  167.     add esi, r9d
  168.    
  169.     cmp BYTE[mines+esi], 42
  170.     jne SM_CondicioDownRight
  171.  
  172.     inc ebx
  173.  
  174.     SM_CondicioDownRight:
  175.    ;if (col < DimMatrix-1)
  176.     mov esi, DimMatrix
  177.     dec esi
  178.     cmp edx, esi
  179.     jge SM_AssignarDigit
  180.  
  181.     mov r8d, ecx
  182.     inc r8d
  183.     mov r9d, edx
  184.     inc r9d
  185.    
  186.     mov esi,r8d
  187.     imul esi, DimMatrix
  188.     add esi, r9d
  189.  
  190.     cmp BYTE[mines+esi], 42
  191.     jne SM_AssignarDigit    
  192.     inc ebx
  193.  
  194. SM_AssignarDigit:
  195.     mov r8d, ecx
  196.     mov r9d, edx    
  197.     mov esi,r8d
  198.     imul esi, DimMatrix
  199.     add esi, r9d
  200.     add ebx, 48
  201.     mov BYTE[marks+esi], bl
  202.  
  203. SM_fiCondicioInicial:
  204.    ;restaurem l'estat de la pila
  205.     pop rsi
  206.     pop r9
  207.     pop r8
  208.     pop rdx
  209.     pop rcx
  210.     pop rbx
  211.  
  212.     mov rsp, rbp
  213.     pop rbp
  214.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement