RE:Manejo de Emulador 8086
Publicado por
carmen (1 intervención) el 11/10/2009 00:21:49
algo asi?? en masm
.MODEL LARGE
.STACK
.DATA
MEN1 DB " PROGRAMAS",10,10,13
DB " 1) VENTANAS",10,13
DB " 2) CONTADOR",10,13
DB " 3) CURSOR",10,13
DB " 4) BANDERAS",10,13
DB " 5) SALIR$"
MEN2 DB " VENTANA",10,10,13
DB " A) AZUL",10,13
DB " B) BLANCO",10,13
DB " R) ROJO",10,13
DB " V) VERDE",10,13
DB " M) MENU$"
MEN3 DB " CONTADOR",10,10,13
DB " INGRESE MODULO",10,10,13
DB " I) INICIAR",10,13
DB " R) RESET",10,13
DB " M) MENU$"
MEN4 DB " CONTADOR",10,10,13
DB " P) PARAR",10,13
DB " C) CONTINUAR",10,13
DB " M) MENU$"
MEN5 DB " W=ARRIBA",10,13
DB " A=IZQUIERDA",10,13
DB " S=ABAJO",10,13
DB " D=DERECHA",10,13
DB " M) MENU$"
MEN6 DB" BANDERAS",10,10,13
DB " 1) PERU",10,13
DB " 2) ARGENTINA",10,13
DB " 3) BOLIVIA",10,13
DB " 4) JAPON",10,13
DB " M) MENU$"
PIXEL DB "$"
x DB ? ;ARRIBA-ABAJO
Y DB ? ;IZQ-DER
Z DB ?
U DB ?
.CODE
.STARTUP
INICIO:
CALL FONDON
CALL CURSOR1
MOV AH,9
LEA DX,MEN1
INT 21H
A1:
MOV AH,6
MOV DL,255
INT 21H
CMP AL,"1"
JE VENTANAS
CMP AL,"2"
JE CONTADOR
CMP AL,"3"
JE CURSORX
CMP AL,"4"
JE BANDERAS
CMP AL,"5"
JE SALIR
JMP A1
VENTANAS:
CALL FONDON
VENTANAS1:
CALL CURSOR
MOV AH,9
LEA DX,MEN2
INT 21H
B1: MOV AH,6
MOV DL,255
INT 21H
CMP AL,"A"
JE AZUL
CMP AL,"B"
JE BLANCO
CMP AL,"R"
JE ROJO
CMP AL,"V"
JE VERDE
CMP AL,"M"
JE INICIO
JMP B1
AZUL: MOV X,10H
JMP X1
BLANCO: MOV X,70H
JMP X1
VERDE: MOV X,20H
JMP X1
ROJO: MOV X,40H
JMP X1
X1: MOV AX,0600H
MOV BH,X
MOV CH,7
MOV CL,0
MOV DH,24
MOV DL,79
INT 10H
JMP VENTANAS1
CURSORX:
CALL FONDON
CALL CURSOR
MOV AH,9
LEA DX,MEN5
INT 21H
MOV X,5
MOV Y,0
INICIOX:
CALL FONDOP
CALL CURSORP
MOV AH,9
LEA DX,PIXEL
INT 21H
C1: MOV AH,6
MOV DL,255
INT 21H
CMP AL,"W"
JE ARR
CMP AL,"S"
JE ABA
CMP AL,"A"
JE IZQ
CMP AL,"D"
JE DER
CMP AL,"M"
JE INICIO
JMP C1
ARR: CMP X,6
JL INICIOX
DEC X
JMP INICIOX
ABA: CMP X,23
JG INICIOX
INC X
JMP INICIOX
IZQ: CMP Y,1
JL INICIOX
DEC Y
JMP INICIOX
DER: CMP Y,78
JG INICIOX
INC Y
JMP INICIOX
CONTADOR:
RESET: CALL FONDON
CALL CURSOR
MOV AH,9
LEA DX,MEN3
INT 21H
E1: MOV AH,6
MOV DL,255
INT 21H
CMP AL,"M"
JE INICIO
CMP AL,31H
JB E1
CMP AL,39H
JA E1
MOV Z,AL ;LIMITE
CALL CURSORC
CALL SALIDA
F1: MOV AH,6
MOV DL,255
INT 21H
CMP AL,"I"
JE INIC
CMP AL,"R"
JE RESET
CMP AL,"M"
JE INICIO
JMP F1
INIC:
CALL FONDON
CALL CURSOR
MOV AH,9
LEA DX,MEN4
INT 21H
Z1: MOV U,30H
Z2: CALL CURSORCC
MOV AL,U
CALL SALIDA
CALL DELAY
MOV AH,6
MOV DL,255
INT 21H
CMP AL,"P"
JE PARAR
CMP AL,"M"
JE CONTADOR
CONT: INC U
MOV AL,U
CMP AL,Z
JE Z1
JMP Z2
PARAR:
MOV AH,6
MOV DL,255
INT 21H
CMP AL,"C"
JE CONT
CMP AL,"M"
JE CONTADOR
JMP PARAR
BANDERAS:
CALL FONDON
BANDERAX:
CALL FONDOB
CALL CURSOR
MOV AH,9
LEA DX,MEN6
INT 21H
D1: MOV AH,6
MOV DL,255
INT 21H
CMP AL,"1"
JE PERU
CMP AL,"2"
JE ARGENTINA
CMP AL,"3"
JE BOLIVIA
CMP AL,"4"
JE JAPON
CMP AL,"M"
JE INICIO
JMP D1
PERU:
MOV AX,0600H
MOV BH,42H
MOV CX,0
MOV DX,184FH
INT 10H
MOV AX,0600H
MOV BH,70H
MOV CH,0
MOV CL,26
MOV DH,24
MOV DL,53
INT 10H
JMP BANDERAX
ARGENTINA:
MOV AX,0600H
MOV BH,30H
MOV CX,0
MOV DX,184FH
INT 10H
MOV AX,0600H
MOV BH,70H
MOV CH,13
MOV CL,0
MOV DH,18
MOV DL,79
INT 10H
JMP BANDERAX
BOLIVIA:
MOV AX,0600H
MOV BH,20H
MOV CX,0
MOV DX,184FH
INT 10H
MOV AX,0600H
MOV BH,70H
MOV CH,0
MOV CL,26
MOV DH,24
MOV DL,53
INT 10H
JMP BANDERAX
JAPON:
MOV AX,0600H
MOV BH,70H
MOV CX,0
MOV DX,184FH
INT 10H
JMP BANDERAX
SALIR:
.EXIT
PANTALLA:
MOV AX,0600H
MOV BH,X
MOV CX,0
MOV DX,184FH
INT 10H
RET
CURSOR1:
MOV AH,2
MOV BH,0
MOV DH,8
MOV DL,0
INT 10H
RET
CURSOR:
MOV AH,2
MOV BH,0
MOV DH,0
MOV DL,0
INT 10H
RET
DELAY: PUSH CX
MOV CX,3000
T2: PUSH CX
MOV CX,65535
T1: LOOP T1
POP CX
LOOP T2
POP CX
RET
FONDON:
MOV AX,0600H
MOV BH,07H
MOV CX,0
MOV DX,184FH
INT 10H
RET
CURSORP:
MOV AH,2
MOV BH,0
MOV DH,X
MOV DL,Y
INT 10H
RET
FONDOP:
MOV AX,0600H
MOV BH,07H
MOV CH,5
MOV CL,0
MOV DH,24
MOV DL,79
INT 10H
RET
FONDOB:
MOV AX,0600H
MOV BH,07H
MOV CH,0
MOV CL,0
MOV DH,6
MOV DL,79
INT 10H
RET
SALIDA:
MOV AH,2
MOV DL,AL
INT 21H
RET
CURSORC:
MOV AH,2
MOV BH,0
MOV DH,2
MOV DL,20
INT 10H
RET
CURSORCC:
MOV AH,2
MOV BH,0
MOV DH,6
MOV DL,15
INT 10H
RET
END