Programación en lenguaje ensamblador, urgente, online, etc.
--------------------- ---------- ----------
SEGMENTO SSEG PARA PILA
DB 64 DUP(?)
SSEG TERMINA
SEGMENTO DSEG
MESS1 DB 'FELIZ CUMPLEAÑOS A $'
MESS2 DB 'TU CUMPLEAÑOS LLEGARA EL PRÓXIMO AÑO.$ '
MESS3 DB 'TU CUMPLEAÑOS LLEGARA EN $'
MESS4 DB 'DIA(S).$'
O_NAM DB 'TU NOMBRE:$'
O_BIR DB ' CUMPLEAÑOS: $'
I_NAM DB 32
DB ?
DB 32 DUP(?)
I_BIR DB 5
DB ?
DB 5 DUP(?)
EXTREMOS DSEG
SEGMENTO CSEG
Supongamos CS: CSEG, DS: DSEG
INICIO: MOV AX, DSEG
MOV DS, AX
LEA DX, O_NAM
MOV AH, 9H
INT 21H
LEA DX, I_NAM
MOV AH, 0CH
MOV AL, 0AH
INT 21H p>
CALL NEWLINE
MOV AL, I_NAM 1
XOR AH, AH
MOV SI, AX
MOV I_NAM [SI 2], 24H
LEA DX, O_BIR
MOV AH, 9H
INT 21H
LEA DX, I_BIR
p>MOV AH, 0CH
MOV AL, 0AH
INT 21H
LLAMADA NUEVA LÍNEA
MOV SI, 2
LLAMADA XCH
MOV BH, BL
LLAMADA XCH
MOV AH, 2AH
INT 21H
p>
CMP BH, DH
JA BIG1
JB SMA
CMP BL, DL
JA BIG2
JB SMA
LEA DX, MESS1
MOV AH, 9H
INT 21H
LEA DX, I_NAM p>
AGREGAR DX, 2
MOV AH, 9H
INT 21H
JMP OK
BIG1: SUB BH, DH
MOV AL, 30
MUL BH
XOR BH, BH
SUB BL, DL
S
BB BH, 0
AÑADIR AX, BX
XOR DX, DX
MOV BL, 10
XOR CX, CX p> p>
JMP NEXT1
BIG2: SUB BL, DL
XOR AH, AH
MOV AL, BL
XOR DX, DX
MOV BL, 10
XOR CX, CX
NEXT1: CMP AX, 10
JB SHOW
DIV BL
MOV DL, AH
PUSH NEXT1.
PUSH DX
XOR AH, AH
INC CX
JMP NEXT1
MOSTRAR: PUSH AX
LEA DX, MESS3
MOV AH, 9H
INT 21H
POP AX
MOV DL, AL
AÑADIR DL, 30H
MOV AH, 02H
INT 21H
CMP CX, 0
JE OK1
SIGUIENTE2: POP DX
AÑADIR DL, 30H
MOV AH, 02H
INT 21H
BUCLE SIGUIENTE2
OK1: LEA DX, MESS4
MOV AH, 9H
INT 21H
JMP OK
SMA: LEA DX, MESS2
MOV AH, 9H
INT 21H
OK: MOV AH, 4CH
INT 21H
XCH PROC
MOV AL, I_BIR[SI]
SUB AL, 30H
MOV BL, 10
MUL BL<
INC SI
MOV BL, I_BIR[SI]
SUB BL, 30H
INC SI
AÑADIR BL,
RET
XCH ENDP
NEWLINE PROC
EMPUJAR AX
EMPUJAR DX
MOV DL, 0DH
MOV AH, 2H
INT 21H
MOV DL, 0AH
MOV AH, 2H
INT 21H
POP DX
POP AX
RET
NEWLINE ENDP p> p>
CSEG TERMINA
FIN INICIO