practica_3__otoño2011_informatica
TRANSCRIPT
![Page 1: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/1.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 1 / 18
ENSAMBLADOR 8086 TASM/MASM
PROGRAMACIÓN PRÁCTICAS DE LABORATORIO
![Page 2: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/2.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 2 / 18
Introducción
Estas prácticas se han elaborado para orientar a los alumnos de la materia de INFORMÁTICA BÁSICA en
el aprendizaje de algoritmos computacionales dentro del Lenguaje Ensamblador y el entorno TASM /
MASM
Todas las prácticas de laboratorio estarán estructuradas de la siguiente forma:
Objetivo.
Recursos.
Teoría.
Desarrollo de ejercicios y entrega de resultados
NOTAS:
EL RESULTADO DE CADA PROGRAMA DE ESTA PRÁCTICA, SE ENVIARÁ AL CORREO: PROF. ING. JORGE
RAMOS GARCIA, [email protected] (pantalla de resultados y los archivos fuente .ASM)
REVISE Y ESTUDIE CADA EJERCICIO Y TRATE DE ENTENDERLOS PARA LOS EJERCICIOS QUE SE
REALIZARAN EN LAS SIGUIENTES PRACTICAS.
CUALQUIER DUDA O COMENTARIO FAVOR DE EXPRESARLO
![Page 3: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/3.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 3 / 18
P R Á C T I C A NO. 3
OBJETIVO:
a) Aprendiendo el uso de ciclos o bucles.
1. Ciclos usando CMP/Jxxx
2. Ciclos usando LOOP
b) Uso de DUP
RECURSOS:
Para implementar los ejercicios de programación en lenguaje ensamblador se utilizarán las siguientes herramientas de
software:
Editor: EDIT / NE / o cualquier otro que genere archivos ASCII.
Ensamblador: TASM.EXE
Enlazador: TLINK.EXE
Depurador: TD.EXE
TEORIA.
n DUP reserva tantas posiciones del tamaño que se indique (DB, DW, DD) como indique n.
Ejemplo de un código fichero .asm:
.MODEL small
.STACK 100H
.DATA
max EQU 10 ; declara un constante con valor 100
cad DB 5 DUP („race‟) ; declara una variable llamada cad
; con valor inicial la cadena “race”
dac DB max DUP( ?) ; declara una variable llamada cad de tamaño
; max sin valor inicial
.CODE
MOV AX, @DATA
MOV DS, AX
…
…
END
La siguiente es una instrucción para el desarrollo de ciclos que se verán en clase y en la próxima practica
LOOP
LOOP es una instrucción de ciclo. Permite repetir un grupo de instrucciones el número de veces contenido en CX. Al ejecutarse,
primero decrementa CX en una unidad. Si el contenido de CX es diferente de cero brinca a la dirección indicada por la etiqueta,
usando modo de direccionamiento relativo (-128 a +127 Bytes). Si CX es cero se ejecuta la siguiente instrucción. Esta instrucción
no afecta a los bits de bandera.
Sintaxis:
LOOP etiqueta
Ejemplo:
mov cx,5 ;Número de veces que se va repetir el ciclo
ciclo: mov ax,bx ;esta instrucción se ejecuta 5 veces
loop ciclo ;Decrementa CX y brinca si CX<>0
![Page 4: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/4.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 4 / 18
DESARROLLO DE EJERCICIOS.
1. El siguiente programa es una propuesta de solución para introducir N datos y determinar el mayor. Los datos no son
almacenados una vez que son leídos.
title mayor_menor
;------------------
; ; Informatica Basica
; Universidad de Guanajuato
; Prof Ing. Jorge Ramos Garcia
; ;-----------------------------------
.MODEL SMALL
.STACK
.DATA
entrada db 10,13,'Ingrese numero de datos, N= $'
datox db 10,13,'Dato $'
grande db ? num db ?
msg_salida db 10,13,'El mayor de la lista dada es = $'
.CODE EXA_PROB_7:
MOV AX,@DATA
MOV DS,AX
;--------------- lea dx,entrada ; mensaje de antrada
mov ah,09h
int 21h
mov ah,1 ;lectura de numero de datos, N int 21h
sub al,30h
mov num,al
mov cl,1 ;inicio de contador de ciclo
lea dx,datox ;mensaje para dato
mov ah,09h
int 21h
mov dl,cl ;exhibir contador
add dl,30h
mov ah,02h int 21h
mov dl,'='
mov ah,02h
int 21h
mov ah,01h ;leer primer dato de la lista
int 21h mov grande,al ;suponer que el mayor es el primer dato
_otro_dato:
inc cl ;incrementar contador para otro dato cmp cl,num ; termina ciclo de entrada de datos apartir del segundo en la lista
![Page 5: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/5.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 5 / 18
jg sal_ciclo
lea dx,datox mov ah,09h
int 21h
mov dl,cl add dl,30h
mov ah,02h
int 21h
mov dl,'=' mov ah,02h
int 21h
mov ah,01h ;leer datos apartir del segundo de la lista hasta N datos int 21h
cmp grande,al ;en caso de que el reciente dato de entrada sea mayor a GRANDE se reasigna el nuevo valor
jg _otro_dato mov grande,al
jmp _otro_dato ;continuar leyendo otro dato
sal_ciclo: lea dx, msg_salida ;mostrar el numero mayor de toda la lista
mov ah, 09h
int 21h
mov dl,grande mov ah,02h
int 21h
;--------------- MOV AH,4CH
INT 21H
END EXA_PROB_7
2. Del ejercicio dado en el punto 1, modifique el programa para que también determine el dato MENOR de la lista dada.
3. En este ejercicio se realiza un programa que solicita números de una lista de datos. Luego verifica cuantos de los valores
son pares y cuántos son impares. Ejecute cada uno y verifique sus resultados
a. Primer versión de algoritmo. (leyendo datos y verificando)
title pares_impares
;------------------ ; encontrar numero de pares e impares en una lista
; Informatica Basica
; Universidad de Guanajuato ; Prof Ing. Jorge Ramos Garcia
;
;-----------------------------------
.MODEL SMALL
.STACK
.DATA
![Page 6: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/6.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 6 / 18
entrada db 10,13,'Ingrese numero de datos, N= $'
num_par db 0 num_impar db 0
msg_par db 10,13,'La cantidad de PARES es = $'
msg_impar db 10,13, 'La cantidad de IMPARES es = $'
datox db 10,13,'Dato $' numdatos db ?
base db 2
.CODE n_par_impar:
MOV AX,@DATA
MOV DS,AX ;---------------
lea dx,entrada ; mensaje de antrada
mov ah,09h
int 21h mov ah,1 ;lectura de numero de datos, N
int 21h
sub al,30h
mov numdatos,al mov cl,1 ;inicio de contador de ciclo
continuar:
cmp cl,numdatos jg sal_ciclo
lea dx,datox ;mensaje para dato
mov ah,09h int 21h
mov dl,cl ;exhibir contador
add dl,30h mov ah,02h
int 21h
mov dl,'='
mov ah,02h int 21h
mov ah,01h ;leer datos de la lista
int 21h
mov ah,0
div base
cmp ah,0
je _npar
inc num_impar inc cl
jmp continuar
_npar:
inc num_par inc cl
jmp continuar
![Page 7: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/7.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 7 / 18
sal_ciclo:
lea dx, msg_par ;mostrar el numero de pares mov ah, 09h
int 21h
mov dl,num_par
add dl,30h mov ah,02h
int 21h
lea dx, msg_impar ;mostrar el numero de impares mov ah, 09h
int 21h
mov dl,num_impar
add dl,30h mov ah,02h
int 21h
;--------------- MOV AH,4CH
INT 21H
END n_par_impar
b. Segunda versión de algoritmo. ( utilizando la instrucción DUP() )
title pares_impares_usando_DUP
;------------------
; encontrar numero de pares e impares en una lista
; Informatica Basica ; Universidad de Guanajuato
; Prof Ing. Jorge Ramos Garcia
;
;-----------------------------------
.MODEL SMALL
.STACK
.DATA
entrada db 10,13,'Ingrese numero de datos, N= $'
num_par db 0
num_impar db 0
msg_par db 10,13,'La cantidad de PARES es = $'
msg_impar db 10,13, 'La cantidad de IMPARES es = $'
datox db 10,13,'Dato $'
numdatos db ? base db 2
arreglo db 51 dup(0)
.CODE
n_par_impar_dup:
MOV AX,@DATA MOV DS,AX
;---------------
lea dx,entrada ; mensaje de antrada
![Page 8: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/8.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 8 / 18
mov ah,09h
int 21h
mov ah,1 ;lectura de numero de datos, N int 21h
sub al,30h
mov numdatos,al
;--------------------- inicio de solo lectura del arreglo de numeros para una lista dada
mov cl,1
mov bx,1
leer: cmp cl,numdatos
jg sal_leer
lea dx,datox ;mensaje para dato mov ah,09h
int 21h
mov dl,cl ;exhibir contador
add dl,30h mov ah,02h
int 21h
mov dl,'='
mov ah,02h int 21h
mov ah,1
int 21h sub al,30h
mov arreglo[bx], al
inc cl
inc bx jmp leer
;-------------------------------------------------------------- procesar datos PAR/IMPAR
sal_leer:
mov cl,1 ;inicio de contador de ciclo
mov bx,1
continuar:
cmp cl,numdatos
jg sal_ciclo
mov ah,0
mov al,arreglo[bx]
div base
cmp ah,0
je _npar
inc num_impar inc cl
inc bx
jmp continuar
_npar: inc num_par
inc cl
inc bx
![Page 9: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/9.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 9 / 18
jmp continuar
sal_ciclo:
;-------------------------------------------------------------mostrar resultados
lea dx, msg_par ;mostrar el numero de pares
mov ah, 09h int 21h
mov dl,num_par
add dl,30h
mov ah,02h int 21h
lea dx, msg_impar ;mostrar el numero de impares
mov ah, 09h int 21h
mov dl,num_impar
add dl,30h
mov ah,02h int 21h
;---------------
MOV AH,4CH INT 21H
END n_par_impar_dup
4. Revise y ejecute el programa dado a continuación.
title genarar_matriz
; ----------------
; imprimir una arreglo matricial de simbolos asterisco
; ---------------
.model small
.stack
.data
multiplica db 0
x db ?
y db ?
msgrenglones db 10,13,'Cuantos RENGLONES:? $'
msgcolumnas db 10,13,'Cuantas COLUMNAS:? $'
msgmatriz db 10,13, ' -- LA MATRIZ DE ASTERISCOS SE MUESTRA COMO -- ',10,13,10,13,'$'
.code
programa:
mov ax,@data
mov ds,ax
;-------------
lea dx,msgrenglones
mov ah,09h
int 21h
mov ah,1
int 21h
sub al,30h
mov x,al
lea dx,msgcolumnas
![Page 10: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/10.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 10 / 18
mov ah,09h
int 21h
mov ah,1
int 21h
sub al,30h
mov y,al
;------------------- insertar cambio de linea
mov dl,10
mov ah,2h
int 21h
mov dl,13
int 21h
mov dl,10
mov ah,2h
int 21h
mov dl,13
int 21h
;------------------- generar la salida de la matriz
lea dx,msgmatriz
mov ah,09h
int 21h
mov cl,x
renglones:
push cx ; respaldar el valor de CX en la pila
mov cl,y
columnas:
mov dl,'*'
;add dl,30h
mov ah,2h
int 21h
;------------- insertar dos espacios
mov dl,' '
mov ah,2h
int 21h
mov dl,' '
int 21h
loop columnas
pop cx ;restablecer el valor de CX desde la pila
;------------ insertar una linea
mov dl,10
mov ah,2h
int 21h
mov dl,13
int 21h
loop renglones
;-------------
mov ax,04c00h
int 21h
end programa
![Page 11: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/11.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 11 / 18
Realice un programa para imprimir una matriz triangular superior de dimensión NxN tal como se muestra:
Ej. N=8
********
*******
******
*****
****
***
**
*
5. Realizar un programa que acepte solo una letra del alfabeto (a,..z, A,..,Z), ya sea minúscula o mayúscula, si da otro tipo
de carácter, el programa terminara. Una vez que la entrada sea letra se deberá indicar que lugar tiene dicha letra dentro del
alfabeto, considerando que la letra (“a”) o (“A”) tenga el numero 1. Nota: el carácter “a” tiene valor ASCII igual a 61h
y la letra “A” tiene como valor ASCII el valor 41h .
Ejemplo:
Letra:? f posición en el alfabeto: 6
6. Diseñe un programa que imprima un contador desde 000 hasta 999, cada digito corre de 0 a 9. Nota: utilice ciclos
anidados.
Salida en pantalla:
000
001
002
…..
009
010
…..
099
100
….
999
![Page 12: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/12.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 12 / 18
7. Ordenamiento de un vector o lista de datos utilizando el mismo algoritmo pero con mnemónicos diferentes en su
codificación en el ensamblador.
a). OPCION A.
;----------------------------------------- version 2 del ejemplo de clase dia 3 marzo 2011,
; ordenamiento de una lista de datos introducida por teclado.
;------------------------------------------------------------------------------------------------------
;
title ORDENAMIENTO_V2
.MODEL SMALL
.STACK
.DATA
msgmain db 10,13,10,13,' Ordenamiento de un Vector de datos ',10,13,10,13,'$'
msgleervector db 10,13,' Cuantos elementos son del vector: N= $'
N dw ?
V db 30 dup(?)
msgleerdatos db 10,13,'INTRODUZCA LOS DATOS DEL VECTOR',10,13,'$'
msgnumero db 10,13,'Dato $'
msgnumero2 db ':? $'
msglinea db 10,13,'$'
msgordenado db 10,13,10,13,' --- Lista ordenada --- ',10,13,'$'
.CODE
SORT:
mov ax,@data
mov ds,ax
;------------- inicia lectura del vecctor
mov DX,offset msgmain ; mensaje de enecabezado
mov AH,09h
int 21h
mov DX,offset msgleervector ; mensaje de lectura de N
mov AH,09h
int 21h
mov ah,01h ; leer el valor del numero de elementos del vector
int 21h
sub al,030h
mov ah,0h
mov N,ax ; guardar en N el valor introducido
mov DX,offset msgleerdatos
mov AH,09h
int 21h
mov SI, 1h ; el registro SI para control del ciclo y la posicion en el vecctor
![Page 13: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/13.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 13 / 18
ciclo_lectura:
cmp SI,N
jg salir_lectura
mov DX,offset msgnumero
mov AH,09h
int 21h
mov DX,SI
add DL,30h
mov ah,02h
int 21h
mov DX,offset msgnumero2
mov AH,09h
int 21h
mov ah,1h ; lectura de los elementos del vecctor V
int 21h
mov V[SI],al
inc SI
jmp ciclo_lectura
salir_lectura:
;--------------- inicia algoritmo de ordanamiento de V
mov SI,1 ; primer ciclo anidado con registro SI
ciclo_orden:
mov ax,N ; AX=N
sub AX,1 ; AX=AX-1
cmp SI,AX ; compara SI con N-1 guardado en AX
jg salir_orden
;-----------------
mov DI,SI
inc DI
ciclo_anidado:
cmp DI,N
jg salir_anidado
;----------------- comparar los elementos
mov al,V[SI]
cmp al,V[DI]
JL cont_anidado
MOV AL,V[SI] ;
XCHG AL,V[DI] ; intercambiar AL=V[SI] con V[DI]
MOV V[SI],AL
cont_anidado:
inc DI
jmp ciclo_anidado
salir_anidado:
inc SI
jmp ciclo_orden
;--------------------- finalizacion del algoritmo
![Page 14: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/14.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 14 / 18
salir_orden:
mov DX,offset msgordenado
mov AH,09h
int 21h
mov SI,1 ; iniciar ciclo para mostrar vector ordenado en pantalla
ciclo_prt:
cmp SI,N
jg fin_imprimir
mov dl,V[SI] ; mostrar cada elemento del vector
mov ah,02h
int 21h
mov DX,offset msglinea
mov ah,09h
int 21h
inc SI
jmp ciclo_prt
fin_imprimir:
;--------------- terminar regresar al modo de MSDOS
mov ah,4ch
int 21h
END SORT
b). OPCION B. Uso de LOOP
;----------------------------------------- VERSION 3 del ejemplo de clase dia 4 marzo 2011,
; ordenamiento de una lista de datos introducida por teclado.
;------------------------------------------------------------------------------------------------------
; USO DE LOOP
;******************************************************************************************
************
TITLE ORDENAMIENTO_V3
.MODEL SMALL
.STACK
.DATA
msgmain db 10,13,10,13,' Ordenamiento de un Vector de Datos ',10,13,10,13,'$'
msgleervector db 10,13,' Cuantos elementos son del vector: N= $'
N dw ?
V db 30 dup(?)
msgleerdatos db 10,13,'INTRODUZCA LOS DATOS DEL VECTOR',10,13,'$'
msgnumero db 10,13,'Dato $'
![Page 15: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/15.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 15 / 18
msgnumero2 db ':? $'
msglinea db 10,13,'$'
msgordenado db 10,13,10,13,' --- Lista ordenada --- ',10,13,'$'
.CODE
sort3:
mov ax,@data
mov ds,ax
;------------- inicia lectura del vecctor
mov DX,offset msgmain ; mensaje de enecabezado
mov AH,09h
int 21h
mov DX,offset msgleervector ; mensaje de lectura de N
mov AH,09h
int 21h
mov ah,01h ; leer el valor del numero de elementos del vector
int 21h
sub al,030h
mov ah,0h
mov N,ax ; guardar en N el valor introducido
mov DX,offset msgleerdatos
mov AH,09h
int 21h
MOV cX,N ;INICIALIZAR EL CONTADOR DE CX PARA EL LOOP
mov SI, 1h ; el registro SI para control del ciclo y la posicion en el vecctor
ciclo_lectura:
mov DX,offset msgnumero
mov AH,09h
int 21h
mov DX,SI
add DL,30h
mov ah,02h
int 21h
mov DX,offset msgnumero2
mov AH,09h
int 21h
mov ah,1h ; lectura de los elementos del vecctor V
int 21h
mov V[SI],al
inc SI
loop ciclo_lectura ; CERRAR EL CICLO (CX=CX-1) IF CX=0 TERMINAR LOOP
salir_lectura:
;***************** inicia algoritmo de ordanamiento de V USANDO LOOP EN CADA CICLO
ANIDADO
MOV CX,N
![Page 16: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/16.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 16 / 18
DEC CX
MOV SI,1
CICLO1:
;----------------------------->>>>> 1 CICLO EXTERIOR
PUSH CX
MOV CX, N
SUB CX,SI
MOV DI,SI
INC DI
CICLO2:
;-------------->>>> 2 CICLO INTERIOR
MOV AL,V[SI]
CMP AL,V[DI]
JL SIGUE
MOV AL,V[SI]
XCHG AL,V[DI]
MOV V[SI],AL
SIGUE:
INC DI
;-------------->>>>> 2
LOOP CICLO2
POP CX
INC SI
;----------------------------->>>> 1
LOOP CICLO1
;***************** FIN DEL ALGORITMO DE ORDENAMIENTO
;---------------------------------- INICIAR SALIDA A PANTALLA DEL VECTOR ORDENADO -------------
mov DX,offset msgordenado
mov AH,09h
int 21h
mov SI,1 ; iniciar ciclo para mostrar vector ordenado en pantalla
ciclo_prt:
cmp SI,N
jg fin_imprimir
mov dl,V[SI] ; mostrar cada elemento del vector
mov ah,02h
int 21h
mov DX,offset msglinea
mov ah,09h
int 21h
inc SI
jmp ciclo_prt
fin_imprimir:
![Page 17: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/17.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 17 / 18
;--------------- terminar regresar al modo de MSDOS
mov ah,4ch
int 21h
END sort3
![Page 18: PRACTICA_3__otoño2011_informatica](https://reader035.vdocumento.com/reader035/viewer/2022081811/553cbee8550346e0478b496f/html5/thumbnails/18.jpg)
MATERIA: INFORMATICA BÀSICA PROFESOR: M. en ING. JORGE RAMOS GARCIA. CLAVE: CEI02.09 GPO: A PREREQUISITOS: Leguaje de programación. Email: [email protected] DPTO.: COMUNICACIONES Y ELECTRÒNICA DICIS – DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. SALON: 310 TRIM: Otoño 2011 HORARIO: MARTES y JUEVES de 12:00 a 2:00
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086 Correo Electrónico: [email protected] Pagina 18 / 18