Entradas

Mostrando las entradas de mayo, 2010

Contador 0 al 9 en ensamblador

.model small .stack 100 .data .code .startup mov cx,00h ; inicializo contador en cero repite: mov dl,cl ; muevo el valor del contador a dl para imprimir inc cl ; incremento el contador en uno add dl,30h ; sumo 30h a dl para convertirlo al codigo ascii y poder imprimirlo mov ah,02h ; funcion para imprimir un caracter int 21h ; imprimo cmp cl,10 ; compara si en el contador hay un 10 je salir ; si la comparacion es verdadera salta a salir jne repite ; sino es verdadera la ultima comparacion regresa a repite salir: .exit end

Area y perimetro de un rectangulo en ensamblador

; programa que calcula el area y perimetro de un rectangulo ; by angel .model small .stack 100 .data dos equ 2 ; declaracion de constante=2 m1 db 10,13,"Introduce la base: $" m2 db 10,13,"Introduce la altura: $" m3 db 10,13,10,13,"Area: $" m4 db 10,13,"Perimetro: $" m5 db "Area y perimetro de un rectangulo",10,13,'$' base db 0 altura db 0 unidades db 0 decenas db 0 .code .startup call cls ; imprime titulo mov ah,09h lea dx,m5 int 21h ; imprime introduce la base lea dx,m1 int 21h ; pide la base mov ah,01h int 21h sub al,30h mov base,al ; imprime introduce la altura mov ah,09h lea dx,m2 int 21h ; pide la altura mov ah,01h int 21h sub al,30h mov altura, al ;*********************** calcula area mov al,base mul altura ; multiplica: al * altura y el resultado queda en al aam mov decenas,ah mov unidades,al ; imprime el area es mov ah,09h lea dx,m3 int 21h call imprime2digitos ;

Suma, resta, multiplicacion y division en ensamblador

; suma, resta, multiplicacion y division sin tomar en cuenta el acarreo ; el 13,10 es un salto de linea .model small .stack 100 .data msj1 db 'Numero 1: ','$' msj2 db 13,10,'Numero 2: ','$' msj3 db 13,10,'Suma: ','$' msj4 db 13,10,'Resta: ','$' msj5 db 13,10,'Multiplicacion: ','$' msj6 db 13,10,'Division: ','$' linea db 13,10,'$' var1 db 0 var2 db 0 .code .startup call limpia mov ah,09h lea dx, msj1 ;desplegar numero 1: int 21h call leer ;lee primer numero sub al,30h ;restar 30h para obtener el numero mov var1,al ;lo guardo en var1 mov ah,09h lea dx, msj2 ;desplegar numero 2: int 21h call leer ;lee segundo numero sub al,30h ;restar 30h para obtener segundo valor mov var2,al ;guardar en var2 mov bl,var2 ;mover a bl ;******************* SUMA add bl,var1 ; realizo la suma de var2(bl) y var1 y el resultado queda en bl mov ah,09h lea dx,msj3 ;imprimir s

Imprimir numero de tres digitos en ensamblador

; Programa que imprime un valor de 3 digitos en ensamblador ; autor: angel .model small .stack 100 .data c db 0 d db 0 u db 0 .code mov al,198 ; asigno un valor de 3 digitos en decimal a AL aam ;separa SIEMPRE lo que hay en AL por: AH=19 Y AL=8 mov u,al ; guardo el 8 a las unidades mov al,ah ; muevo lo que tengo en AH a AL para poder volver a separar los numeros aam ; separa lo qe hay en AL por: AH=1 Y AL=9 mov c,ah ; guarda el AH=1 a las centenas mov d,al ; guarda el AL=9 a las decenas mov ah,02h ; funcion para imprimir un caracter mov dl,c ; muevo las centenas a DL para poder imprimir add dl,30h ; sumo 30h a DL para imprimir el numero real y no otro caracter int 21h ; imprime 1 mov dl,d add dl,30h int 21h ; imprimie 9 mov dl,u add dl,30h int 21h ; imprime 8 .exit end

Abecedario en ensamblador

.model small .stack 100 .data mayus db 65 minus db 98 .code .startup mov ah,00h ;limpia pantalla mov al,03h int 10h mov cx,13 ;hacer 13 veces repite: mov ah,02h mov dl,mayus int 21h mov dl,minus int 21h add mayus,2 add minus,2 loop repite .exit end

Imprimir cadena en ensamblador

.model small .stack 100 .data msg db 'hola mundo$' .code ; inicializacion de variables mov ax, @data mov ds,ax mov ah,09h ;funcion para imprimir una cadena lea dx, msg ; carga a dx lo qe hay en msg int 21h ; imprime la cadena .exit end

Imprimir un caracter en ensamblador

.model small .stack 100 .code mov ah, 02h ; funcion para imprimir un caracter mov dx, 64 ; mover un 64 a Dx para imprimir en pantalla int 21h ; ejecuta la funcion .exit end