Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- searchMinesP2:
- push rbp
- mov rbp, rsp
- push rbx
- push rcx
- push rdx
- push r8
- push r9
- mov eax, esi
- push rsi
- mov ebx, 4
- mov ecx, [rdi] ;row
- mov edx, [rdi+rbx] ;col
- mov ebx, 0 ; a partir d'aquí, ebx farà de la variable "digit"
- mov r8d, ecx
- mov r9d, edx
- mov esi,r8d
- imul esi, DimMatrix
- add esi, r9d
- cmp BYTE[marks+esi], 32
- jne SM_fiCondicioInicial
- mov sil, BYTE[mines+esi]
- cmp esi,32
- je SM_CondicioElse
- mov eax, 3
- jmp SM_fiCondicioInicial
- SM_CondicioElse:
- cmp ecx, 0
- jle SM_condicioLeftCenter
- cmp edx, 0
- jle SM_CondicioUpCenter
- ; if (mines[row-1][col-1]=='*'){ Condició upleft
- mov r8d, ecx
- dec r8d
- mov r9d, edx
- dec r9d
- mov esi,r8d
- imul esi, DimMatrix
- add esi, r9d
- mov sil, BYTE[mines+esi]
- cmp esi, 42
- jne SM_CondicioUpCenter
- inc ebx
- SM_CondicioUpCenter: ;condició UpCenter
- mov r8d, ecx
- dec r8d
- mov r9d, edx
- mov esi,r8d
- imul esi, DimMatrix
- add esi, r9d
- mov sil, BYTE[mines+esi]
- cmp esi, 42
- jne SM_CondicioUpRight
- inc ebx
- SM_CondicioUpRight:
- mov esi, DimMatrix
- dec esi
- cmp edx, esi
- jge SM_condicioLeftCenter
- ; if (mines[row-1][col+1]=='*')
- mov r8d, ecx
- dec r8d
- mov r9d, edx
- inc r9d
- mov esi,r8d
- imul esi, DimMatrix
- add esi, r9d
- mov sil, BYTE[mines+esi]
- cmp esi, 42
- jne SM_condicioLeftCenter
- inc ebx ;digit+++
- SM_condicioLeftCenter:
- cmp edx, 0
- jle SM_CondicioRightCenter
- ;if (mines[row][col-1]=='*')
- mov r8d, ecx
- mov r9d, edx
- dec r9d
- mov esi,r8d
- imul esi, DimMatrix
- add esi, r9d
- mov sil, BYTE[mines+esi]
- cmp esi, 42
- jne SM_CondicioRightCenter
- ;digit++
- inc ebx
- SM_CondicioRightCenter:
- ;if (col < DimMatrix-1)
- mov esi, DimMatrix
- dec esi
- cmp edx, esi
- jge SM_CondicioDown
- ;if (mines[row][col+1]=='*')
- mov r8d, ecx
- mov r9d, edx
- inc r9d
- mov esi,r8d
- imul esi, DimMatrix
- add esi, r9d
- mov sil, BYTE[mines+esi]
- cmp esi, 42
- jne SM_CondicioDown
- inc ebx
- SM_CondicioDown:
- ;if (row < DimMatrix-1)
- mov esi, DimMatrix
- dec esi
- cmp ecx, esi
- jge SM_AssignarDigit
- ;if (col > 0)
- cmp edx, 0
- jle SM_CondicioDownCenter
- ;condició DownLeft
- mov r8d, ecx
- inc r8d
- mov r9d, edx
- dec r9d
- mov esi,r8d
- imul esi, DimMatrix
- add esi, r9d
- cmp BYTE[mines+esi], 42
- jne SM_CondicioDownCenter
- inc ebx
- SM_CondicioDownCenter:
- mov r8d, ecx
- inc r8d
- mov r9d, edx
- mov esi,r8d
- imul esi, DimMatrix
- add esi, r9d
- cmp BYTE[mines+esi], 42
- jne SM_CondicioDownRight
- inc ebx
- SM_CondicioDownRight:
- ;if (col < DimMatrix-1)
- mov esi, DimMatrix
- dec esi
- cmp edx, esi
- jge SM_AssignarDigit
- mov r8d, ecx
- inc r8d
- mov r9d, edx
- inc r9d
- mov esi,r8d
- imul esi, DimMatrix
- add esi, r9d
- cmp BYTE[mines+esi], 42
- jne SM_AssignarDigit
- inc ebx
- SM_AssignarDigit:
- mov r8d, ecx
- mov r9d, edx
- mov esi,r8d
- imul esi, DimMatrix
- add esi, r9d
- add ebx, 48
- mov BYTE[marks+esi], bl
- SM_fiCondicioInicial:
- ;restaurem l'estat de la pila
- pop rsi
- pop r9
- pop r8
- pop rdx
- pop rcx
- pop rbx
- mov rsp, rbp
- pop rbp
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement