Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Beginner Web en 29 Octubre 2022, 00:21 am



Título: algoritmo en asseblmer
Publicado por: Beginner Web en 29 Octubre 2022, 00:21 am
Escriba un programa que determine si los valores de las posiciones de
memoria $0150 $0151 son iguales o no. Considere que el resultado de la
comparación se almacenará en $0100, siendo $AA para valores iguales y
$EE para valores distintos.

Código
  1. inicio .org $0000
  2. jsr $0149
  3.  
  4. ldab #$aa
  5. ldaa $0150
  6. cmpa $0151
  7. beq guardar
  8. ldab #$ee
  9. guardar stab $0100
  10.  
  11. jmp fin
  12.  
  13. .org $0149
  14. rts
  15. .byte $04,$05
  16.  
  17. fin .end

el problema es que en ningun momento ejecuta la insstrucción ldab #$ee, siempre toma que los valores almacenados en las posiciones $0150 y $0151 son iguales, ayudaa ahhhh! ;'(


Título: Re: algoritmo en asseblmer
Publicado por: Beginner Web en 29 Octubre 2022, 01:10 am
parece que hay un problema con el espacio de memoria $0150, utilice otra y si funciona (Y)  >:D


Título: Re: algoritmo en asseblmer
Publicado por: BloodSharp en 29 Octubre 2022, 02:41 am
Hola. ¿Podrías dar detalles acerca de cuál tipo de arquitectura de procesador estamos hablando? Y si es posible algún emulador y documentación... Pregunto porque hay un mix de instrucciones ARM, MIPS y Motorola 68k si mal no me equivoco. :silbar:


B#


Título: Re: algoritmo en asseblmer
Publicado por: RayR en 29 Octubre 2022, 17:29 pm
Siempre al hablar de ensamblador es importante especificar la arquitectura, ya que cada una tiene uno completamente distinto.

Eso debe ser Motorola 6800 o algún derivado. No hay nada de raro con ese espacio de memoria, sino que estás confundiendo hexadecimal con decimal. En hexadecimal, el número que sigue a 149 no es 150 sino 14A. Cambia las direcciones de ldaa y cmpaa por $014A y $014B y debería funcionar.


Título: Re: algoritmo en asseblmer
Publicado por: Beginner Web en 30 Octubre 2022, 02:21 am
Siempre al hablar de ensamblador es importante especificar la arquitectura, ya que cada una tiene uno completamente distinto.

Eso debe ser Motorola 6800 o algún derivado. No hay nada de raro con ese espacio de memoria, sino que estás confundiendo hexadecimal con decimal. En hexadecimal, el número que sigue a 149 no es 150 sino 14A. Cambia las direcciones de ldaa y cmpaa por $014A y $014B y debería funcionar.

Si, ese era eel error, la proximas direcciones de memoria de $0149  son $014A y $014B, con respecto a la arquitectura estaba usando las instrucciones del micro MP6800, sorry  :rolleyes: