Motorola 6809 Instruction Set

Avatar de Usuario
ron
Mensajes: 18109
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1004 veces
Agradecimiento recibido: 1071 veces

Re: Motorola 6809 Instruction Set

Mensajepor ron » 18 Ene 2018 08:40

Último mensaje de la página anterior:

Utilizad la fuente MONOSPACE. Mano de santo.

Avatar de Usuario
explorer
Mensajes: 180
Registrado: 10 Ene 2016 18:43
Ubicación: Valladolid, España
Agradecido : 3 veces
Agradecimiento recibido: 159 veces
Contactar:

Re: Motorola 6809 Instruction Set

Mensajepor explorer » 18 Ene 2018 20:40

Debo haberme explicado muy mal, o no entiendo lo que nos acaba de decir ron.

He contado que poner un trozo de texto en monospace, no respeta los espacios en blanco.

¿Es eso o es que se me ha pasado algo?
JF^D Perl Programming Language - -j4tar1 Falcon030 4/80 MB UK, Jaguar
Calendario de Retroinformática - Canal Telegram ATARI y Retro

Avatar de Usuario
minter
Mensajes: 1982
Registrado: 22 Jul 2014 18:51
Agradecido : 1426 veces
Agradecimiento recibido: 592 veces

Re: Motorola 6809 Instruction Set

Mensajepor minter » 18 Ene 2018 21:01

Veamos, ejemplo 2: Mover una tabla de longitud "Y-X"

EJEMPLO 2:

MOVER UNA TABLA


Código: Seleccionar todo

ORGTAB      EQU   0            ;ORGTAB es igual a 0 ($0000h)
FINTAB      EQU   2            ;FINTAB es igual a 2 ($0002h)
   
         ORG       $1000      ;Inicio donde se colocará nuestro programa, en la dirección $1000h
INICIO   LDX      ORGTAB      ;Cargamos el registro X con el valor ORGTAB=0
         LDY      FINTAB      ;Cargamos el registro Y con el valor FINTAB=2
         LDB      ,X+         ;Cargamos en el acumulador B el valor donde apùnta X e incrementamos el registro X
         STB      ,Y+         ;Dejamos el valor de B donde apunta Y e incrementamos el registro Y
         BEQ      FIN         ;Salta a FIN si Z=0 y para que Z sea igual a cero, tiene que darse que hmmm ... no lo tengo claro.
                           ;¿Será si la tabla es diminuta?
BUCLE    LDA      ,X+         ;Cargamos en el acumulador A donde apunta X e incrementamos X
         STA      ,Y+         ;Dejamos lo del acumulador donde apunta Y e incrementamos Y
         DECB               ;Decrementamos B en una unidad
         BNE      BUCLE      ;Comprobamos si Z es cero. Si al decrementar B, aún no es cero...
                           ;entonces se vuelve al punto BUCLE
FIN      RTS               ;Si por el contrario, B ha llegado a cero, entonces Z habrá sido cero
                           ;y habrá continuado la rutina hacia abajo.
         FCB   8            ;Y para completar... no se para que definimos un byte como 8 aquí y no al principio.¿?
         



Bueno, lo que hace este programa es mover una tabla desde donde apunta X a donde apunta Y.
Pero claro... no la mueve donde queramos.
Simplemente desplaza la tabla a partir de donde estaba antes.

No se yo... creo que esto se puede hacer de otro modo, mas fácil. Pero bueno, estoy aprendiendo mientras comento ejemplos. -nb

Avatar de Usuario
Chema
Mensajes: 1977
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1177 veces
Agradecimiento recibido: 389 veces
Contactar:

Re: Motorola 6809 Instruction Set

Mensajepor Chema » 18 Ene 2018 22:50

Ni idea de asm de este procesador, pero creo que LDX ORGTAB carga en X (16 bit) el *contenido* de las direcciones 0 y 1. En Y parecido. Así pones en 0,1 la dirección de origen y en 2,3 la de destino y hace la copia.

En fin dela tabla se da cuando B se vuelve 0, o sea que el primer byte (?) de la tabla es su tamaño. Si el tamaño es 0 de mano, no copia nada más que l valor del tamaño.

Las cadenas de texto en BASIC estaban codificadas así. 1 byte con el tamaño y luego los caracteres.

¿Será eso?

Avatar de Usuario
explorer
Mensajes: 180
Registrado: 10 Ene 2016 18:43
Ubicación: Valladolid, España
Agradecido : 3 veces
Agradecimiento recibido: 159 veces
Contactar:

Re: Motorola 6809 Instruction Set

Mensajepor explorer » 19 Ene 2018 03:18

Sí, es así. El primer byte indica el tamaño de lo que se debe copiar a continuación. Más que una tabla, habría que llamarlo vector o array, ya que solo vemos una dimensión. Bueno, también puede ser una tabla, ya que la interpretación de los bytes la hacemos nosotros: la memoria siempre es lineal.

El ejemplo quedaría mejor con algunos datos de ejemplo y un pequeño espacio libre en otro sitio donde realizar la copia.
JF^D Perl Programming Language - -j4tar1 Falcon030 4/80 MB UK, Jaguar
Calendario de Retroinformática - Canal Telegram ATARI y Retro


Volver a “Lenguajes de Programación y herramientas Dev”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado