Pregunta

Estoy intentando escribir un programa que requiere el uso de un ciclo for, entre otras cosas. Estoy teniendo un tiempo terrible tratando de encontrar ejemplos de código básico como este en otros sitios web.

Si alguien podría por favor me proporcione con un simple bucle for, o incluso las instrucciones que debe mirar estaría agradecido. Y por favor, si usted sabe de un recurso bueno para principiantes, tutoriales 68k comentario más abajo!

Gracias!

¿Fue útil?

Solución

aquí para obtener una respuesta a su consulta (tercera como resultado de búsqueda de google 68000 ensamblaje ')

[editar]

Añadir respuesta de enlace

El 68000 tiene la rara (único?) Característica de tener direcciones y de datos registros separados. Hay ocho registros de datos, D0-D7, y ocho registros de dirección, A0-A7. A7 es también el puntero de pila, SP. Esto significa que el lenguaje ensamblador 68000 tiende a ser más fácil de seguir porque se puede decir fácilmente qué registros contienen datos y los que tienen direcciones. Por ejemplo, esto es 68.000 montaje para calcular la suma de una serie de palabras:

    moveq #0, d0
    moveq #0, d1
    moveq #5, d2
loop:
    move.w (a0)+, d0
    add.l d0, d1
    dbra d2, loop

[/ editar]

Otros consejos

como se cita en EASy68K ayuda, la sintaxis de un bucle en 68 K es la siguiente:

FOR[.size] op1 = op2 TO op3  [BY op4]  DO[.extent]
   code 
ENDF

o

FOR[.size] op1 = op2 DOWNTO op3  [BY op4]  DO[.extent]
   code
ENDF

En otras palabras:

for.size counter_location = starting_condition to ending_condition step_size
   operations to be executed each loop
end of for loop

El step_size y .size son opcionales.

Un ejemplo en la práctica.
El siguiente código asume la siguiente variable mayúscula dc.b 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 0

lea    uppercase, a1    ; points a1 at the start of the uppercase variable
lea    $002000, a2      ; points a2 at the start of the destination address

for d1 = #1 to #26 do.s
    move.b  (a1)+, (a2)+
endf

; Memory locations $002000 - $002019 now contain ABCDEFGHIJKLMNOPQRSTUVYWXYZ

Este bucle mueve 26 bytes de la dirección apuntada por a1, a la dirección a la que apunta a2. El contador se almacena en d1. El bucle se iniciará a 1 (# 1 indica un 'número prima' en forma decimal), aumentar cada vez, y terminan a 26. Los do.S al final de la primera trata de la línea con el tamaño de la rama hacia adelante para su uso. Es opcional también, pero lanza una advertencia en EASy68K. Por lo tanto, el siguiente ciclo for también trabajo si no es necesario para establecer la condición de rama.

for d1 = #1 to #26
    move.b  (a1)+, (a2)+
endf

En cuanto a un tutorial, recomiendo http://mrjester.hapisan.com/04_MC68/ . Que no se ocupa de algunos de los comandos más avanzados y temas, pero ofrece una buena comprensión de lo que está sucediendo en el nivel básico / intermedio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top