Está en la página 1de 3

**********imprime 3 digitos************

.model small
.stack 100
.data
;Declaramos nuestras 3 variables, uni (unidades), dece (decenas) y cen (centenas
)
cen db 0
dece db 0
uni db 0
.code
inicio:
mov al,234 ; asigno un valor de 3 digitos en decimal al registro AL
aam ;ajusta el valor en AL por: AH=23 Y AL=4
mov uni,al ; Respaldo 4 en unidades
mov al,ah ;muevo lo que tengo en AH a AL para poder volver a separar los nmeros
aam ; separa lo qe hay en AL por: AH=2 Y AL=3
mov cen,ah ;respaldo las centenas en cen en este caso 2
mov dece,al ;respaldo las decenas en dec, en este caso 3
;Imprimos los tres valores empezando por centenas, decenas y unidades.
mov ah,02h
mov dl,cen
add dl,30h ; se suma 30h a dl para imprimir el numero real.
int 21h
mov dl,dece
add dl,30h
int 21h
mov dl,uni
add dl,30h
int 21h
;Termina programa
mov ah,04ch
int 21h
end
**********suma de dos digitos**********
.model small
.stack
.data
valor db ?
.code
.startup
mov ah, 01h ;Leer carcter desde el teclado
int 21h ;Lee primer caracter
sub al, 30h ;Resto 30H (48Dec) para obtener el numero
mov valor, al ;Lo guardo en variable valor
mov ah, 01h ;Leer carcter desde el teclado

int 21h ;Leo el segundo caracter


sub al, 30h ;Resto 30H (48Dec) para obtener segundo valor
add al, valor ;Realizo la suma de los dos valores
mov dl, al ;Pongo en dl el nmero a imprimir
add dl, 30h ;Agrego 30 (48Dec) para obtener el caracter
mov ah, 02h ;Funcion para imprimir un carcter en pantalla
int 21h
.exit
end
********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
.data
msg db 'Echame los numeros a sumar $'
.code
.startup
mov ah,09h ;interrupcion para imprimir una cadena
lea dx,msg ;ontenemos la direccion de memoria de ms
int 21h ;ejecutamos la interrupcion
mov
int
sub
mov

ah,01h ;interr. lee el caracter 1 del numero 1


21h ;ejecutamos la interrupcion
al,30h ;hacemos el aguste de caracter a numero
bl,al ;guardamos el numero en bl

int 21h ;lee el caracter 2 del numero 1


sub al,30h ;ajustamos el numero
mov cl,al ;copeamos a cl
int 21h ;lee el caracter 2 del numero 1
sub al,30h ;ajustamos el numero
mov dl,al ;copeamos a cl
int 21h ;lee el caracter 1 del numero 2
sub al,30h ;ajustamos el numero
add bl,al ;lo sumamos a las decenas
int
sub
add
mov
aaa
mov

21h ;lee el caracter 2 del numero 2


al,30h ;ajustamos el numero
cl,al ;sumamos a las unidades
ax,cx ;pasamos el R para convertirlo BCD
;convierte BCD
cx,ax ;respaldamos el resultado separado

add
mov
aaa
mov
mov
add
mov
int

bl,ch ;sumamos el acarreo a las decenas


ax,bx ;pasamos ax para convertir a BCD
;convertimos BCD separado
bx,ax ;respaldamos el resultado
dl,bh ;muevo las centenas a dl
dl,30h ;ajusto las centenas
ah,02h ;interr. mostrar un caracter
21h ;muestra las sentenas en pantalla

mov dl,bl ;muevo las decenas a dl


add dl,30h ;ajusto las decenas

int 21h ;muestro las decenas


mov dl,cl ;muevo las unidades a dl
add dl,30h ;ajusto las unidades
int 21h ;muestro las unidades
.exit
end
;==========================================
*******Lee Cadena y la muestra en una coordenada especifica********
;Autor Hector Torres
;URL
.model small
.stack
.data
cadena db '

$'

.code
.startup
;limpiar pantalla
mov ah,00h
mov al,03h
int 10h
;leo un caracter sin eco
mov cx,10
mov si,0
leer:
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 gotoxy
mov
mov
mov
mov
int

ah,02h
dh,10h
dl,10h
bx,00h
10h

mov ah,09h
mov dx,offset[cadena]
int 21h
.exit
end

También podría gustarte