Sunteți pe pagina 1din 7

name "burbuja"

org 100h

.stack 70h

.data

vec db 10 dup (?)

dat1 db ?

dat2 db ?

dat3 db ?

numero db ?

indicador dw 1

.code

mov cx,9

k1:

call num

loop k1

call ordena

mov ah,02h

mov dx,0ah

int 21h

mov ah,02h

mov dx,08h

int 21h

mov ah,02h

mov dx,08h

int 21h
mov ah,02h

mov dx,08h

int 21h

mov cx,9

k2:

call imprimir

loop k2

sub ah,ah

sub al,30h

sub dh,dh

mov dl,100

mul dx

MOV dat1, al

mov ah,01

int 21h

sub ah,ah

sub al,30h

mov dl,10

mul dl

MOV dat2, al

mov ah,01h

int 21h
sub ah,ah

MOV dat3, al

sub dat3, 30h

mov bx,cx

mov vec[bx],dl

mov ah,02h

mov dx,0ah

int 21h

mov ah,02h

mov dx,08h

int 21h

mov ah,02h

mov dx,08h

int 21h

mov ah,02h

mov dx,08h

int 21h

ret

ordena:

mov si,0 ;poenmos nuestro indice a cero

mov cx,9 ; y en el registro cx ponemos 9 que nos servira para el primer ciclo loop

cicloi:

push cx;guardamos el valor que pusimos en cx en la pila

mov cx,9 ; luego volvemos a poner 9 en cx lo que nos servira para el segundo ciclo loop
mov si, offset vec ; ponemos los valores que estan guardados en nuestro arreglo en si

mov di,si ;luego pasamos si a di

cicloj:

inc di ;incrementamos en uno a di, es decir, di=di+1

mov al,[si] ;luego lo que esta es si lo pasamos a al registro al

cmp al,[di] ; luego hacemos la comparacion

ja intercambio;si el numero que hay en al es mayor que el que hay di saltamos a la etiqueta intercambio

jmp imasi ; de lo contrario saltamos a imasi

intercambio: ;aqui hacemos el intercambio de valores

mov ah,[di] ;lo que hay en di lo pasamos a ah(ah funicona como una variable auxiliar)

mov [di],al;luego lo que hay en al se pasa a di

mov [si],ah ;y lo que hay en ah lo pasamos a si

imasi:;en esta etiqueta solo incrementamos a si en uno es decir si=si +1

inc si

ret

imprimir:;

mov dat1,0h

mov dat2,0h

mov dat3,0h

mov bx,indicador

mov al,vec[bx]

sub ah,ah

mov dl,100

div dl

mov dat1,al
mov al,ah

sub ah,ah

mov dx,10

div dl

add dat1,30h

add dat2,30h

add dat3,30h

mov ah, 02h

mov dl, dat1

int 21h

mov ah, 02h

mov dl, dat2

int 21h

mov ah, 02h

mov dl, dat3

int 21h

mov ah, 02h

mov dx, 0ah

int 21h

add indicador,1
ret

imprimirC:;10 9 8 7

mov dat1,0h

mov dat2,0h

mov dat3,0h

mov bx,cx

mov al,vec[bx]

sub ah,ah

mov dl,100

div dl

mov dat1,al

mov al,ah

sub ah,ah

mov dx,10

div dl

mov dat2,al

mov dat3,ah
add dat1,30h

add dat2,30h

add dat3,30h

mov ah, 02h

mov dl, dat1

int 21h

mov ah, 02h

mov dl, dat2

int 21h

mov ah, 02h

mov dl, dat3

int 21h

mov ah, 02h

mov dx, 0ah

int 21h

ret

S-ar putea să vă placă și