Ejemplos de programas
. COMMENT TIPO CABEZA
*****************************************************************************************************************************
PRIMERO ASM - EJEMPLO DE PROGRAMA
********************************************************************************************************************************
MODEL TINY MODELOS DE MEMORIA PEQUEÑO
. DATA DECLARAR VARIABLES .CONST
MENSAJE DB " MI PRIMER PROGRAMA "
. CODE TO LO VENGA ES PROGRAMA CUERPO PRINCIPAL DEL PROGRAMA
INICIO
MOV DX , OFFSET MENSAJE ; DIR COD . TEXTO
MOV AH , 9 ; FUNCION IMP.CAD
INT 21H ; LLAMANDO SO
MOV AH , 4CH ; FUNC . FIN PROGRAMA
INT 21H ; LLAMADA AL SO
END INICIO ; FIN CUERPO PRINCIPAL
END. ; FIN DEL PROGRAMA
Ejemplo de programa
COMMENT GENERAR UN COMENTARIO TIPO CABEZA
***************************************************************************** ***********************************
SUMA ASM_RUTINA DE SUMA
**********************************************************************************************************************
MODEL TINY
. DATA
NUM 1 DB BYTE
NUM 2 DB BYTE
RESULTADO DB BYTE
. CODE CUERPO PRINCIPAL DEL PROGRAMA
INICIOMOV DL , NUM 1 ; CARGA NUM 1 A DL
MOV AL , DL ; CARGA DL EN AL
MOV DL , NUM 2 ; CARGA NUM 2 A DL
ADD AL , DL ; SUMA DL CON AL
MOV RESULTADO , AL ; CARGA AL EN RESULTADO
END INICIO FIN DEL CUERPO PRINCIPAL
END. FIN DEL PROGRAMA
N
|
Rutina
|
DESCRIPCION
|
1
|
Mov Cx , S ;
|
Carga S en C x
|
2
|
Mov Bx , 0 ;
|
Carga 0 en Bx
|
3
|
Mov Di , Bx ;
|
Carga el
valor Bx en el registro Di
|
4
|
Mov Si , Bx ;
|
Carga el
valor Bx en el registro SI
|
5
|
Otra vez CMP ARRAY [Bx] 20;
|
Compara el valor el valor del arreglo con 20
|
6
|
JB MENOR;
|
Si en la comparación es 20 , salta a menor
|
7
|
INC DI;
|
Se incrementa el registro DI
|
8
|
IMP SEGUIR ;
|
Se realiza un salto a seguir
|
9
|
MENOR INC SI ;
|
Se aumenta el valor de SI
|
10
|
SEGUIR ADD BX 2;
|
A Bx se le suma 2
|
11
|
DEC CX;
|
Disminuye
el valor de Cx
|
12
|
JNZ
OTRA_VEZ;
|
Salta a
OTRA_VEZ si ≠ 0
|
13
|
MOV AX,DI;
|
Carga
DI en
AX
|
14
|
CMP AX , SI;
|
Realiza un comparación entre AX y Si
|
15
|
JNB MAS.20;
|
Salta a MAS_20 si
AX CON Si es mayor o igual
|
16
|
JMP MENOS 20
|
Salta a MENOS_20
|
FUNCIONAMIENTO DE LA RUTINA
esta rutina basicamnete recorre un arreglo y realiza comparaciones entre el valor de bx o del arreglo al numero 20 , posteriormente realiza un salto para verificar si es menor o igual , el siquiente paso es aumentar el avlor de DI y luego hace un salto a sequir y aumentar el valor de SI que es un contador y DI se encargara de contar los iguales o mayores y SI se encarga de contar los menores , ahora le sumamos 2 al registro bx y disminuimos el valor de cx luego hacemos un salto a OTRA_vez y si resulta ser ≠ 0 el valor que esta en DI pasa a AX realizamos una comparacion entre AX y SI y realizamos un salto a MAS_20 si la comparacion de AX CON SI ES >= SI esta no se cumple entonces el salto sera haci MENOS_20
N
|
RUTINA
|
DESCRIPCION
|
1
|
MOV CX , 4;
|
CARGA 4 EN CX
|
2
|
MOV BX , 0 ;
|
CARGA 0 EN BX
|
3
|
MOV DI
, BX ;
|
CARGA EL VALOR DE BX EN EL REGISTRO DI
|
4
|
MOV SI , BX ;
|
CARGA EL VALOR DE BX EN EL REGISTRO SI
|
5
|
OTRA_ VEZ CMP ARRAY [BX], 2F
|
COMPARA EL VALOR DEL ARREGLO EN 2F
|
6
|
JBE
MENOR ;
|
SALTA A “ MENOR “
|
7
|
INC
DI ;
|
INCREMENTA EL REGISTRO DI
|
8
|
IMP SEGUIR ;
|
SALTA A “ SEGUIR ”
|
9
|
MENOR INC SI ;
|
INCREMENTA EL REGISTRO SI
|
10
|
SEGUIR
ADD BX , 2 ;
|
SUMA 2 CON BX
|
11
|
LOOP OTRA_VEZ ;
|
REPETIR HASTA QUE CX = 0
|
La rutina recorre el arreglo y realiza comparaciones entre BX y 2F y salta a MENOR buscando que sea menor o igual , luego incrementamos t DI y saltamos a SEGUIR e incrementamos SI para realizar una suma de 2 a bx y repetir el ciclo OTRA_VEZ hasta que cx valga 0
N
|
RUTINA
|
DESCRIPCION
|
1
|
MOV AX , 30 ;
|
CARGA 30 EN AX
|
2
|
OTRA_VEZ DEC AX;
|
DECREMENTAR AX
|
3
|
CMP AX , 20 ;
|
COMPARA 20 CON AX
|
4
|
JNE OTRA_VEZ ;
|
SALTO DE COMPARACION DE SIGNO
|
5
|
ADICCIONAR INC AX ;
|
INCREMENTAR EL VALOR DE AX
|
6
|
CMP AX , 80 ;
|
COMPARA 80 CON AX
|
7
|
JBE ADICCIONAR :
|
SALTA SI 80 ES MENOR O IGUAL AX
|
8
|
MOV RESULT , AX ;
|
CARGA AX EN RESULT
|
N
|
RUTINA
|
DESCRIPCION
|
1
|
MOV CX , 9 ;
|
CARGA 9 EN
CX
|
2
|
MOV AX , 0 ;
|
CARGA 0 EN AX
|
3
|
MOV
SI , AX ;
|
INICIALIZA
EL INDICE
|
4
|
CICLO ADD AX , S ;
|
SUMA S EN
AX
|
5
|
MOV ARRAY [SI] ; AX ;
|
CARGA EL ARREGLO CON AX EN POSICION SI
|
6
|
ADD SI , 2;
|
INCREMENTA EL INDICE
|
7
|
LOOR , CICLO ;
|
VUELVE AL CICLO
|
No hay comentarios:
Publicar un comentario