MEXICO, AYUDA POR FAVOR
NECESITO ENTREGAR 2 PROGRAMAS CON APLICACION EN ENSAMBLADOR Y FALTE 1 MES AL CURSO POR ENFERMEDAD NO SE QUE HACER ALGUIEN ME PUEDE MANDAR 2 PROGRAMAS EN ENSAMBLADOR QUE HAGAN ALGO APLICABLE.
MIL GRACIAS
MIL GRACIAS
espero te sirvan:
el primer programa es una calculadora:
MODEL SMALL
.DATA
ERROR DB '...SIGNO DESCONOCIDO, INTENTA DE NUEVO','$'
OPERA1 DB 'INTRODUZCA EL PRIMER OPERADOR: ','$'
OPERA2 DB 'INTRODUZCA EL SEGUNDO OPERADOR: ','$'
OPERAC DB 'OPERACION A REALIZAR: ','$'
ERRDIG DB '...OPERADOR EXEDE DE 4 DIGITOS,INTENTA DE NUEVO','$'
RESULT DB 'RESULTADO: ','$'
MENU DB 10,13,09,'+',10,13,09,'-',10,13,09,'*',10,13,09,'/',10,13,'$'
DIGITOS DB 7,?,7 DUP('$'),'$'
SIGNO DB 3,?,3 DUP('0'),'$'
BASE DW 1
CAMB DW 0
EXCH DW ?
.CODE
CALCULA PROC NEAR
MOV AX,@DATA
MOV DS,AX
CALL CLEAR
PROC1: CALL UBICA1
MOV AH,09H
LEA DX,OPERA1
INT 21H
MOV AH,0AH
LEA DX,DIGITOS
INT 21H
CMP DIGITOS[1],06H
JAE MAL1
CMP DIGITOS[2],2DH
JNE PROC4
MOV SIGNO[2],01H
JMP PROC4
MAL1: CALL UBICA6
MOV AH,09H
LEA DX,ERRDIG
INT 21H
JMP PROC1
PROC4: CALL BINARIO
MOV AX,CAMB
MOV EXCH,AX
PROC2: CALL UBICA2
MOV AH,09H
LEA DX,OPERA2
INT 21H
MOV AH,0AH
LEA DX,DIGITOS
INT 21H
CMP DIGITOS[1],06H
JAE MAL2
CMP DIGITOS[2],2DH
JNE PROC5
MOV SIGNO[3],01H
JMP PROC5
MAL2: CALL UBICA5
MOV AH,09H
LEA DX,ERRDIG
INT 21H
JMP PROC2
PROC5: MOV CAMB,0000H
CALL BINARIO
INIC: CALL UBICA3
MOV AH,09H
LEA DX,OPERAC
INT 21H
CALL SALIDA
MOV AH,02H
MOV DL,AL
INT 21H
MOV SI,0003H
MOV CX,04H
INIC2: CMP AL,MENU[SI]
JE INIC1
ADD SI,0004H
LOOP INIC2
MOV AH,09H
LEA DX,ERROR
INT 21H
JMP INIC
INIC1: CMP AL,2BH
JNE OPERAC1
CMP SIGNO[2],01H
JNE SIGNO1
NEG EXCH
SIGNO1: CMP SIGNO[3],01H
JNE SIGNO2
NEG CAMB
SIGNO2: MOV AX,EXCH
ADD AX,CAMB
JNS SIGNO3
NEG AX
MOV SIGNO[4],01H
JNC SIGNO3
MOV DIGITOS[3],1
SIGNO3: CALL ASCII
CALL RESULTA
JMP FINAL1
OPERAC1: CMP AL,2DH
JNE OPERAC2
CMP SIGNO[2],01H
JNE RE1
NEG EXCH
RE1: CMP SIGNO[3],01H
JNE RE2
NEG CAMB
RE2: MOV AX,EXCH
SUB AX,CAMB
JNS RE3
NEG AX
MOV SIGNO[4],01H
JNC RE3
MOV DIGITOS[3],1
RE3: CALL ASCII
CALL RESULTA
JMP FINAL1
OPERAC2: CMP AL,2AH
JNE OPERAC3
CMP SIGNO[2],01H
JNE SELEC1
MOV SIGNO[4],01H
SELEC1: CMP SIGNO[3],01H
JNE SELEC2
MOV DL,SIGNO[3]
CMP SIGNO[4],DL
JE SELEC3
MOV SIGNO[4],01H
JMP SELEC2
SELEC3: MOV SIGNO[4],00H
SELEC2: MOV AX,EXCH
MUL CAMB
SELEC4: CALL ASCII
CALL RESULTA
JMP FINAL1
OPERAC3: CMP AL,2FH
JNE FINAL1
CMP SIGNO[2],01H
JNE DETER1
MOV SIGNO[4],01H
DETER1: CMP SIGNO[3],01H
JNE DETER2
MOV DL,SIGNO[3]
CMP SIGNO[4],DL
JE DETER3
MOV SIGNO[4],01H
JMP DETER2
DETER3: MOV SIGNO[4],00H
DETER2: MOV AX,EXCH
XOR DX,DX
DIV CAMB
DETER4: CALL ASCII
CALL RESULTA
JMP FINAL1
FINAL1: CALL SALIDA
MOV AX,4C00H
INT 21H
CALCULA ENDP
CLEAR PROC NEAR
MOV AX,0600H
MOV BX,1A00H
MOV CX,0000
MOV DX,184FH
INT 10H
RET
CLEAR ENDP
UBICA1 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,0606H
INT 10H
RET
UBICA1 ENDP
UBICA2 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,0806H
INT 10H
RET
UBICA2 ENDP
UBICA3 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,0A06H
INT 10H
RET
UBICA3 ENDP
UBICA4 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,1010H
INT 10H
RET
UBICA4 ENDP
UBICA5 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,1106H
INT 10H
RET
UBICA5 ENDP
UBICA6 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,1206H
INT 10H
RET
UBICA6 ENDP
BINARIO PROC NEAR
MOV BX,10
MOV CH,00H
MOV CL,DIGITOS[1]
MOV DI,CX
INC DI
CMP DIGITOS[2],2DH
JNE BINA
DEC CX
BINA: MOV AL,DIGITOS[DI]
AND AX,000FH
MUL BASE
ADD CAMB,AX
MOV AX,BASE
MUL BX
MOV BASE,AX
DEC DI
LOOP BINA
MOV BASE,0001H
RET
BINARIO ENDP
ASCII PROC NEAR
MOV CX,06
MOV SI,0002
ASC3: MOV DIGITOS[SI],00H
INC SI
LOOP ASC3
MOV CX,0010
MOV SI,0007
ASC1: CMP AX,CX
JB ASC2
XOR DX,DX
DIV CX
OR DL,30H
MOV DIGITOS[SI],DL
DEC SI
JMP ASC1
ASC2: OR AL,30H
MOV DIGITOS[SI],AL
RET
ASCII ENDP
RESULTA PROC NEAR
CALL UBICA4
MOV AH,09H
LEA DX,RESULT
INT 21H
CMP SIGNO[4],01H
JNE RES1
MOV DIGITOS[2],2DH
RES1: LEA DX,DIGITOS[2]
INT 21H
RET
RESULTA ENDP
SALIDA PROC NEAR
MOV AH,10H
INT 16H
RET
SALIDA ENDP
.STACK
END CALCULA
este otro programa es para identificar que tecla pulsaste en el teclado:
.MODEL SMALL
.DATA
ORDEN DB 'POR FAVOR PULSA UNA TECLA... $ '
DESPL DB 'PULSASTE LA TECLA: ',"$"
REG DB ?
REG1 DB ?
.CODE
;PROGRAMA PRINCIPAL
TECLEA PROC NEAR
MOV AX,@DATA ; INICIALIZACION DEL SEGMENTO
MOV DS,AX ; MOVIMIENTO DE REGISTRO
CALL LIMPIA ; LIMPIAR PANTALLA
CALL POSIC
MOV DX,OFFSET ORDEN
MOV AH,09H
INT 21H
CALL LEE
CALL POSIC1
MOV DX, OFFSET DESPL
MOV AH,09H
INT 21H
CALL ESCRIBE
MOV AH,4CH
INT 21H
TECLEA ENDP
LEE PROC NEAR
MOV AH,10H
INT 16H
CMP AH,3BH
JE UNO
JMP FALSO1
UNO: JMP CAMB1
FALSO1:
CMP AH,3CH
JE DOS
JMP FALSO2
DOS: JMP CAMB2
FALSO2:
CMP AH,3DH
JE TRES
JMP FALSO3
TRES: JMP CAMB3
FALSO3:
CMP AH,3EH
JE CUATRO
JMP FALSO4
CUATRO: JMP CAMB4
FALSO4:
CMP AH,3FH
JE CINCO
JMP FALSO5
CINCO: JMP CAMB5
FALSO5:
CMP AH,40H
JE SEIS
JMP FALSO6
SEIS: JMP CAMB6
FALSO6:
CMP AH,41H
JE SIETE
JMP FALSO7
SIETE: JMP CAMB7
FALSO7:
CMP AH,42H
JE OCHO
JMP FALSO8
OCHO: JMP CAMB8
FALSO8:
CMP AH,43H
JE NUEVE
JMP FALSO9
NUEVE: JMP CAMB9
FALSO9:
CMP AH,44H
JE DIEZ
JMP FALS10
DIEZ: JMP CAMBA
FALS10:
CMP AH,45H
JE ONCE
JMP FALS11
ONCE: JMP CAMBB
FALS11:
CMP AH,85H
JE DOCE
JMP FALS12
DOCE: JMP CAMBC
FALS12:
CMP AH,86H
JE TRECE
JMP FALS13
TRECE: JMP CAMBD
FALS13:
CMP AH,01H
JE CATORCE
JMP FALS14
CATORCE: JMP ESCAPE
FALS14:
CMP AH,0EH
JE QUNCE
JMP FALS15
QUNCE: JMP BACKS
FALS15:
CMP AH,0FH
JE DIESEIS
JMP FALS16
DIESEIS: JMP TAB
FALS16:
CMP AH,1CH
JE DIESIET
JMP FALS17
DIESIET: JMP ENT
FALS17:
CMP AH,2FH
JE DIESOCH
JMP FALS18
DIESOCH: JMP SLASH
FALS18:
CMP AH,47H
JE DIESNUE
JMP FALS19
DIESNUE: JMP INICIO
FALS19:
CMP AH,4FH
JE VEINTE
JMP FALS20
VEINTE: JMP FIN
FALS20:
CMP AH,49H
JE VEINTUN
JMP FALS21
VEINTUN: JMP PAGEUP
FALS21:
CMP AH,51H
JE VEINDOS
JMP FALS22
VEINDOS: JMP PAGEDN
FALS22:
CMP AH,50H
JE VEINTRE
JMP FALS23
VEINTRE: JMP DOWNA
FALS23:
CMP AH,4BH
JE VEINCUA
JMP FALS24
VEINCUA: JMP LEFTA
FALS24:
CMP AH,4DH
JE VEINCIN
JMP FALS25
VEINCIN: JMP RIGHTA
FALS25:
CMP AH,48H
JE VEINSEI
JMP FALS26
VEINSEI: JMP UPA
FALS26:
CMP AH,52H
JE VEINSIE
JMP FALS27
VEINSIE: JMP INS1
FALS27:
CMP AH,53H
JE VEINOCH
JMP FALS28
VEINOCH: JMP DEL
FALS28:
CMP AH,1DH
JE VEINOCH
JMP FALS29
VEINNUE: JMP CTRL
FALS29:
JMP SINCAM
CAMB1: MOV AL,31H
JMP CAMBF
CAMB2: MOV AL,32H
JMP CAMBF
CAMB3: MOV AL,33H
JMP CAMBF
CAMB4: MOV AL,34H
JMP CAMBF
CAMB5: MOV AL,35H
JMP CAMBF
CAMB6: MOV AL,36H
JMP CAMBF
CAMB7: MOV AL,37H
JMP CAMBF
CAMB8: MOV AL,38H
JMP CAMBF
CAMB9: MOV AL,39H
JMP CAMBF
CAMBA: MOV AL,41H
JMP CAMBF
CAMBB: MOV AL,42H
JMP CAMBF
CAMBC: MOV AL,43H
JMP CAMBF
CAMBD: MOV AL,44H
JMP CAMBF
ESCAPE: MOV AL,53H
JMP CAMBES
BACKS: MOV AL,41H
JMP CAMBBA
TAB: MOV AL,54H
JMP CAMBTA
ENT: MOV AL,4EH
JMP CAMBEN
SLASH: MOV AL,4CH
JMP CAMBSL
INICIO: MOV AL,4EH
JMP CAMBINC
FIN: MOV AL,49H
JMP CAMBFI
PAGEUP: MOV AL,55H
JMP CAMBPU
PAGEDN: MOV AL,44H
JMP CAMBPD
DOWNA: MOV AL,41H
JMP CAMBDA
LEFTA: MOV AL,41H
JMP CAMBLA
RIGHTA: MOV AL,41H
JMP CAMBRA
UPA: MOV AL,41H
JMP CAMBUA
INS1: MOV AL,4EH
JMP CAMBINS
DEL: MOV AL,45H
JMP CAMBDEL
CTRL: MOV AL,54H
JMP CAMBCTRL
CAMBES: MOV REG1,45H
MOV REG,AL
JMP FINP
CAMBBA: MOV REG1,41H
MOV REG,AL
JMP FINP
CAMBTA: MOV REG1,54H
MOV REG,AL
JMP FINP
CAMBEN: MOV REG1,45H
MOV REG,AL
JMP FINP
CAMBSL: MOV REG1,53H
MOV REG,AL
JMP FINP
CAMBINC: MOV REG1,49H
MOV REG,AL
JMP FINP
CAMBFI: MOV REG1,46H
MOV REG,AL
JMP FINP
CAMBPU: MOV REG1,50H
MOV REG,AL
JMP FINP
CAMBPD: MOV REG1,50H
MOV REG,AL
JMP FINP
CAMBDA: MOV REG1,44H
MOV REG,AL
JMP FINP
CAMBLA: MOV REG1,4CH
MOV REG,AL
JMP FINP
CAMBRA: MOV REG1,52H
MOV REG,AL
JMP FINP
CAMBUA: MOV REG1,55H
MOV REG,AL
JMP FINP
CAMBINS: MOV REG1,49H
MOV REG,AL
JMP FINP
CAMBDEL: MOV REG1,44H
MOV REG,AL
JMP FINP
CAMBCTRL: MOV REG1,43H
MOV REG,AL
JMP FINP
SINCAM: MOV REG1,20H
MOV REG,AL
JMP FINP
CAMBF PROC NEAR
MOV REG1,46H
MOV REG,AL
JMP FINP
CAMBF ENDP
FINP: RET
LEE ENDP
ESCRIBE PROC NEAR
MOV AH,0AH
MOV AL,REG1
MOV CX,1
INT 10H
CALL POSIC2
MOV AH,0AH
MOV AL,REG
MOV CX,1
INT 10H
RET
ESCRIBE ENDP
LIMPIA PROC NEAR
MOV AX,0600H
MOV BX,1A00H
MOV CX,0000
MOV DX,184FH
INT 10H
RET
LIMPIA ENDP
POSIC PROC NEAR
MOV AH,02H
MOV BH,00H
MOV DX,0606H
INT 10H
RET
POSIC ENDP
POSIC1 PROC NEAR
MOV AH,02H
MOV BH,00H
MOV DX,0907H
INT 10H
RET
POSIC1 ENDP
POSIC2 PROC NEAR
MOV AH,02H
MOV BH,00H
MOV DX,091CH
INT 10H
RET
POSIC2 ENDP
.STACK
END TECLEA
que tengas buena suerte y te repongas.
el primer programa es una calculadora:
MODEL SMALL
.DATA
ERROR DB '...SIGNO DESCONOCIDO, INTENTA DE NUEVO','$'
OPERA1 DB 'INTRODUZCA EL PRIMER OPERADOR: ','$'
OPERA2 DB 'INTRODUZCA EL SEGUNDO OPERADOR: ','$'
OPERAC DB 'OPERACION A REALIZAR: ','$'
ERRDIG DB '...OPERADOR EXEDE DE 4 DIGITOS,INTENTA DE NUEVO','$'
RESULT DB 'RESULTADO: ','$'
MENU DB 10,13,09,'+',10,13,09,'-',10,13,09,'*',10,13,09,'/',10,13,'$'
DIGITOS DB 7,?,7 DUP('$'),'$'
SIGNO DB 3,?,3 DUP('0'),'$'
BASE DW 1
CAMB DW 0
EXCH DW ?
.CODE
CALCULA PROC NEAR
MOV AX,@DATA
MOV DS,AX
CALL CLEAR
PROC1: CALL UBICA1
MOV AH,09H
LEA DX,OPERA1
INT 21H
MOV AH,0AH
LEA DX,DIGITOS
INT 21H
CMP DIGITOS[1],06H
JAE MAL1
CMP DIGITOS[2],2DH
JNE PROC4
MOV SIGNO[2],01H
JMP PROC4
MAL1: CALL UBICA6
MOV AH,09H
LEA DX,ERRDIG
INT 21H
JMP PROC1
PROC4: CALL BINARIO
MOV AX,CAMB
MOV EXCH,AX
PROC2: CALL UBICA2
MOV AH,09H
LEA DX,OPERA2
INT 21H
MOV AH,0AH
LEA DX,DIGITOS
INT 21H
CMP DIGITOS[1],06H
JAE MAL2
CMP DIGITOS[2],2DH
JNE PROC5
MOV SIGNO[3],01H
JMP PROC5
MAL2: CALL UBICA5
MOV AH,09H
LEA DX,ERRDIG
INT 21H
JMP PROC2
PROC5: MOV CAMB,0000H
CALL BINARIO
INIC: CALL UBICA3
MOV AH,09H
LEA DX,OPERAC
INT 21H
CALL SALIDA
MOV AH,02H
MOV DL,AL
INT 21H
MOV SI,0003H
MOV CX,04H
INIC2: CMP AL,MENU[SI]
JE INIC1
ADD SI,0004H
LOOP INIC2
MOV AH,09H
LEA DX,ERROR
INT 21H
JMP INIC
INIC1: CMP AL,2BH
JNE OPERAC1
CMP SIGNO[2],01H
JNE SIGNO1
NEG EXCH
SIGNO1: CMP SIGNO[3],01H
JNE SIGNO2
NEG CAMB
SIGNO2: MOV AX,EXCH
ADD AX,CAMB
JNS SIGNO3
NEG AX
MOV SIGNO[4],01H
JNC SIGNO3
MOV DIGITOS[3],1
SIGNO3: CALL ASCII
CALL RESULTA
JMP FINAL1
OPERAC1: CMP AL,2DH
JNE OPERAC2
CMP SIGNO[2],01H
JNE RE1
NEG EXCH
RE1: CMP SIGNO[3],01H
JNE RE2
NEG CAMB
RE2: MOV AX,EXCH
SUB AX,CAMB
JNS RE3
NEG AX
MOV SIGNO[4],01H
JNC RE3
MOV DIGITOS[3],1
RE3: CALL ASCII
CALL RESULTA
JMP FINAL1
OPERAC2: CMP AL,2AH
JNE OPERAC3
CMP SIGNO[2],01H
JNE SELEC1
MOV SIGNO[4],01H
SELEC1: CMP SIGNO[3],01H
JNE SELEC2
MOV DL,SIGNO[3]
CMP SIGNO[4],DL
JE SELEC3
MOV SIGNO[4],01H
JMP SELEC2
SELEC3: MOV SIGNO[4],00H
SELEC2: MOV AX,EXCH
MUL CAMB
SELEC4: CALL ASCII
CALL RESULTA
JMP FINAL1
OPERAC3: CMP AL,2FH
JNE FINAL1
CMP SIGNO[2],01H
JNE DETER1
MOV SIGNO[4],01H
DETER1: CMP SIGNO[3],01H
JNE DETER2
MOV DL,SIGNO[3]
CMP SIGNO[4],DL
JE DETER3
MOV SIGNO[4],01H
JMP DETER2
DETER3: MOV SIGNO[4],00H
DETER2: MOV AX,EXCH
XOR DX,DX
DIV CAMB
DETER4: CALL ASCII
CALL RESULTA
JMP FINAL1
FINAL1: CALL SALIDA
MOV AX,4C00H
INT 21H
CALCULA ENDP
CLEAR PROC NEAR
MOV AX,0600H
MOV BX,1A00H
MOV CX,0000
MOV DX,184FH
INT 10H
RET
CLEAR ENDP
UBICA1 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,0606H
INT 10H
RET
UBICA1 ENDP
UBICA2 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,0806H
INT 10H
RET
UBICA2 ENDP
UBICA3 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,0A06H
INT 10H
RET
UBICA3 ENDP
UBICA4 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,1010H
INT 10H
RET
UBICA4 ENDP
UBICA5 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,1106H
INT 10H
RET
UBICA5 ENDP
UBICA6 PROC SUBSYS
MOV AH,02H
MOV BH,00H
MOV DX,1206H
INT 10H
RET
UBICA6 ENDP
BINARIO PROC NEAR
MOV BX,10
MOV CH,00H
MOV CL,DIGITOS[1]
MOV DI,CX
INC DI
CMP DIGITOS[2],2DH
JNE BINA
DEC CX
BINA: MOV AL,DIGITOS[DI]
AND AX,000FH
MUL BASE
ADD CAMB,AX
MOV AX,BASE
MUL BX
MOV BASE,AX
DEC DI
LOOP BINA
MOV BASE,0001H
RET
BINARIO ENDP
ASCII PROC NEAR
MOV CX,06
MOV SI,0002
ASC3: MOV DIGITOS[SI],00H
INC SI
LOOP ASC3
MOV CX,0010
MOV SI,0007
ASC1: CMP AX,CX
JB ASC2
XOR DX,DX
DIV CX
OR DL,30H
MOV DIGITOS[SI],DL
DEC SI
JMP ASC1
ASC2: OR AL,30H
MOV DIGITOS[SI],AL
RET
ASCII ENDP
RESULTA PROC NEAR
CALL UBICA4
MOV AH,09H
LEA DX,RESULT
INT 21H
CMP SIGNO[4],01H
JNE RES1
MOV DIGITOS[2],2DH
RES1: LEA DX,DIGITOS[2]
INT 21H
RET
RESULTA ENDP
SALIDA PROC NEAR
MOV AH,10H
INT 16H
RET
SALIDA ENDP
.STACK
END CALCULA
este otro programa es para identificar que tecla pulsaste en el teclado:
.MODEL SMALL
.DATA
ORDEN DB 'POR FAVOR PULSA UNA TECLA... $ '
DESPL DB 'PULSASTE LA TECLA: ',"$"
REG DB ?
REG1 DB ?
.CODE
;PROGRAMA PRINCIPAL
TECLEA PROC NEAR
MOV AX,@DATA ; INICIALIZACION DEL SEGMENTO
MOV DS,AX ; MOVIMIENTO DE REGISTRO
CALL LIMPIA ; LIMPIAR PANTALLA
CALL POSIC
MOV DX,OFFSET ORDEN
MOV AH,09H
INT 21H
CALL LEE
CALL POSIC1
MOV DX, OFFSET DESPL
MOV AH,09H
INT 21H
CALL ESCRIBE
MOV AH,4CH
INT 21H
TECLEA ENDP
LEE PROC NEAR
MOV AH,10H
INT 16H
CMP AH,3BH
JE UNO
JMP FALSO1
UNO: JMP CAMB1
FALSO1:
CMP AH,3CH
JE DOS
JMP FALSO2
DOS: JMP CAMB2
FALSO2:
CMP AH,3DH
JE TRES
JMP FALSO3
TRES: JMP CAMB3
FALSO3:
CMP AH,3EH
JE CUATRO
JMP FALSO4
CUATRO: JMP CAMB4
FALSO4:
CMP AH,3FH
JE CINCO
JMP FALSO5
CINCO: JMP CAMB5
FALSO5:
CMP AH,40H
JE SEIS
JMP FALSO6
SEIS: JMP CAMB6
FALSO6:
CMP AH,41H
JE SIETE
JMP FALSO7
SIETE: JMP CAMB7
FALSO7:
CMP AH,42H
JE OCHO
JMP FALSO8
OCHO: JMP CAMB8
FALSO8:
CMP AH,43H
JE NUEVE
JMP FALSO9
NUEVE: JMP CAMB9
FALSO9:
CMP AH,44H
JE DIEZ
JMP FALS10
DIEZ: JMP CAMBA
FALS10:
CMP AH,45H
JE ONCE
JMP FALS11
ONCE: JMP CAMBB
FALS11:
CMP AH,85H
JE DOCE
JMP FALS12
DOCE: JMP CAMBC
FALS12:
CMP AH,86H
JE TRECE
JMP FALS13
TRECE: JMP CAMBD
FALS13:
CMP AH,01H
JE CATORCE
JMP FALS14
CATORCE: JMP ESCAPE
FALS14:
CMP AH,0EH
JE QUNCE
JMP FALS15
QUNCE: JMP BACKS
FALS15:
CMP AH,0FH
JE DIESEIS
JMP FALS16
DIESEIS: JMP TAB
FALS16:
CMP AH,1CH
JE DIESIET
JMP FALS17
DIESIET: JMP ENT
FALS17:
CMP AH,2FH
JE DIESOCH
JMP FALS18
DIESOCH: JMP SLASH
FALS18:
CMP AH,47H
JE DIESNUE
JMP FALS19
DIESNUE: JMP INICIO
FALS19:
CMP AH,4FH
JE VEINTE
JMP FALS20
VEINTE: JMP FIN
FALS20:
CMP AH,49H
JE VEINTUN
JMP FALS21
VEINTUN: JMP PAGEUP
FALS21:
CMP AH,51H
JE VEINDOS
JMP FALS22
VEINDOS: JMP PAGEDN
FALS22:
CMP AH,50H
JE VEINTRE
JMP FALS23
VEINTRE: JMP DOWNA
FALS23:
CMP AH,4BH
JE VEINCUA
JMP FALS24
VEINCUA: JMP LEFTA
FALS24:
CMP AH,4DH
JE VEINCIN
JMP FALS25
VEINCIN: JMP RIGHTA
FALS25:
CMP AH,48H
JE VEINSEI
JMP FALS26
VEINSEI: JMP UPA
FALS26:
CMP AH,52H
JE VEINSIE
JMP FALS27
VEINSIE: JMP INS1
FALS27:
CMP AH,53H
JE VEINOCH
JMP FALS28
VEINOCH: JMP DEL
FALS28:
CMP AH,1DH
JE VEINOCH
JMP FALS29
VEINNUE: JMP CTRL
FALS29:
JMP SINCAM
CAMB1: MOV AL,31H
JMP CAMBF
CAMB2: MOV AL,32H
JMP CAMBF
CAMB3: MOV AL,33H
JMP CAMBF
CAMB4: MOV AL,34H
JMP CAMBF
CAMB5: MOV AL,35H
JMP CAMBF
CAMB6: MOV AL,36H
JMP CAMBF
CAMB7: MOV AL,37H
JMP CAMBF
CAMB8: MOV AL,38H
JMP CAMBF
CAMB9: MOV AL,39H
JMP CAMBF
CAMBA: MOV AL,41H
JMP CAMBF
CAMBB: MOV AL,42H
JMP CAMBF
CAMBC: MOV AL,43H
JMP CAMBF
CAMBD: MOV AL,44H
JMP CAMBF
ESCAPE: MOV AL,53H
JMP CAMBES
BACKS: MOV AL,41H
JMP CAMBBA
TAB: MOV AL,54H
JMP CAMBTA
ENT: MOV AL,4EH
JMP CAMBEN
SLASH: MOV AL,4CH
JMP CAMBSL
INICIO: MOV AL,4EH
JMP CAMBINC
FIN: MOV AL,49H
JMP CAMBFI
PAGEUP: MOV AL,55H
JMP CAMBPU
PAGEDN: MOV AL,44H
JMP CAMBPD
DOWNA: MOV AL,41H
JMP CAMBDA
LEFTA: MOV AL,41H
JMP CAMBLA
RIGHTA: MOV AL,41H
JMP CAMBRA
UPA: MOV AL,41H
JMP CAMBUA
INS1: MOV AL,4EH
JMP CAMBINS
DEL: MOV AL,45H
JMP CAMBDEL
CTRL: MOV AL,54H
JMP CAMBCTRL
CAMBES: MOV REG1,45H
MOV REG,AL
JMP FINP
CAMBBA: MOV REG1,41H
MOV REG,AL
JMP FINP
CAMBTA: MOV REG1,54H
MOV REG,AL
JMP FINP
CAMBEN: MOV REG1,45H
MOV REG,AL
JMP FINP
CAMBSL: MOV REG1,53H
MOV REG,AL
JMP FINP
CAMBINC: MOV REG1,49H
MOV REG,AL
JMP FINP
CAMBFI: MOV REG1,46H
MOV REG,AL
JMP FINP
CAMBPU: MOV REG1,50H
MOV REG,AL
JMP FINP
CAMBPD: MOV REG1,50H
MOV REG,AL
JMP FINP
CAMBDA: MOV REG1,44H
MOV REG,AL
JMP FINP
CAMBLA: MOV REG1,4CH
MOV REG,AL
JMP FINP
CAMBRA: MOV REG1,52H
MOV REG,AL
JMP FINP
CAMBUA: MOV REG1,55H
MOV REG,AL
JMP FINP
CAMBINS: MOV REG1,49H
MOV REG,AL
JMP FINP
CAMBDEL: MOV REG1,44H
MOV REG,AL
JMP FINP
CAMBCTRL: MOV REG1,43H
MOV REG,AL
JMP FINP
SINCAM: MOV REG1,20H
MOV REG,AL
JMP FINP
CAMBF PROC NEAR
MOV REG1,46H
MOV REG,AL
JMP FINP
CAMBF ENDP
FINP: RET
LEE ENDP
ESCRIBE PROC NEAR
MOV AH,0AH
MOV AL,REG1
MOV CX,1
INT 10H
CALL POSIC2
MOV AH,0AH
MOV AL,REG
MOV CX,1
INT 10H
RET
ESCRIBE ENDP
LIMPIA PROC NEAR
MOV AX,0600H
MOV BX,1A00H
MOV CX,0000
MOV DX,184FH
INT 10H
RET
LIMPIA ENDP
POSIC PROC NEAR
MOV AH,02H
MOV BH,00H
MOV DX,0606H
INT 10H
RET
POSIC ENDP
POSIC1 PROC NEAR
MOV AH,02H
MOV BH,00H
MOV DX,0907H
INT 10H
RET
POSIC1 ENDP
POSIC2 PROC NEAR
MOV AH,02H
MOV BH,00H
MOV DX,091CH
INT 10H
RET
POSIC2 ENDP
.STACK
END TECLEA
que tengas buena suerte y te repongas.