;==========================================================
; PROGRAMA : pe26_arr
; FUNCION : Vector ingresa datos .
; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
; FECHA : jueves 27 abril 2017
;=========================================================
title reves.asm
.model small ;Modelo de memoria m?s utilizado
.stack 256h ;se define el espacio necesario para la pila
.data
CR equ 13 ; Constante CR (Retorno de carro) En decimal o
LF equ 10 ; Constante LF (Salto de l?nea) en hex es igual
mens db 'Escribe algo y te lo convierto al reves', CR,LF,'$'
salto db CR,LF,'$'
cadena label byte ;cadena de texto
cant db 20
max db 00
campo db 20 dup(' ')
.code
inicio:
mov ax,@data ; Inicializar correctamente el
mov ds,ax ; registro de datos
push ds ; Guardar ds en vector
pop es ;restaruamos es con sus valores anteriores
mov ah,09h ; Esperar tecla
lea dx,mens ; CARGA ETIQUETA MENSAJE
int 21h ; Llamar a la interrupci?n del DOS
mov ah,0ah ; Esperar tecla
lea dx,cadena ; CARGA ETIQUETA CADENA
int 21h ; Llamar a la interrupci?n del DOS
mov ah,09h ; Esperar tecla
lea dx,salto
int 21h ; Llamar a la interrupci?n del DOS
mov cl,cant
mov bx, offset campo
add bl, cant
loopo:
mov dl,[bx] ; Movemos el siguiente caracter ASCII al dl
mov ah,02h ;Leer car?cter desde el teclado
int 21h ; Llamar a la interrupci?n del DOS
dec bl
dec cl
cmp cl,0
je salir
jmp loopo
salir:
mov dl,[bx] ; Movemos el siguiente caracter ASCII al dl
mov ah,02h ;Leer car?cter desde el teclado
int 21h ; Llamar a la interrupci?n del DOS
mov ax,4c00h ;regresamos el control al sistema operativo
int 21h ; Llamar a la interrupci?n del DOS
end inicio
martes, 2 de mayo de 2017
Programa Multiplicación de dos números
;=======================================================
; PROGRAMA : pe24_mul
; FUNCION : Multimplicacion de dos numeros.
; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
; FECHA : jueves 27 abril 2017
;======================================================
.model small ;Modelo de memoria m?s utilizado
.stack
.data ;definici?n de datos(variables), donde se almacenara informaci?n
.code
chr1 db ?
chr2 db ?
chr3 db ?
r1 db ?
r2 db ?
ac db 0
.startup
;cls
mov ah,00h ;Function(Set video mode)
mov al,03 ;Mode 80x25 8x8 16
int 10h ;Interruption Video
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;ajustamos valores
mov chr1,al ;[chr1].chr2 * chr3 = ac.r1.r2
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;Ajustamos valores
mov chr2,al ;chr1.[chr2] * chr3 = ac.r1.r2
mov ah,02h ;Function(character to send to standard output)
mov dl,'*' ;Character to show
int 21h
mov ah,01h ;Function(Read character)
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr3,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,02h ;Character to send to standar output
mov dl,'=' ;
int 21h ;Interruption DOS functions
;Realizamos operaci?n
mov al,chr3 ;al = chr3
mov bl,chr2 ;bl = chr2
mul bl ;AL = chr3*chr2 (BL*AL)
mov Ah,0h ;
AAM ;ASCII Adjusment
mov ac,AH ;ac = AH (Acarreo)
mov r2,AL ;r2 = AL (Unidad del resultado)
mov al,chr3 ;AL = chr3
mov bl,chr1 ;BL = chr1
mul bl ;AL = chr1*chr3 (BL*AL)
mov r1,al ;r1 = AL (Decena del resultado)
mov bl,ac ;BL = Acarreo anterior
add r1,bl ;r1 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r1 ;AL = r1 (Asignaci?n para el ajust)
AAM ;ASCII Adjustment
mov r1,al ;r1 = AL
mov ac,ah ;ac = AH (Acarreo para la Centena del resultado)
;Mostramos resultado
mov ah,02h
mov dl,ac
add dl,30h
int 21h ;Mostramos ac (Centena)
mov ah,02H
mov dl,r1
add dl,30h
int 21h ;Mostramos r1 (Decena)
mov ah,02H
mov dl,r2
add dl,30h
int 21h ;Mostramos r2 (Unidad)
.exit
end
; PROGRAMA : pe24_mul
; FUNCION : Multimplicacion de dos numeros.
; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
; FECHA : jueves 27 abril 2017
;======================================================
.model small ;Modelo de memoria m?s utilizado
.stack
.data ;definici?n de datos(variables), donde se almacenara informaci?n
.code
chr1 db ?
chr2 db ?
chr3 db ?
r1 db ?
r2 db ?
ac db 0
.startup
;cls
mov ah,00h ;Function(Set video mode)
mov al,03 ;Mode 80x25 8x8 16
int 10h ;Interruption Video
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;ajustamos valores
mov chr1,al ;[chr1].chr2 * chr3 = ac.r1.r2
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;Ajustamos valores
mov chr2,al ;chr1.[chr2] * chr3 = ac.r1.r2
mov ah,02h ;Function(character to send to standard output)
mov dl,'*' ;Character to show
int 21h
mov ah,01h ;Function(Read character)
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr3,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,02h ;Character to send to standar output
mov dl,'=' ;
int 21h ;Interruption DOS functions
;Realizamos operaci?n
mov al,chr3 ;al = chr3
mov bl,chr2 ;bl = chr2
mul bl ;AL = chr3*chr2 (BL*AL)
mov Ah,0h ;
AAM ;ASCII Adjusment
mov ac,AH ;ac = AH (Acarreo)
mov r2,AL ;r2 = AL (Unidad del resultado)
mov al,chr3 ;AL = chr3
mov bl,chr1 ;BL = chr1
mul bl ;AL = chr1*chr3 (BL*AL)
mov r1,al ;r1 = AL (Decena del resultado)
mov bl,ac ;BL = Acarreo anterior
add r1,bl ;r1 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r1 ;AL = r1 (Asignaci?n para el ajust)
AAM ;ASCII Adjustment
mov r1,al ;r1 = AL
mov ac,ah ;ac = AH (Acarreo para la Centena del resultado)
;Mostramos resultado
mov ah,02h
mov dl,ac
add dl,30h
int 21h ;Mostramos ac (Centena)
mov ah,02H
mov dl,r1
add dl,30h
int 21h ;Mostramos r1 (Decena)
mov ah,02H
mov dl,r2
add dl,30h
int 21h ;Mostramos r2 (Unidad)
.exit
end
Programa Suma de dos números
;=========================================================
; PROGRAMA : pe22_sum
; FUNCION : Suma de dos numeros.
; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
; FECHA : jueves 27 abril 2017
;========================================================
.model small
.stack 100
.data
msj1 db 'Numero 1: ','$'
msj2 db 13,10,'Numero 2: ','$'
msj3 db 13,10,'Suma: ','$'
msj5 db 13,10,'Multiplicacion: ','$'
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 suma
int 21h
mov dl,bl ;pongo en dl el numero a imprimir var2(bl)
add dl,30h ; agrego 30h para obtener el caracter
mov ah,02h ;imprime un caracter
int 21h
;******************MULTIPLICACION
mov ah,09h
lea dx,msj5 ;desplegar mult
int 21h
mov al,var1
mov bl,var2
mul bl ;mult al=al*bl
mov dl,al ;mover al a dl para imprimir
add dl,30h ;sumar 30 para obtener caracter
mov ah,02h ;imprimir caracter
int 21h
.exit
; ****************PROCEDIMIENTOS
salto proc near
mov ah,09h
lea dx,linea
int 21h
mov dl,00h
ret
salto endp
leer proc near
mov ah,01h;leer caracter desde el teclado
int 21h;lee primer caracter
ret
leer endp
limpia proc near
mov ah,00h
mov al,03h
int 10h
ret
limpia endp
end
; PROGRAMA : pe22_sum
; FUNCION : Suma de dos numeros.
; REALIZADO POR : Yesenia Lizbeth Guerrero Garcia
; FECHA : jueves 27 abril 2017
;========================================================
.model small
.stack 100
.data
msj1 db 'Numero 1: ','$'
msj2 db 13,10,'Numero 2: ','$'
msj3 db 13,10,'Suma: ','$'
msj5 db 13,10,'Multiplicacion: ','$'
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 suma
int 21h
mov dl,bl ;pongo en dl el numero a imprimir var2(bl)
add dl,30h ; agrego 30h para obtener el caracter
mov ah,02h ;imprime un caracter
int 21h
;******************MULTIPLICACION
mov ah,09h
lea dx,msj5 ;desplegar mult
int 21h
mov al,var1
mov bl,var2
mul bl ;mult al=al*bl
mov dl,al ;mover al a dl para imprimir
add dl,30h ;sumar 30 para obtener caracter
mov ah,02h ;imprimir caracter
int 21h
.exit
; ****************PROCEDIMIENTOS
salto proc near
mov ah,09h
lea dx,linea
int 21h
mov dl,00h
ret
salto endp
leer proc near
mov ah,01h;leer caracter desde el teclado
int 21h;lee primer caracter
ret
leer endp
limpia proc near
mov ah,00h
mov al,03h
int 10h
ret
limpia endp
end
Suscribirse a:
Entradas (Atom)