Você está na página 1de 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.

: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

ENSAMBLADOR 8086
TASM/MASM

PROGRAMACIN
PRCTICAS DE LABORATORIO

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 1 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

Introduccin

Estas prcticas se han elaborado para orientar a los alumnos de la materia de INFORMTICA BSICA en el aprendizaje de algoritmos computacionales dentro del Lenguaje Ensamblador y el entorno TASM / MASM

Todas las prcticas de laboratorio estarn estructuradas de la siguiente forma:

Objetivo. Recursos. Teora. Desarrollo de ejercicios y entrega de resultados

NOTAS: EL RESULTADO DE CADA PROGRAMA DE ESTA PRCTICA, SE ENVIAR AL CORREO: PROF. ING. JORGE RAMOS GARCIA, josh_ram@hotmail.com (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

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 2 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

PRCTICA OBJETIVO: a) Aprendiendo el uso de ciclos o bucles. 1. Ciclos usando CMP/Jxxx 2. Ciclos usando LOOP b) Uso de DUP

NO.

RECURSOS:

Para implementar los ejercicios de programacin en lenguaje ensamblador se utilizarn las siguientes herramientas de software: Editor: Ensamblador: Enlazador: Depurador:
TEORIA.

EDIT / NE / o cualquier otro que genere archivos ASCII. TASM.EXE TLINK.EXE TD.EXE

n DUP

reserva tantas posiciones del tamao que se indique (DB, DW, DD) como indique n. Ejemplo de un cdigo 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 tamao ; max sin valor inicial .CODE MOV AX, @DATA MOV DS, AX END

La siguiente es una instruccin para el desarrollo de ciclos que se vern en clase y en la prxima practica LOOP LOOP es una instruccin de ciclo. Permite repetir un grupo de instrucciones el nmero 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 direccin indicada por la etiqueta, usando modo de direccionamiento relativo (-128 a +127 Bytes). Si CX es cero se ejecuta la siguiente instruccin. Esta instruccin no afecta a los bits de bandera. Sintaxis: LOOP etiqueta Ejemplo: mov cx,5 ;Nmero de veces que se va repetir el ciclo ciclo: mov ax,bx ;esta instruccin se ejecuta 5 veces loop ciclo ;Decrementa CX y brinca si CX<>0
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 3 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

DESARROLLO DE EJERCICIOS. 1. El siguiente programa es una propuesta de solucin para introducir N datos y determinar el mayor. Los datos no son almacenados una vez que son ledos.
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
Correo Electrnico: josh_ram@hotmail.com

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Pagina 4 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

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 jg _otro_dato mov grande,al jmp _otro_dato sal_ciclo: lea dx, msg_salida mov ah, 09h int 21h mov dl,grande mov ah,02h int 21h ;--------------MOV AH,4CH INT 21H END EXA_PROB_7 ;en caso de que el reciente dato de entrada sea mayor a GRANDE se reasigna el nuevo valor

;continuar leyendo otro dato

;mostrar el numero mayor de toda la lista

2. Del ejercicio dado en el punto 1, modifique el programa para que tambin determine el dato MENOR de la lista dada.

3. En este ejercicio se realiza un programa que solicita nmeros de una lista de datos. Luego verifica cuantos de los valores son pares y cuntos son impares. Ejecute cada uno y verifique sus resultados
a. Primer versin 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
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 5 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

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

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 6 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

sal_ciclo: lea dx, msg_par mov ah, 09h int 21h mov dl,num_par add dl,30h mov ah,02h int 21h lea dx, msg_impar 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

;mostrar el numero de pares

;mostrar el numero de impares

b.

Segunda versin de algoritmo. ( utilizando la instruccin 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
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

; mensaje de antrada
Correo Electrnico: josh_ram@hotmail.com

Pagina 7 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

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 mov bx,1 ;inicio de contador de ciclo

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
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 8 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

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 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 ;mostrar el numero de impares

4.

Revise y ejecute el programa dado a continuacin. 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

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 9 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

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

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 10 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

Realice un programa para imprimir una matriz triangular superior de dimensin 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 minscula o mayscula, si da otro tipo de carcter, 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 carcter a tiene valor ASCII igual a 61h y la letra A tiene como valor ASCII el valor 41h . Ejemplo: Letra:? f posicin en el alfabeto: 6

6. Disee 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

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 11 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

7. Ordenamiento de un vector o lista de datos utilizando el mismo algoritmo pero con mnemnicos diferentes en su codificacin 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,' .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
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

--- Lista ordenada --- ',10,13,'$'

; el registro SI para control del ciclo y la posicion en el vecctor


Correo Electrnico: josh_ram@hotmail.com

Pagina 12 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

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
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 13 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

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 $'
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 14 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

msgnumero2 db ':? $' msglinea db 10,13,'$' msgordenado db 10,13,10,13,' .CODE sort3:

--- Lista ordenada --- ',10,13,'$'

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 mov SI, 1h ciclo_lectura: ;INICIALIZAR EL CONTADOR DE CX PARA EL LOOP ; el registro SI para control del ciclo y la posicion en el vecctor

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
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 15 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

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:
LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 16 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

;--------------- terminar regresar al modo de MSDOS mov ah,4ch int 21h END sort3

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 17 / 18

MATERIA: INFORMATICA BSICA CLAVE: CEI02.09 PREREQUISITOS: Leguaje de programacin. DPTO.: COMUNICACIONES Y ELECTRNICA SALON: 310 TRIM: Otoo 2011

PROFESOR: M. en ING. JORGE RAMOS GARCIA. GPO: A Email: josh_ram@hotmail.com DICIS DIV. INGENIERIAS CAMPUS IRAPUATO-SALAMANCA UNIVERSIDAD DE GUANAJUATO, Salamanca, Gto. Mex. HORARIO: MARTES y JUEVES de 12:00 a 2:00

LENGUAJE ENSAMBLADOR 8086 USANDO TASM/emu8086

Correo Electrnico: josh_ram@hotmail.com

Pagina 18 / 18

Você também pode gostar