masm

Download masm

If you can't read please download the document

Upload: manfred-alejandro-maidana-burgos

Post on 20-Feb-2016

213 views

Category:

Documents


1 download

DESCRIPTION

assembler

TRANSCRIPT

**********imprime 3 digitos************.model small.stack 100.data;Declaramos nuestras 3 variables, uni (unidades), dece (decenas) y cen (centenas)cen db 0dece db 0uni db 0.codeinicio:mov al,234 ; asigno un valor de 3 digitos en decimal al registro ALaam ;ajusta el valor en AL por: AH=23 Y AL=4mov uni,al ; Respaldo 4 en unidadesmov al,ah ;muevo lo que tengo en AH a AL para poder volver a separar los nmerosaam ; separa lo qe hay en AL por: AH=2 Y AL=3mov cen,ah ;respaldo las centenas en cen en este caso 2mov dece,al ;respaldo las decenas en dec, en este caso 3;Imprimos los tres valores empezando por centenas, decenas y unidades.mov ah,02hmov dl,cenadd dl,30h ; se suma 30h a dl para imprimir el numero real.int 21hmov dl,deceadd dl,30hint 21hmov dl,uniadd dl,30hint 21h;Termina programamov ah,04chint 21hend**********suma de dos digitos**********.model small.stack.datavalor db ?.code.startupmov ah, 01h ;Leer carcter desde el tecladoint 21h ;Lee primer caractersub al, 30h ;Resto 30H (48Dec) para obtener el numeromov valor, al ;Lo guardo en variable valormov ah, 01h ;Leer carcter desde el tecladoint 21h ;Leo el segundo caractersub al, 30h ;Resto 30H (48Dec) para obtener segundo valoradd al, valor ;Realizo la suma de los dos valoresmov dl, al ;Pongo en dl el nmero a imprimiradd dl, 30h ;Agrego 30 (48Dec) para obtener el caractermov ah, 02h ;Funcion para imprimir un carcter en pantallaint 21h.exitend********suma de dos numeros***********;====================================;programa que suma dos numeros cada uno de dos digitos;y le aplica el ajuste en ascii para separar en bcd el;resultado.model tiny.stack.datamsg db 'Echame los numeros a sumar $'.code.startupmov ah,09h ;interrupcion para imprimir una cadenalea dx,msg ;ontenemos la direccion de memoria de msint 21h ;ejecutamos la interrupcionmov ah,01h ;interr. lee el caracter 1 del numero 1int 21h ;ejecutamos la interrupcionsub al,30h ;hacemos el aguste de caracter a numeromov bl,al ;guardamos el numero en blint 21h ;lee el caracter 2 del numero 1sub al,30h ;ajustamos el numeromov cl,al ;copeamos a clint 21h ;lee el caracter 2 del numero 1sub al,30h ;ajustamos el numeromov dl,al ;copeamos a clint 21h ;lee el caracter 1 del numero 2sub al,30h ;ajustamos el numeroadd bl,al ;lo sumamos a las decenasint 21h ;lee el caracter 2 del numero 2sub al,30h ;ajustamos el numeroadd cl,al ;sumamos a las unidadesmov ax,cx ;pasamos el R para convertirlo BCDaaa ;convierte BCDmov cx,ax ;respaldamos el resultado separadoadd bl,ch ;sumamos el acarreo a las decenasmov ax,bx ;pasamos ax para convertir a BCDaaa ;convertimos BCD separadomov bx,ax ;respaldamos el resultadomov dl,bh ;muevo las centenas a dladd dl,30h ;ajusto las centenasmov ah,02h ;interr. mostrar un caracterint 21h ;muestra las sentenas en pantallamov dl,bl ;muevo las decenas a dladd dl,30h ;ajusto las decenasint 21h ;muestro las decenasmov dl,cl ;muevo las unidades a dladd dl,30h ;ajusto las unidadesint 21h ;muestro las unidades.exitend;==========================================*******Lee Cadena y la muestra en una coordenada especifica********;Autor Hector Torres;URL.model small.stack.datacadena db ' $'.code.startup;limpiar pantalla mov ah,00h mov al,03h int 10h;leo un caracter sin eco mov cx,10mov si,0leer: mov ah,07h int 21h ;lee 10 caracteres y los gurda el cadena mov dl,al mov ah,02h int 21h mov cadena[si],al inc si loop leer ;simulando el gotoxymov ah,02hmov dh,10hmov dl,10hmov bx,00hint 10hmov ah,09hmov dx,offset[cadena]int 21h.exitend