Campo minado em assembly
.MODEL SMALL
.STACK 100h
.DATA
MAT DB 25 DUP(254) MAT1 DB 25 DUP("0") MAT2 DB 25 DUP('X') MAT3 DB 25 DUP(254) VET DB "A B C D E$" MSG1 DB "Digite a coordenada que deseja colocar bomba:$" MSG2 DB "Caracter estranho,Tente novamente!$" MSG3 DB "Digite a coordenada que acha que eh livre de bomba:$" MSG4 DB "VOCE PERDEU!$" MSG5 DB "VOCE GANHOU!$" .CODE
PROC COMPARABX ;COMPARA BX E PULA PARA INCREMENTAÇAO NO VETOR CMP BX,0 JE SUPESQ
CMP BX,4 JE SUPDIR
CMP BX,20 JE INFESQ CMP BX,24 JE INFDIR CMP BX,3 JBE INCLINHA1 CMP BX,5 JE COLUNA1E5 CMP BX,10 JE COLUNA1E10 CMP BX,15 JE COLUNA1E15 CMP BX,9 JE COLUNA5E9 CMP BX,14 JE COLUNA5E14 CMP BX,19 JE COLUNA5E19 CMP BX,21 JNBE MAIORQUE20 ;INICIO DE PROCEDIMENTOS PARA INCREMENTAR O VETOR CALL INCMEIODETODOS JMP FIM
MAIORQUE20:
CALL INCREMENTALINHA5 JMP FIM
SUPESQ:
CALL INCREMENTASUPESQ JMP FIM
SUPDIR:
CALL INCREMENTASUPDIR JMP FIM
INFESQ:
CALL INCREMENTAINFESQ JMP FIM
INFDIR:
CALL INCREMENTAINFDIR JMP FIM
INCLINHA1:
CALL INCREMENTALINHA1 JMP FIM
COLUNA1E5:
CALL INCREMENTACOLUNA1 JMP FIM
COLUNA1E10:
CALL INCREMENTACOLUNA1 JMP FIM
COLUNA1E15:
CALL INCREMENTACOLUNA1 JMP FIM
COLUNA5E9:
CALL INCREMENTACOLUNA5 JMP FIM
COLUNA5E14:
CALL INCREMENTACOLUNA5 JMP FIM
COLUNA5E19:
CALL INCREMENTACOLUNA5 JMP FIM
FIM: RET
COMPARABX ENDP
PROC INCMEIODETODOS ;INCREMENTANDO NUMEROS NO MEIO DO CAMPO E VERIFICANDO SE TEM BOMBA MOV AL,MAT1[BX-6] CMP AL,207 JE A INC AL MOV MAT1[BX-6],AL JMP A1
A: MOV MAT1[BX-6],207
A1: MOV AL,MAT1[BX-5] CMP AL,207 JE B INC AL MOV MAT1[BX-5],AL JMP B1
B: MOV MAT1[BX-5],207
B1: MOV AL,MAT1[BX-4] CMP AL,207 JE C INC AL MOV MAT1[BX-4],AL JMP C1
C: MOV MAT1[BX-4],207
C1: MOV AL,MAT1[BX-1] CMP AL,207 JE D INC AL