TITLE ASCIIHEX ;VICTOR MANUEL INIESTRA ALVAREZ
ORG 1000
YURGEN: DEFB 0 ; VALIDACION
VALIDA1 DEFB 0 ; 6:NO ES NUMERO 0:SI ES NUMERO
ASCII1 DEFM 0E0F ; CADENA A TRANSFORMAR
HEX1 DEFS 2 ; LUGAR DONDE SE PONDRAN LAS CIFRAS
VALIDA2 DEFB 0
ASCII2 DEFM 1GF0 ; CADENA A TRANSFORMAR
HEX2 DEFS 2 ; LUGAR DONDE SE PONDRAN LAS CIFRAS
VALIDA3 DEFB 0
ASCII3 DEFM 3FY9 ; CADENA A TRANSFORMAR
HEX3 DEFS 2 ; LUGAR DONDE SE PONDRAN LAS CIFRAS
VALIDA4 DEFB 0
ASCII4 DEFM 7E01 ; CADENA A TRANSFORMAR
HEX4 DEFS 2 ; LUGAR DONDE SE PONDRAN LAS CIFRAS
ORG 0
JZ BEGIN
JNZ BEGIN
ILEGAL: LD #6
STO YURGEN
JZ SALIDA
JNZ SALIDA ; REGRESA A ASCHEX
DEC09: LD X ; A=@X
AND #0F ; A=BAJO(@X)
PUSH A
SUB #9
LD #0
ADC #0
POP A
JZ ILEGAL
SL ; A=BAJO(@X)*10
SL
SL
SL
STO Y ; Y=BAJO(@X)*10
JZ UNIDAD
JNZ UNIDAD ; VE A LEER LA UNIDAD
DECAF: LD X
AND #0F
PUSH A
SUB #6
LD #0
ADC #0
POP A
JZ ILEGAL
ADD #9 ; A=BAJO(@X)+9
SL
SL
SL
SL
STO Y
JZ UNIDAD
JNZ UNIDAD
UNI09: LD #0 ; CARRY=0
ADD #0
PUSH A
SUB #9
LD #0
ADC #0
POP A
JZ ILEGAL
LD X ; A=@X
AND #0F ; A=BAJO(@X)
ADC Y ; A=Y+BAJO(@X)
STO Y ; Y=Y+BAJO(@X)
JZ SALIDA
JNZ SALIDA
UNIAF: LD #0
ADD #0
PUSH A
SUB #6
LD #0
ADC #0
POP A
JZ ILEGAL
LD X
AND #0F
ADD #9 ; A=BAJO(@X)+9
ADC Y
STO Y
JZ SALIDA
JNZ SALIDA
ASCHEX:
LD X ; A=@X
AND #0F0 ; A=ALTO(@X)
SUB #30 ; ALTO(@X)=30? (30,31,32,...,39)
JZ DEC09 ; X ESTA ENTRE 0 Y 9
SUB #10 ; ALTO(@X)=40? (41,42,..46)
JZ DECAF ; X ESTA ENTRE A Y F
JNZ ILEGAL
UNIDAD: INX ; AHORA LEE LA UNIDAD
LD X
AND #0F0
SUB #30
JZ UNI09
SUB #10
JZ UNIAF
JNZ ILEGAL
SALIDA:
INX
INY
RET ; REGRESA A RECNUM
RECNUM:
CALL ASCHEX ; PRIMERA CIFRA
CALL ASCHEX ; SEGUNDA CIFRA
RET
BEGIN: LDSP #5000 ; EL STACK CRECERA DESDE 5000 HASTA 0
LD #0
STO YURGEN
LDX ASCII1 ; X=ASCII1
LDY HEX1 ; Y=HEX1
CALL RECNUM
LD YURGEN
STO VALIDA1
LD #0
STO YURGEN
LDX ASCII2 ; X=ASCII2
LDY HEX2 ; Y=HEX2
CALL RECNUM
LD YURGEN
STO VALIDA2
LD #0
STO YURGEN
LDX ASCII3 ; X=ASCII3
LDY HEX3 ; Y=HEX3
CALL RECNUM
LD YURGEN
STO VALIDA3
LD #0
STO YURGEN
LDX ASCII4 ; X=ASCII4
LDY HEX4 ; Y=HEX4
CALL RECNUM
LD YURGEN
STO VALIDA4
FIN: HALT
END
               (
geocities.com/v.iniestra/apuntes)                   (
geocities.com/v.iniestra)