Documentos de Académico
Documentos de Profesional
Documentos de Cultura
.model small
.stack
.data
.code
INICIO: inicio del bloque del cdigo
mov ax,@data asigna valores a l registro ax
mov ds,ax
mov ax,4c00h
int 21h
end INICIO fin del bloque de cdigo
MTODOS
Pueden contener cualquier nombre y deben ser llamados con la palabra call
tecla proc near inicion del cuerpo del metodo
mov ah,07h hace pausa y captura una tecla que se almacena en registro al
int 21h interruccion
ret fin del metodo
tecla endp fin del cuerpo de mtodo
mens proc near
mov ah,09h lee una cadena de texto
int 21h
ret
mens endp
caract proc near
mov dl, al asigna a dl, el contenido de al (cdigo ascii)
mov ah,02h imprime un caracter correspondiente a ascii
int 21h
ret
caract endp
fin proc near
mov ax,4c00h cierre del bloque del cdigo principal
int 21h
ret
fin endp
borrar proc near
mov ax,0003h borra pantalla
int 10h interrupcin
ret
borrar endp
Variables
asignar cadenas
cad db Hola Mundo $
asignar cadenas con saltos de lnea
me db 10,13,Hola mundo$ cadena con salto de lnea al principio
ma db Hola mundo, 10,13,$ cadena con salto de lnea al final
mo db Hola mundo, 10,13,
db Como ests, 10,13, cadena con texto que tiene salto de lnea en una sola variable
variables sin asignacin
x db ?
y db ?
z db ?
Esto indica que las variables no tienen valor
Etiquetas
Encierran un determinado bloque de cdigo que puede ser usado en cualquier parte del
programa mediante los saltos
etiqueta: Inicio de la puerta de la etiqueta
lea dx, cad asigna a dx una varible que contiene texto
call mens llama al mtodo que imprime una cadena
En este caso las etiquetas no tienen un fin siguen hasta que el cdigo finalice
Saltos
Saltan a determinadad etiquetas segn corresponda
loop salto corto sin condicin
jmp salto largo sin condicin
cmp al,48 inicio de condicin
ja si al es mayor salta a etiqueta
jb si al es menor salta a etiqueta
je si al es igual salta a etiqueta
Etiqueta:
cmp al,47
ja mayor
jb menor
je igual
mayor:
loop etiqueta
menor:
loop etiqueta
igual:
jmp salir en caso de que loop no funciones por desborsamiento
salir:
call fin
los saltos se pueden producir aunque las etiquetas estn antes o despus de la condicin
salir:
call fin
compara:
cmp al,28
ja salir
loop continuar
continua:
lea dx,mo
call mens
loop compara
1
Realizar la Resta de Dos nmeros
.model small
.stack
.data
m db "Ingrese el primer numero:",10,13,"$"
m2 db 10,13,"Ingrese el segundo numero:",10,13,"$"
m3 db 10,13,"El resultado de la resta es:",10,13,"$"
x db ?
y db ?
.code
inicio:
call cls
mov ax,@data
mov ds,ax
lea dx,m
call impm
primero:
call capt
cmp al,48
jb primero
cmp al,57
ja primero
call impc
mov x,al
lea dx,m2
call impm
segundo:
call capt
cmp al,48
jb segundo
cmp al,57
ja segundo
call impc
mov y,al
mov al,x
sub al,y
add al,48
mov x,al
lea dx,m3
call impm
mov al,x
call impc
call capt
call fin
capt proc near
mov ah,07h
int 21h
ret
capt endp
impm proc near
2
mov ah,09h
int 21h
ret
impm endp
impc proc near
mov dl, al
mov ah,02h
int 21h
ret
impc endp
cls proc near
mov ax,0003h
int 10h
ret
cls endp
fin proc near
mov ax,4c00h
int 21h
ret
fin endp
end inicio
Realizar la suma de dos nmeros de dos cifras
.model small
.stack
.data
m1 db "1 Suma",10,13
db "Presione enter para salir ",10,13,"$"
m2 db "Ingrese el primer numero",10,13,"$"
m3 db 10,13,10,13,"Ingrese el segundo numero",10,13,"$"
m4 db 10,13,10,13,"El resultado es: $"
v db ?
w db ?
x db ?
y db ?
z db ?
.code
INICIO:
call borrar
mov ax,@data
mov ds,ax
lea dx,m1
call mens
tecle:
call tecla
cmp al,13
3
je salir
cmp al,49
je ingreso1
ja tecle
jb tecle
salir:
call tecla
call fin
ingreso1:
call borrar
lea dx,m2
call mens
wr:
call tecla
cmp al,13
je cerow
loop blockw
blockw:
cmp al,48
jb wr
cmp al,57
ja wr
loop mostrarw
cerow:
mov al,48
loop mostrarw
mostrarw:
call caract
mov w,al
loop xr
xr:
call tecla
cmp al,13
je cerox
loop blockx
blockx:
cmp al,48
jb xr
cmp al,57
ja xr
loop mostrarx
cerox:
mov al,w
mov x,al
4
mov al,48
mov w,al
mov al,x
loop mostrarx
mostrarx:
mov x,al
call borrar
lea dx,m2
call mens
mov al,w
call caract
mov al,x
call caract
loop ingreso2
ingreso2:
lea dx,m3
call mens
yr:
call tecla
cmp al,13
je ceroy
loop blocky
blocky:
cmp al,48
jb yr
cmp al,57
ja yr
loop mostrary
ceroy:
mov al,48
loop mostrary
mostrary:
call caract
mov y,al
loop zr
zr:
call tecla
cmp al,13
je ceroz
loop blockz
blockz:
cmp al,48
jb zr
cmp al,57
ja zr
loop mostrarz
5
ceroz:
mov al,y
mov z,al
mov al,48
mov y,al
mov al,z
loop mostrarz
mostrarz:
mov z,al
call borrar
lea dx,m2
call mens
mov al,w
call caract
mov al,x
call caract
lea dx,m3
call mens
mov al,y
call caract
mov al,z
call caract
loop resz
resz:
mov v,48
mov al,x
add z,al
sub z,48
mov al,z
cmp al,57
ja cifra
jb resw
cifra:
sub al,10
mov z,al
mov v,49
loop resw
resw:
mov al,y
add w,al
sub w,48
mov al,v
mov v,48
add w,al
sub w,48
mov al,w
cmp al,57
ja cifra1
6
jb mostrares
cifra1:
sub al,10
mov w,al
mov v,49
jb mostrares
mostrares:
lea dx,m4
call mens
mov al,v
call caract
mov al,w
call caract
mov al,z
call caract
call tecla
jmp inicio
tecla proc near
mov ah,07h
int 21h
ret
tecla endp
mens proc near
mov ah,09h
int 21h
ret
mens endp
caract proc near
mov dl, al
mov ah,02h
int 21h
ret
caract endp
fin proc near
mov ax,4c00h
int 21h
ret
fin endp
borrar proc near
mov ax,0003h
int 10h
ret
borrar endp
end INIICIO