codice:
;descrizione del problema
dati segment
mess db " トトトトトトトトトトソ"
mess1 db " ウ"
mess2 db " トソ レトトトトトル"
mess3 db " ウ ウ "
mess4 db " レトル タトトソ "
mess5 db " タトソ レトトル "
Riga db ?
Colonna db ?
dati ends
sistema segment stack
dw 100 dup(?)
top label word
sistema ends
codice segment
assume cs:codice, ss:sistema, ds:dati, es:dati
inizio:
mov ax,sistema
mov ss,ax
lea ax,top
mov sp,ax
mov ax,dati
mov ds,ax
mov es,ax
;programma
;azzera schermo
mov ah,06
mov al,0
mov bh,0
mov ch,0
mov cl,0
mov dh,24
mov dl,79
int 10h
;posizionamento cursore
mov Riga,10
mov Colonna,20
call viscurs
;visualizzazione labirinto
lea bp,mess
call vis
inc Riga
call viscurs
lea bp,mess1
call vis
inc Riga
call viscurs
lea bp,mess2
call vis
inc Riga
call viscurs
lea bp,mess3
call vis
inc Riga
call viscurs
lea bp,mess4
call vis
inc Riga
call viscurs
lea bp,mess5
call vis
;visualizzazione faccina
mov riga,11
mov colonna,20
call viscurs
mov al,""
call faccina
CICLO:
pop cx
push cx
loop ciclo
call muovi
alto: mov al," "
dec riga
call viscurs
cmp al," "
je sposta
inc riga
call viscurs
jmp CICLO
sposta:
inc riga
call canc
dec riga
call faccina
jmp CICLO
destra:
inc colonna
call viscurs
cmp al," "
je sposta1
dec colonna
call viscurs
jmp CICLO
sposta1:
dec colonna
call canc
inc colonna
call faccina
jmp CICLO
sinistra:
dec colonna
call viscurs
cmp al," "
je sposta2
inc colonna
call viscurs
jmp CICLO
sposta2:
inc colonna
call canc
dec colonna
call faccina
jmp CICLO
basso:
inc riga
call viscurs
cmp al," "
je sposta3
dec riga
call viscurs
jmp CICLO
sposta3:
dec riga
call canc
inc riga
call faccina
jmp CICLO
;ritorno al dos
mov al,00h
mov ah,4ch
int 21h
vis proc
mov ax,ds
mov es,ax
mov ah,13h
mov al,01h
mov bh,0
mov bl,2h
mov cx,13
mov dh,Riga
mov dl,Colonna
int 10h
ret
endp
viscurs proc
mov ah,02
mov bh,0
mov dh,Riga
mov dl,Colonna
int 10h
ret
endp
faccina proc
mov ah,09
mov bh,0
mov bl,48h
mov cx,1
int 10h
ret
endp
muovi proc
mov ah,0
int 16h
je alto
cmp ah,80d
je basso
cmp ah,75d
je destra
cmp ah,72d
je sinistra
cmp ah,77d
jmp muovi
ret
endp
canc proc
mov ah,02
mov bh,0
mov dh,riga
mov dl,colonna
int 10h
mov al,09h
mov al," "
mov bh,0
mov bl,00001111b
mov cx,1
int 10h
ret
endp
codice ends
end inizio