TITLE suma_doble
ORG 1000
OPER1 DEFW 0256
OPER2 DEFW 0256
HELP DEFS 1
HELP1 DEFS 2
PAR DEFS 1
PAR1 DEFS 2
ACARREO DEFB 0 ;ACARREO INICIALIZADO EN CERO
ORG 0
JZ BEGIN
JNZ BEGIN
T_MAYORA91:RET
MAYORA91:LD Y
AND #0F
SUB #9
LD #0
ADC #0
JZ CONTINUA1 ;cuando es mayor a 9
JNZ CONTINUA2 ;cuando es menor a 9
CONTINUA1:ADD #9 ;RECUPERA LA LETRA
ADD #6 ;HACE LA SUMA DECIMAL
SUB #10 ;LE RESTE LO DEL ACARREO
STO HELP ;deja el bis bajo de suma decimal
LD #10
STO ACARREO
JZ T_MAYORA91
JNZ T_MAYORA91
CONTINUA2:ADD #9
STO HELP
LD #0
STO ACARREO
JZ T_MAYORA91
JNZ T_MAYORA91
SUMA_BITB:LD #1
ADD #0F
LD X
ADC Y
AND #0F
STO PAR
LD #1
ADD #0FF
LD PAR
ADC ACARREO
STO HELP
RET
T_MAYORA92:RET
MAYORA92:LD Y
AND #0F0
SUB #90
LD #0
ADC #0
JZ CONTINUAA ;CUANDO ES MAYOR A 9
JNZ CONTINUAB ;cuando es menor a 9
CONTINUAA:ADD #90 ;RECUPERA LA LETRA
ADD #60 ;HACE LA SUMA DECIMAL
SUB #10 ;LE RESTE LO DEL ACARREO
STO HELP1 ;deja el bis bajo de suma decimal
LD #10
STO ACARREO
JZ T_MAYORA92
JNZ T_MAYORA92
CONTINUAB:ADD #9
STO HELP1
LD #0
STO ACARREO
JZ T_MAYORA92
JNZ T_MAYORA92
SUMA_BITA:LD #1
ADD #0FF
LD X
ADC Y
AND #0F0
STO PAR1
LD PAR1
LD #1
ADD #0FF
ADC ACARREO
STO HELP1
RET
BEGIN:LDSP #6000
LDX OPER1+1
LDY OPER2+1
CALL SUMA_BITB
LDY HELP
CALL T_MAYORA91
HALT
END
               (
geocities.com/v.iniestra/apuntes)                   (
geocities.com/v.iniestra)