TITLE SUMA.MODEL SMALL.STACK 100H.DATA ;titulo del porgrama :modelo de la memoria ;tamaño de la pila ;segmento de datos A DB "teclea dos caracteres: $" ;cadena que vamos a mostrar en pantalla.code ;inicia segmento de codigo MOV AX,@DATA ;movemos a ax el contenido de la cadena "A" eso significa el signo @ y data del segmento de datos MOV DS,AX ;movemos la cadena a segmento ds MOV AH,9 ;mandamos a imprimir la cadena MOV DX, OFFSET A ;cargamos la direccion de la cadena al segmento de datos MOV AH,1 ;interrupcion del dos ;Leer un carácter del teclado y desplega ;interrucion del dos MOV BL,AL MOV AH,1 ;movemos el dato a bl ;leemos el segundo nuemro ;interruopcion del dos SUB bx,ax MOV DX, bx MOV AH, 2 ;realizamos la resta ;movemos el resultado a segmento dx ;mandamos a imprimir a pantalla ;interrupcion del dos MOV AH,4CH END ;fin del segmento de codigo ;interrupcion del dos ;fin del programa
TITLE multiplicacion ;nombre del programa.model small.stack.data ;modelo de la memoria ;tamaño de pila ;segmento de datos chr1 db? ;declaramos 6 constantes de tipo byte chr2 db? ; chr3 db? ; r1 db? ; r2 db? ; ac db 0 ;....code ;inicia segmento de codigo mov ah,01h ;Funcion que lee un caracter desde el teclado(leemos el primer numero) sub al,30h ;ajustamos valores de caracter a número acuerdense de interrupciones mov chr1,al ;movemos el primer valor introducido a chr1 mov ah,01h ;funcion leer caracter desde el teclado(leemos el segundo numero) sub al,30h ;Ajustamos valores de caracter a número mov chr2,al ;movemos el segundo valor introducido a chr2 mov ah,02h ;Función de manda a imprimir un caracter a pantalla mov dl,'*' ;mandamos a dl para poder ver en pantalla el caracter ;funcion de interruocion del dos
mov ah,01h ;leemos el tercer numero del teclado sub al,30h ;ajustamos de caracter a numero mov chr3,al ;mandamos el tercer numeroa chr3 mov ah,02h ;mandamos a imprimir a pantalla mov dl,'=' ;se imprime el signo = ;...Realizamos operación... mov al,chr3 ;al = chr3 ;movemos el tercer valor a al mov bl,chr2 ;bl = chr2 ;movemos el segundo caracter a bl mul bl ;realizamos la multiplicacion AL = chr3*chr2 mov Ah,0h ;lee un caracter del teclado AAM ;ajuste ascii despues de multiplicar recuerden ajustes mov ac,ah ;mandamos el valor a (Acarreo) ac = AH mov r2,al ;mandamos el Unidad del resultado a resultado dos r2 = AL mov al,chr3 ;movemos el tercer valoa al A(L = chr3) mov bl,chr1 ;movemos el primer valor a (BL = chr1) mul bl ;realizamos la multiplicacion por el primer valor AL = chr1*chr3 (BL*AL) ;...imaginen que estan haciendo un multiplicacion manual... mov r1,al ;movemos el valor de la Decena del resultador 1 = AL mov bl,ac ;BL = Acarreo anterior add r1,bl ;r1 = r1+ac (r1 + Acarreo)
mov ah,00h ;leemos nuevamente el valor mov al,r1 ;relizamos Asignación para el ajuste (AL = r1) AAM ;ajuste de multiplicacion ASCII mov r1,al ;r1 = AL mov ac,ah ;Acarreo para la Centena del resultado ac = AH ;...Mostramos resultado... mov ah,02h ;mandamos a imprimir a pantalla mov dl,ac add dl,30h ;colocamos la constante de acarreo en el registro dx ;realizamos el ajuste de numero a caracter ;Mostramos ac (Centena) mov ah,02h ;mandamos a imprimir a pantalla mov dl,r1 add dl,30h ;colocamos la constante de resultado en el registro dx ;realizamos el ajuste de numero a caracter ;Mostramos r1 (Decena) mov ah,02h ;mandamos a imprimir a pantalla mov dl,r2 add dl,30h.exit end ;colocamos la constante de resultado en el registro dx ;realizamos el ajuste de numero a caracter ;Mostramos r2 (Unidad) ;salimos del segmento de codigo parecedo a la interrupcion 4c00h ;fin del programa
TITLE Suma ;con lectura desde el teclado.model small ;modelo de la memoria.stack ;tamaño de la memoria.data ;segmento de datos msg db 'Introduce los numeros a sumar $' ;cadena para mostrar en pantalla.code.startup ;instrucción que indica el inicio de nuestro codigo mov ah,09h ;interrupcion para imprimir una cadena lea dx,msg ;obtenemos la direccion de memoria de ms ;ejecutamos la interrupcion mov ah,01h ;interr. lee el caracter 1 del numero 1 ;ejecutamos la interrupcion sub al,30h ;hacemos el ajuste de caracter a numero mov bl,al ;guardamos el numero en bl ;lee el caracter 2 del numero 1 sub al,30h ;hacemos el ajuste de caracter a numero mov cl,al ;movemos a cl ;lee el caracter 1 del numero 2 sub al,30h ;hacemos el ajuste de caracter a número
add bl,al ;lo sumamos a las decenas ;lee el caracter 2 del numero 2 sub al,30h ;hacemos el ajuste de caracter a numero add cl,al ;sumamos a las unidades mov ax,cx ;pasamos el R para convertirlo BCD aaa ;convierte BCD mov cx,ax ;respaldamos el resultado separado add bl,ch ;sumamos el acarreo a las decenas mov ax,bx ;pasamos ax para convertir a BCD aaa ;convertimos BCD separado mov bx,ax ;respaldamos el resultado mov dl,bh ;muevo las centenas a dl add dl,30h ;ajusto las centenas mov ah,02h ;interr. mostrar un caracter ;muestra las sentenas en pantalla mov dl,bl ;muevo las decenas a dl add dl,30h ;ajusto las decenas
;muestro las decenas mov dl,cl ;muevo las unidades a dl add dl,30h ;ajusto las unidades ;muestro las unidades.exit end