; DECLARACION DE CONSTANTES
;Guillermo Arturo Mireles Garc?a
CR EQU 13 ; Constante CR (Retorno de carro)
LF EQU 10 ; Constante LF (Salto de l?nea)
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
TAB EQU 09H
BELL EQU 07H
; DECLARACION DEL SEGMENTO DE DATOS
DATOS SEGMENT
ENCABEZADO DB 13,10,13,10,TAB,"====================================================="
DB 13,10,TAB," PROGRAMA QUE SUMA DOS NUMEROS ASCII"
DB 13,10,TAB,"=====================================================",13,10,13,10,"$"
ASCII_1 DB '023',"$" ; Como esta diseñado para 3 digitos, hay que rellnar con 0's cuando
ASCII_2 DB '056',"$" ; usamos menos, de lo contrario da mal el resultado.
SUMA_ASCII DB '0000',13,10,13,10,"$"
DATOS ENDS
; DECLARACION DEL SEGMENTO DE PILA
PILA SEGMENT STACK
DB 64 DUP('0')
PILA ENDS
; DECLARACION DEL SEGMENTO DE CODIGO
CODIGO SEGMENT
pe26_sm1 PROC NEAR ; Inicio procedimiento
ASSUME CS:CODIGO,DS:DATOS,SS:PILA
MOV AX,DATOS ; AX=Direcci?n del segmento de datos
MOV DS,AX ; DS=AX. Indicar el segmento de datos
CLC ; Limpia bandera de acarreo
LEA SI,ASCII_1 + 4 ; Inicializaci?n de n?meros ASCII
LEA DI,ASCII_2 + 4
LEA BX,SUMA_ASCII + 5
MOV CX,03 ; Inicializaci?n de tres ciclos
CICLO_1:
MOV AH,00 ; Limpia el AH
MOV AL,[SI] ; Carga un byte ASCII
ADC AL,[DI] ; Suma con acarreo
AAA ; Ajusta para ASCII
MOV [BX],AL ; Almacena la suma
DEC SI
DEC DI
DEC BX
LOOP CICLO_1 ; Realiza el ciclo tres veces
MOV [BX],AH ; Al final almacena el acarreo
LEA BX,SUMA_ASCII + 5 ; Convierte la SUMA_ASCII a ASCII
MOV CX,04
CICLO_2:
OR BYTE PTR[BX],30H
DEC BX
LOOP CICLO_2 ; Realiza el ciclo cuatro veces
LEA DX, ENCABEZADO
CALL ESCRIBE
LEA DX, SUMA_ASCII
CALL ESCRIBE
CALL SALIR
pe26_sm1 ENDP ; Fin del procedimiento
ESCRIBE PROC ; Inicio procedimiento ESCRIBE
MOV AH,9 ; Funci?n DOS para escribir texto en pantalla
INT 21H ; Llamar a la interrupci?n del DOS
RET ; Volver o retornar
ESCRIBE ENDP ; Fin del procedimiento ESCRIBE
SALIR PROC NEAR
MOV AX, FIN ;Mueve la instruccion para terminar el programa.
INT DOS ;Ejecuta la interrupci?n.
RET
SALIR ENDP
CODIGO ENDS
END pe26_sm1
No hay comentarios:
Publicar un comentario