método de ordenación de burbuja en ensamblador ayuda?
ojala y alguien me pueda decir en donde esta la falla en mi código en lenguaje ensamblador, ya intenté ensamblar con MASM 6.11, lo ensambla, pero cuando lo ejecuto, aparecen caracteres sin ninguna lógica, estoy intentando realizar el método de ordenación de burbuja.
.dosseg
.model small
.stack 100h
.data
num db 10 dup (0)
salto db cr,lf,'$'
cr equ 10
lf equ 13
.code
mov dx,@data
mov ds,dx
lea si,num
mov si,0
mov cx,10
inicio:
mov ah,01h
int 21h
mov num[si],al
mov ah,09
mov dx,offset salto
int 21h
inc si
loop inicio
mov si,0
mov cx,10
imprime:
mov ah,02h
mov dl,num[si]
int 21h
mov ah,02h
mov dl,' '
int 21h
inc si
loop imprime
lea di,num
mov di,0
mov si,0
mov cx,10
ciclo1:
push cx
; mov al,num[si]
mov cx,10
ciclo2:
; mov ah,num[di]
cmp num[si],num[di]
ja intercambio
jmp sigue
intercambio:
mov al,num[si]
mov num[si],num[di]
mov num[di],al
;mov num[si],ah
;mov num[di],al
;mov al,ah
sigue:
inc di
loop ciclo2
inc si
pop cx
loop ciclo1
mov si,0
mov cx,10
print:
mov ah,02h
mov dl,num[si]
int 21h
mov ah,02h
mov dl,' '
int 21h
inc si
loop print
mov ah,4ch
int 21h
end
2 respuestas
- hace 1 décadaRespuesta preferida
Hola, pues de entrada no se mucho de lenguaje ensamblador, entonces de lo poco que le entiendo a tu codigo creo que esta bien, ahora a mi me ha pasado que cuando lo ensamblo, me manda caracteres sin sentido, porque me equivoco en la asignacion de los ciclos, y entonces me manda solo la direccion del espacio en memoria, mas no del dato, osea me da algun numero en hexadecimal y todo eso, yo te recomiendo que cheques bien tu ciclo del bubble, puedes darte una idea si esta bien, haciendo primero el programa en c o cualquier otro lenguaje que manejes y de esta forma checar bien la logica del ensamblador, tambien te recomiendo buscar ayuda en foros especializados, aqui en yahoo es muy dificil que alguien te de una buena respuesta o que te saquen al 100% de tu duda.
Espero te sirva esta informacion.
Fuente(s): Estudiante ingenieria en informatica. - tusitoLv 4hace 1 década