Programación General > ASM (Ensamblador)

 Palindromo Con Numeros

(1/1)

laupotter:
Hola a todos, quisiera pedirles ayuda porq no tengo idea de como hacer mi programa en ensamblador, la verdad es que trataba de hacerlo pero luego ya no supe que hacer...
Mi programa consiste en ver si unos numeros son palindromos,ejemplo:

1 2 3 4 y 4 3 2 1 son palindromos

Mi maestra me dijo que la forma de hacerlo es comparando el 1 con el 1 el 2 con el 2 el 3 con el 3  y 4 con 4, pero cuando se va a comparar el 1 con el 1 por ejemplo los demas deben estar apagados, esto se puede hacer por medio del AND, y la verdad no se como hacerlo, quisiera que me ayudaran, solo que me den consejos de como hacerlo (no q me hagan el programa)

Nota: Los numeros son definidos desde el programa en el segmento de datos

Mas que nada les pido ayuda en la forma en como se debe hacer la comparación, estoy usando tasm, mi maestra me dijo que hay una funcion o no recuerrdo que, que hace la comparación de todo el conjunto, pero q no la usemos.
Porfis ayudenme  :unsure:  :(

bob esponja:
averigua la cantidad de valores por ejemplo 3:
121

empujas el uno a la pila
te queda el dos pero como la cantidad es impar y es el del medio lo descatas
agarras el 1 y sacas el otro vlor de la pila y los comparas

ahora con una cantidad de 5

12321

empujas el uno
empujas el dos
descartas el tres porque es el del medio
agarras el dos y lo comparas con el primero de la pila
agarras el uno y lo comparas con el primero de la pila

se entiende?

laupotter:
Le entendi mas o menos lo voy a intentar muchas gracias, ahi aviso si me sale o no  :P

laupotter:
Si me salio, con la idea que me diste intente hacerlo de esta forma, aunq yo creo q asi no es como me lo decias pero asi me salio...  :P gracias!!

--- Código: Text --- ;ve si un numero es palindromo pila segment para stack  db 64 dup('?')&#59;define tamaño de la pilapila ends datos segment para 'data'    vec1 dw 1,2,3,4    vec2 dw 1,3,2,1    msg1 db 'Es palindromo ','$'    msg2 db 'No es palindromo ','$'datos ends codigo segment para 'code'    assume cs:codigo,ds:datos,ss:pila     push ds    sub ax,ax    push ax    mov ax, datos    mov ds, ax    mov es, ax   primero:          mov ax,vec1    &#59;coloca en ax el primer bit de vec1 van de 2 en 2 porque asi son los bits          mov bx,vec2[6] &#59;coloca en bx el ultimo bit de vec2          cmp ax,bx      &#59;si son iguales sigue comparando          je segundo          jne mensaje2   &#59;si no es igual no es palindromo               segundo:          mov ax,vec1[2] &#59;coloca en ax el segundo bit de vec1          mov bx,vec2[4] &#59;coloca en bx el penultimo bit de vec2          cmp ax,bx      &#59;si son iguales sigue comparando          je tercero           jne mensaje2                tercero:          mov ax,vec1[4] &#59;coloca en ax el tercer bit de vec1          mov bx,vec2[2] &#59;coloca en bx el ante penultimo bit de vec2          cmp ax,bx      &#59;si son iguales sigue comparando          je cuarto          jne mensaje2                cuarto:          mov ax,vec1[6] &#59;coloca en ax el cuarto bit de vec1          mov bx,vec2    &#59;coloca en bx el primer bit de vec2          cmp ax,bx      &#59;si son iguales es palindromo          je mensaje1          jne mensaje2    mensaje2:            lea dx,msg2            mov ah,9h            int 21h            mov ah, 1      &#59;espera una tecla            int 21h            mov ax, 4c00h&#59; sale del sistema operativo            int 21h        mensaje1:          lea dx,msg1   &#59;despliega en pantalla que si es palindromo          mov ah,9h          int 21h           mov ah, 1      &#59;espera una tecla          int 21h          mov ax, 4c00h&#59; sale del sistema operativo          int 21h        codigo endsend  

Navegación

[0] Índice de Mensajes

Ir a la versión completa