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('?');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 ;coloca en ax el primer bit de vec1 van de 2 en 2 porque asi son los bits mov bx,vec2[6] ;coloca en bx el ultimo bit de vec2 cmp ax,bx ;si son iguales sigue comparando je segundo jne mensaje2 ;si no es igual no es palindromo segundo: mov ax,vec1[2] ;coloca en ax el segundo bit de vec1 mov bx,vec2[4] ;coloca en bx el penultimo bit de vec2 cmp ax,bx ;si son iguales sigue comparando je tercero jne mensaje2 tercero: mov ax,vec1[4] ;coloca en ax el tercer bit de vec1 mov bx,vec2[2] ;coloca en bx el ante penultimo bit de vec2 cmp ax,bx ;si son iguales sigue comparando je cuarto jne mensaje2 cuarto: mov ax,vec1[6] ;coloca en ax el cuarto bit de vec1 mov bx,vec2 ;coloca en bx el primer bit de vec2 cmp ax,bx ;si son iguales es palindromo je mensaje1 jne mensaje2 mensaje2: lea dx,msg2 mov ah,9h int 21h mov ah, 1 ;espera una tecla int 21h mov ax, 4c00h; sale del sistema operativo int 21h mensaje1: lea dx,msg1 ;despliega en pantalla que si es palindromo mov ah,9h int 21h mov ah, 1 ;espera una tecla int 21h mov ax, 4c00h; sale del sistema operativo int 21h codigo endsend
Navegación
Ir a la versión completa