Título: problema con saltos en assembler Publicado por: p4nd4criss en 8 Septiembre 2012, 20:20 pm hola a todos
soy novato con el assembler estoy tratando de resolver este problema. un programa k lea 10 números y guarde en un dirección de memoria el numero de negativos tengo un problema con el salto. no salta, se supone k salte si el numero es negativo ,para k no llame a la funcion, pero no salta, me pueden dar una sugerencia? ya intente con todo, ja jb je js jl etc... Código: org 100h gracias Título: Re: problema con saltos en assembler Publicado por: ~ en 8 Septiembre 2012, 20:42 pm Comparar 0 con AX siempre va a dar igual a cero o negativo.
Código: mov dX,0 Tal vez si se usa JL: Código: JL menor;<<<aki es donde no salta o salta cuando no debe Pero lo mejor sería poner el pseudocódigo, como algo tipo C, para ver si tiene sentido lo que se trata de hacer. JL comprueba que SF != OF. JS solo comprueba que SF = 1. Aquí SF (bandera de signo) siempre va a ser 1 (o sea número negativo) a menos que AX sea 0 porque con cmp dx,ax, siempre se comprueba la resta de 0-AX. Título: Re: problema con saltos en assembler Publicado por: Nop+ en 19 Septiembre 2012, 23:28 pm Más o menos sería esto, te lo he puesto comentado para que te des cuenta de cada una de las instrucciones
xor esi,esi xor ecx,ecx xor eax,eax xor edx,edx ; Inicializamos todos los valores mov ecx,10 ; Le asignamos a ecx contador bucle: mov ah, byte ptr[Tabla+si] ; movemos el primer valor de la tabla a eax inc esi ;Incrementamos el puntero a la cadena cmp ah,0 ; el número es menor que cero? jl negativo ; Salta si es negativo loop bucle ;volvemos a empcezar jmp salir negativo: add edx,1 ; Aquí vamos contando los números negativos que encontramos loop bucle ; Seguimos mientras el contador no llegue a cero salir: Título: Re: problema con saltos en assembler Publicado por: p4nd4criss en 22 Septiembre 2012, 19:37 pm gracias por sus respuestas
finalmente me di cuenta k el debia ehacer un salto antes de escrbirnir lo del vector jmp inicio: vectob db 1,2,3,4,5 inicio: para evitar errores y que debía comparar usando registros de 8 bits es decir usar al bl cl dl aha bh ch dh y no usar el registro completo como ax bx cx dx gracias |