Documente Academic
Documente Profesional
Documente Cultură
org 100h
.stack 70h
.data
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
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 cx,9 ; y en el registro cx ponemos 9 que nos servira para el primer ciclo loop
cicloi:
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
cicloj:
ja intercambio;si el numero que hay en al es mayor que el que hay di saltamos a la etiqueta intercambio
mov ah,[di] ;lo que hay en di lo pasamos a ah(ah funicona como una variable auxiliar)
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
int 21h
int 21h
int 21h
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
int 21h
int 21h
int 21h
int 21h
ret