Motorola 6809 Instruction Set

Avatar de Usuario
minter
Mensajes: 1817
Registrado: 22 Jul 2014 18:51
Agradecido : 1185 veces
Agradecimiento recibido: 496 veces

Motorola 6809 Instruction Set

Mensajepor minter » 03 Ene 2018 17:42

Buenas!

motorola-semiconductor.gif
motorola-semiconductor.gif (18.08 KiB) Visto 1324 veces


Voy a intentar agarrar el 6809 con otros ojos este año 2018. Así que voy a hacer una pequeña recopilación del 6809 para programar en ASM.
-thumbup

¿Y que es este chip tan roñoso?

L_Motorola-MC6809L.jpg
L_Motorola-MC6809L.jpg (28.14 KiB) Visto 1321 veces


El 6809 es una versión evoluccionada del 6800, un procesador de 8 bits por encima en prestaciones a su competidor de MOS 6502. Los dos micros de Motorola son compatibles a nivel de código a pesar que el 6800 dispone de 78 instrucciones contra las 59 del 6809.
El 6809 dispone de dos Acumuladores de 8 bits, que pueden trabajar juntos formando un registro de 16 bits.

Dispone de un registro indice y dos registros a modo de puntero a la pila.

De esta manera, dispone de varios modos de direccionamiento a la memoria. También puede realizar operaciones aritméticas de 16 bits.

El 6809 se empleó para implementar ordenadores personales como el Dragón Data, Fujitsu/Secoinsa FM, TRS-80, Thomsom y como segunda CPU en PET, Acorn, Fujitsu FM.

Dragon 64.jpg
Dragon 64.jpg (31.32 KiB) Visto 1322 veces


Después Motorola evolucionó su micro al famoso 68000. -grin

¿Podré toquetear un poco el ASM del micro sin necesidad de tener una máquina viejuna?

Para simular el 6809, a parte de las máquinas donde viene implementado, que tienen cada una sus características particulares, puede emplearse el Sim6809 o el que adjunto que simula el 6800 y el 6811 (contiene los mismos registros que el 6809 y alguno mas que no vamos a comentar) El 6800 únicamente tiene registro X. El 6809 X e Y.

Simulador 6800.jpg
Simulador 6800.jpg (44.47 KiB) Visto 1324 veces


Pero bueno, como siempre, me pongo a hablar de cosas, pero nunca explico nada! -banghead

En fin... pues a contar un poco de este micro.

REGISTROS:

El 6809 es parco en registros. No es tan espartano como el 6502, pero tampoco la casa de Tócame Roque del Z80, con todas las letras del abecedario en registros.

Registros 6809.jpg
Registros 6809.jpg (28.25 KiB) Visto 1317 veces


ACUMULADOR A y B (los dos juntos D):

Nos vale cualquier definición dada de otros acumuladores. Un lugar donde se realizan las operaciones mas chulescas del micro.

Pero el ACUMULADOR del 6809 tiene una particularidad: Puede funcionar como uno de 16 bits. Realiza operaciones de 16bits.
¿Pero no es de 8bits este micro? Sisisisi.... pero realiza operaciones de 16 bits.

Digamos que el 6800 es el de 8 bits, el 6809 el de 8 / 16 bits y el 68000 el de 16/32 bits. El salto evolutivo de Motorola.

Luego Motorola se pegó la ostia sacando el Motorola V3 Razzor, pero eso ya es otra historia.

Bueno, pues el acumulador se divide en acumulador A y B, siendo el A el de mayor peso y el B el de menor peso.
¿Los acumuladores tienen peso y se ponen gordos? No. El bit cero del acumulador B es el bit 0 y el bit cero del acumulador A es el bit 8 de un registro de 16 bits.

b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
------------------------------------- --------------------------
ACUMULADOR A ACUMULADOR B

Por ejemplo:
LDA Carga un dato de 8 bits en el acumulador A
LDB Carga un dato en 8 bits el acumulador B
LDD Carga un dato de 16bits en los dos acumuladores (D de Double)

REGISTROS INDICE X e Y (2 bytes):

Pues en el 6809 disponemos de dos registros: El X y el Y, siendo ambos de 16 bits (o 2 bytes)
Esto es muy cómodo para trabajar, ya que podemos manejar todas las direcciones de memoria desde el índice.

Recordar que el 6502, sus registros de índice eran de 8 bits y había que hacer magia con algunas operaciones.

REGISTRO PUNTERO DE PILA U (Usuario)

Tenemos una pila de usuario
También de 16bits. Apunta donde tenemos en ese momento la pila.

REGISTRO DE PUNTERO DE PILA S (Sistema)

También tenemos otra pila, la del sistema.
Como cabría de esperar, 16 bits, 4 nibles o 2 bytes. Según la ración.

Ahora... ¿Qué diferencia hay entre las dos pilas?

El registro S es el puntero de la pila del sistema y siempre se utiliza para guardar las direcciones de retorno durante las llamadas a las subrutinas y las interrupciones. Es un registro que comúnmente se llama SP. También se puede emplear este registro para otros menesteres.

El registro U se puede utilizar como pila auxiliar con el mismo concepto de pila, pero no se debe utilizar para almacenar retornos de subrutinas o interrupciones.

También estos punteros pueden ser utilizados como registros de índices adicionales al disponer de las mismas capacidades que los registros X e Y.

CONTADOR DE PROGRAMA PC:

El contador de programa se va incrementando a medida que se va ejecutando un programa de forma secuencial. Aunque puede cambiar mediante las instrucciones de salto a otro lugar de memoria o volver a otro sitio.
Las interrupciones lo que hace es eso. Cuando se produce una interrupción, el contador de programa pega un salto a una zona de memoria donde se encuentra una rutina, la ejecuta y cuando termina... vuelve a donde estaba.

¿Cómo sabe donde tiene que volver? Fácil... en la pila de sistema está la dirección guardada cuando se produjo esa interrupción.

¿Y las interrupciones? ¿Qué narices dice Minter?

Es como en curro, cuando estás haciendo una tarea y te interrumpen fastidiosamente para tomar un café.
Pegas un post-it en la mesa con lo último que estabas haciendo y cuando vuelves del café... ves el post-it y te pones a rehacer la tarea por donde la dejaste.

Bueno... pues por el momento... esto.

Por cierto... también me encontré un articulo que explica como transformar un código de un 6502 a un 6809 (Esto pal Chema -rofl )
Las comparaciones son odiosas. -507

También un libro con las instrucciones paso a paso explicadas. Pero si no las cuenta el Minter como funcionan, esto ya no sería RetroWiki.
(Esto el Retrowiki... y si quieres ver un WIn10... pues te vas al Corte Inglés!) -507

Lo cuelgo también.

Seguiré contando cositas que vaya aprendiendo. -drinks
Adjuntos
6x09_Instruction_Sets.rar
(392.11 KiB) Descargado 42 veces
6502to6809.rar
(724.28 KiB) Descargado 123 veces
6811IDE.zip
(155.13 KiB) Descargado 11 veces

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

Re: Motorola 6809 Instruction Set

Mensajepor explorer » 03 Ene 2018 21:59

Hace dos años hice una práctica para hacer una subrutina que multiplicase dos matrices, y fue mi primer contacto con este micro. Muy interesante la instrucción de multiplicar.

El entorno que usé fue:

Avatar de Usuario
minter
Mensajes: 1817
Registrado: 22 Jul 2014 18:51
Agradecido : 1185 veces
Agradecimiento recibido: 496 veces

Re: Motorola 6809 Instruction Set

Mensajepor minter » 04 Ene 2018 14:50

REGISTRO DE CODIGOS DE CONDICIÓN (CC o CCR)

Flags o Registros de estado del microprocesador.

Registros 6809.jpg
Registros 6809.jpg (27.5 KiB) Visto 1259 veces


Cuando el micro ejecuta una instrucción, siempre sucede algo. Y aquí nos cuenta un poco lo que ha sucedido.

Tenemos 8 bits para el registro. Y cada bit significa una cosa diferente.

E => 'Entire state'. Se pone a cero cuando se acepta una interrucción y se guardan los registros en la pila o solamente PC y CC

F => 'FIRQ interrupt mask'. Inhibe o activa las interrupciones rápidas (Fast)

H => (Half carry). Se activa cuando hubo acarreo en el cuarto bit (b3) se una instrucción de suma de 8 bits. Es usado internamente por el procesador en la instrucción DAA

I => 'IRQ interrupt mask'. Sirve para activar o desactivar las interrupciones normales.

N => 'Negative' Es 1 cuando el resultado de una operación es negativo, copia del bit mas significativo de resultado.

Z => 'Zero' Cuando un resultado da cero se pone a 1

V => 'Overflow' o desbordamiento. Se activa cuando una operación es mayor a lo que pueda almacenar el registro de destino especificado en la instrucción.

C => 'Carry' Usado para almacenar el bit de acarreo (octavo bit MSB) en sumas y restas. También se usa como apoyo en las operaciones de rotación o desplazamiento de bits.

REGISTRO DP (Direct Page)

Es un registro de 1 byte y nos indica la posición de memoria para las instrucciones de direccionamiento directo.

La memoria del 6809 la denominamos por páginas, las cuales van desde xx00h a xxFFh.
Si DP es igual a 00h, entonces la página de direccionamiento directo sería la comprendida entre 0000h a 00FFh
Si DP es igual a AAh, entonces la página de direccionamiento directo sería desde AA00h a AAFFh

Mediante el direccionamiento directo, no hace falta especificar el byte alto de la dirección de memoria en la instrucción. De esta manera nos ahorramos tamaño de código y también ganamos en velocidad.

Avatar de Usuario
Silicebit
Mensajes: 1406
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 53 veces
Agradecimiento recibido: 128 veces
Contactar:

Re: Motorola 6809 Instruction Set

Mensajepor Silicebit » 04 Ene 2018 19:39

Si cuando termines con el 6809, haces una ampliación al 6309, ya lo bordas. -drinks -thumbup
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

Avatar de Usuario
minter
Mensajes: 1817
Registrado: 22 Jul 2014 18:51
Agradecido : 1185 veces
Agradecimiento recibido: 496 veces

Re: Motorola 6809 Instruction Set

Mensajepor minter » 05 Ene 2018 12:50

MODOS DE DIRECCIONAMIENTO

Iré explicando un poco con algunos ejemplos para ver si lo he entendido bien.

ABSOLUTO LARGO (EXTENDIDO)

La dirección de 16bits del operando es dada de forma explicita con los dos bytes que siguen al código de operación.

LDA $1FE0

Mete en el Acumulador lo que hay en la posición 1FE0 de la memoria.
Si hay un pollo, pues guarda un pollo en el acumulador.

ABSOLUTO CORTO

Los 8 bits menos significativos de una dirección de 16bits son dados en el byte que sigue al código de operación. Los 8bits más significativos están en el registro de la página directa.

LDA $E0

El corto es el que trabaja con la página directa. Es decir, la que tenemos indicada en el registro DP.

Si DP es igual a 1A... según el ejemplo, meterá en el acumulador lo contenido en la posición 1AE0.
Si en 1AE0 tenemos por ejemplo, otro pollo... entonces lo que tenemos es un problema muy gordo (o una granja avícola).


POR REGISTRO

La operación especificada por la instrucción implica un operando en unos de los registros del microprocesador

TRF X, Y

Con esto hacemos el transferir el contenido de X en Y
Si en X tenemos un POLLO, ahora tenemos también otro POLLO en Y.


INMEDIATO

El valor del operando es dado explícitamente en uno de los dos bytes que sigue al código de operación.

LDA #$E0

Guardamos en el Acumulador el valor E0

LDD #$POYO

Guardamos en el acumulador D (que es A+B) directamente un POLLO (Bueno, POYO no es un número hexadecimal, pero por esta vez, me lo vais a perdonar)


INDEXADO

La dirección del operador es la suma del contenido de un registro de 16 bits (X, Y, U, S o algunas veces PC) y un valor índice que es dado por uno o dos bytes, que siguen al código de operación o en uno de los acumuladores.

CLR 5,X

Borramos la posición de memoria indicada en el registro X, pero 5 posiciones más allá.

Hay cinco tipos básicos de emplear las instrucciones con índice que iré comentando en adelante.


AUTOINCREMENTO

La dirección del operando es el contenido de un registro de 16 bits (X, Y, U, S) Después de que el operando es accedido, el valor de este registro es incrementado en 1 o 2 según la instrucción.

LDY ,X+

Si el incremento ha de se de 2, entonces se pone doble +
LDY ,X++


AUTODECREMENTO

La dirección del operando es el contenido de un registro de 16 bits (X, Y, U, S). Antes de que el operando sea accedido, el valor de este registro es decrementado en 1 o 2 según la instrucción.

STA ,-X

El mismo que el anterior, pero quitando pollos.

RELATIVO

La dirección del operando es el valor del contador de programa más un número de 8 o 16 bits con signo computado de forma interna por el ensamblador. El programador simplemente da la dirección del operando deseado o un nombre que lo representa.

BRA RUTINA

Es un salto incondicional, salta siempre independientemente de lo que tengamos en el registro de estado.
Pero si ponemos....

BCC RUTINA

Entonces saltamos si en registro de estado el bit de acarreo es cero (C=0)

INDIRECTO

Este modo puede ser usado conjuntamente con los modos extendido, indexado y relativo. En cada caso, la dirección efectiva determinado en el modo primario de acceso, es usada para acceder a una posición de memoria que contiene la dirección del operando buscado o añadiendo un incremento de desvío.


LDA [,X]
LDA [B,X]
LDD [01, S]

En LDA[,X] lo que hacemos es cargar en el acumulador lo contenido en la posición de memoria que indica X.
Si X pone 1FE0, pues cargará en el acumulador lo que hay en 1FE0. Pero NO nos cargará 1FE0.

Con LDD [01,S] pues nos cargará en el acumulador donde apunta S más un incremento de 1.



Bueno, espero que con esto, tenga algo de material para empezar a colgar algún ejemplo sencillo y explicado.
Unos cuatro o cinco ejemplos como hice con el 6502 para ver las instrucciones sin meterme en cosas complejas.

Y luego explorer, a ver si nos comenta un poco su programa para multiplicar matrices. Pero claro... primero hay que saber como se multiplican las matrices sobre el papel . :)

Y así vemos la instrucción de multiplicar, la cual no está disponible en otros micros como el 6502 o el Z80. -thumbup

Un pollo! Digo... un saludo!!! -507

garillete
Mensajes: 465
Registrado: 30 Oct 2010 20:58
Agradecido : 6 veces
Agradecimiento recibido: 12 veces

Re: Motorola 6809 Instruction Set

Mensajepor garillete » 06 Ene 2018 17:15

perdon por el inciso..

He visto esto hace poco y tal vez sea de interes para portar codigo del 6809 al 68000

enlace github jefftranter

Avatar de Usuario
minter
Mensajes: 1817
Registrado: 22 Jul 2014 18:51
Agradecido : 1185 veces
Agradecimiento recibido: 496 veces

Re: Motorola 6809 Instruction Set

Mensajepor minter » 06 Ene 2018 17:39

garillete escribió:perdon por el inciso..

He visto esto hace poco y tal vez sea de interes para portar codigo del 6809 al 68000

enlace github jefftranter


Esto me lo apunto para cuando empiece con el assembler del 68000. -thumbup

El salto mas natural debe de ser continuar con el 6309 para pasar al 68000, ya que el 6309 que tiene un acumulador del doble de tamaño (de 32 bits) y luego el salto al 68000 debe se ser mas natural.

Imagen
(Registros del 6308 fuente wikipedia)

Imagen
(Registros del 68000 fuente wikipedia)

Vemos que son una grande de registros de 32bits para el acumulador. Habría que ver si el 68000 permite realizar todas las operaciones lógicas contra esos registros. Pero como aún no he llegado, no se contestar a eso. Ya llegaremos, ya...

Hay que ver todos lo micros!!! -thumbup

BlackHole
Mensajes: 850
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 5 veces
Agradecimiento recibido: 76 veces

Re: Motorola 6809 Instruction Set

Mensajepor BlackHole » 06 Ene 2018 17:58

Yo nunca toqué el 6809 y francamente desconozco la arquitectura de cualquier micro basado en él. Cuando el hilo de la conversión de El Hobbit, intenté seguirlo un poco al principio... pero a las dos páginas ya había desconectado, porque no conozco con fluidez los mnemónicos y las diferentes operaciones que podemos hacer con cada registro, como para entrar en el tema. Quizás a mí me interesa más el punto de vista de la conversión desde 6502, porque el 6502 es muy limitado y por el resumen que veo, todo lo que se puede hacer en un 6502 se puede traducir casi inmediatamente a 6809, ¿no?

Avatar de Usuario
minter
Mensajes: 1817
Registrado: 22 Jul 2014 18:51
Agradecido : 1185 veces
Agradecimiento recibido: 496 veces

Re: Motorola 6809 Instruction Set

Mensajepor minter » 06 Ene 2018 22:10

BlackHole escribió:por el resumen que veo, todo lo que se puede hacer en un 6502 se puede traducir casi inmediatamente a 6809, ¿no?


He colgado un articulo que orienta como pasar un código desde el 6502 al 6809. Si luego, existe una aplicación que porta código desde el 6809 al 68000... pues entonces sería posible portar del 6502 al 68000.

Estas conversiones seguramente limitan el uso de los registros de los micros superiores en meramente testimonial. No nos beneficiaríamos de las ventajas de los micros superiores y sus registros e instrucciones extras. Únicamente de su arquitectura.

Nos pasaría como aquellas famosas conversiones de spectrum a MSX, que realizaban algunas compañias de soft, que no se aprovechaban sus características superiores. No es un buen ejemplo, porque en este caso, es el mismo micro pero diferente arquitectura hardware.

Mucho mérito ha tenido Pere, Jose Luis y el resto, portando el código de un Z80 al 6809 con el hobbit. Ya que los registros del Zilog son más que los del Motorola.

Pero bueno... mi objetivo en este momento es hacer una introducción del micro, sin agobios. -grin

Avatar de Usuario
Kyp
Mensajes: 320
Registrado: 03 Oct 2013 17:13
Agradecido : 4 veces
Agradecimiento recibido: 41 veces

Re: Motorola 6809 Instruction Set

Mensajepor Kyp » 06 Ene 2018 23:24

En el 68000, las instrucciones en las que intervienen un registro de datos se pueden hacer con cualquiera de ellos. Y cuando interviene uno de direcciones lo mismo. No hay ninguna limitación.

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

Re: Motorola 6809 Instruction Set

Mensajepor explorer » 07 Ene 2018 01:38

Ya he subido todo el código a mi cuenta de Github, en el repositorio multiplica_matrices_6809

De lo que hay ahí, en la carpeta matriz_3x3/ hay distintas versiones de la solución, en forma de un programa único. El más moderno y corto es el v4.

La otra carpeta, multiplica_matrices/ contiene la misma solución, pero en formato de biblioteca, y con el código mucho más completo, con macros y todo. Es un buen ejemplo de lo que se puede hacer con el ensamblador ASxxxx.

En el directorio raíz está el simulador (sim6809) y el depurador (m6809-run), sacados de https://github.com/bcd/exec09 Lo que falta es el ensamblador as6809, pero se puede conseguir en http://shop-pdp.net/ashtml/asxxxx.htm

Hay dos scripts en shell, ensambla y limpia, que facilita el trabajo de ensamblaje, enlazado y ejecución.

Para la operación de matrices, hay una bonita página en Wikipedia: Multiplicación de matrices pero podemos detallarlo un poco más -grin

Y de la implementación en 6809, se podría comentar el fuente matriz_3x3/matriz_3x3_v4.asm, ya que es un programa completo en un único fuente. Las técnicas que he usado son:
  • Uso del registro DP para hacer el código más corto
  • Uso de los registros índice X e Y para recorrer los datos de las matrices, y el U para la matriz resultado; este último, con postincremento
  • Uso del registro D(A+B) como resultado de la multiplicación y comprobación de si ocurrió desborde

Como curiosidad... las versiones v2 y v3 están escritas para asm80.com, que es una página donde se puede programar en ensamblador para distintos sistemas de 8 bits: Z80, 6502, 6809 y otros. La v4 está escrita para las LWTools, otro entorno que permite realizar programas para 6809. Las diferencias que hay entre estos distintos ensambladores se centra sobre todo en la sintaxis de las directivas, o cómo se escriben los valores hexadecimales.

También es curioso ver que las cuatro versiones, aunque resuelven el mismo problema de multiplicar dos matrices de 3x3, el número de ciclos de ejecución son muy distintos:
  • v1: 2342 ciclos
  • v2: 1915 ciclos
  • v3: 277 ciclos
  • v4: un poco más que v3, ya que se transforma el núcleo del programa a subrutina
Para terminar, un enlace a una de las maravillas que se hicieron con ese microprocesador:
https://www.youtube.com/watch?v=eu1BF-pZcUw

Avatar de Usuario
minter
Mensajes: 1817
Registrado: 22 Jul 2014 18:51
Agradecido : 1185 veces
Agradecimiento recibido: 496 veces

Re: Motorola 6809 Instruction Set

Mensajepor minter » 16 Ene 2018 21:40

Porras!!! He perdido el borrador! Bueno, pues escribo de nuevo! -banghead

Bueno, una cosa que no expliqué en la sintaxis de escribir los programas en ensamblador es que hay algunas definiciones y etiquetas que se pueden definir al principio para que resulte más intuitivo el tema de programar.


ORG
Define la dirección de inicio de parte del programa. Es donde se sitúa nuestro programa, las variables, las rutinas... etc Efectivamente, puede haber vario orígenes.

DEFINIR LOS SÍMBOLOS

EQU, SET,DEF

Es Igual... Ajusta... Define... Como un valor numérico, un símbolo o una expresión.

RESERVAR ZONAS DE MEMORIA

RMB, RES

Reservamos BYTES o zona de Memoria

DEFINIR CONSTANTES DE MEMORIA

FCB FORMA UN BYTE CONSTANTE
FCC FORMA UNA SECUENCIA DE CARACTERES CONSTANTE
FDB FORMA UNA CONSTANTE DE DOS BYTES
BSW ALMACENA UN BLOQUE DE CEROS.


Bueno, ahora que ya se como se inician los programas, como se definen las variables y esas cosas... voy a proceder a explicar un ejemplo que me encontré en unos ejercicios de programación.

El programa:
SUMA DOBLE

Código: Seleccionar todo

   ORG   $8000      ;Inicio del contador de programa, donde se van a poner estos bonitos BYTES

HI1      FCB      5A         ;Definimos el BYTE HI1 como 5Ah en la posición de memoria $8000h
LO1      FCB      96         ;El BYTE LO1 se almacenará en la posición $8001
HI2      FCB      93         ;HI2 = en $8002 con el valor 96h
LO2      FCB      8B         ;LO2 = en $8003 con el valor 8Bh
HISUM   FCB      0         ;HISUM en $8004 con el valor 00h
LOSUM   FCB      0         ;LOSUM en $8005 con el valor 00h

         ORG   $1000      ;Y nos vamos a otra posición de memoria a poner otros bytes entretenidos
         
DPSUM      LDA      LO1         ;Cargamos en el acumulador en contenido de LO1 que esta en... $8001h, osea 96   
         ADDA   LO2         ;Sumamos al acumulador el contenido que hay en LO2...en $8003h, que es 8B
         STA      LOSUM      ;El resultado de la suma 96h+8Bh lo depositamos en LOSUM en $8005, que es 121h, que
                        ;   en decimal es 289. Que no entra en dos bytes!. Por lo que nos encontraremos en
                        ;   el Acumulador será unicamente 21h y será lo cargado en LOSUM
                        ;   ¿Y el 1 que falta? Pues se fue al Acarreo o Carry.
         LDA      HI1         ;Cargamos en el acumulador el valor HI1 contenido en la posición $8000 de un valor de 5A
         ADCA   HI2         ;Sumamos al acumulador el valor contenido en HI2 en $8002 y además.... sumamos el Carry
                        ;   (La una que nos faltaba) 5Ah+93h+1h=EEh
         STA      HISUM      ;Ponemos el resultado en HISUM, en la posición de memoria $8004
         RTS               ;FIN o Retorno a Subrutina
   


Bueno, pues es eso. Sumamos dos números y los metemos en otro lado. Pero de doble byte.

Bueno, a parte de aprender un poco de ensamblador... me he dado cuenta que tengo que aprender a editar los post en RW, porque no hay columna que me quede recta. -banghead

Avatar de Usuario
Chema
Mensajes: 1859
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 938 veces
Agradecimiento recibido: 330 veces
Contactar:

Re: Motorola 6809 Instruction Set

Mensajepor Chema » 17 Ene 2018 08:54

minter escribió:Porras!!! He perdido el borrador! Bueno, pues escribo de nuevo! -banghead


Ostras, con la rabia que da eso... -banghead

minter escribió:Bueno, a parte de aprender un poco de ensamblador... me he dado cuenta que tengo que aprender a editar los post en RW, porque no hay columna que me quede recta. -banghead


-rofl Es que los tabuladores dan quebraderos de cabeza... a mí al menos -507

BlackHole
Mensajes: 850
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 5 veces
Agradecimiento recibido: 76 veces

Re: Motorola 6809 Instruction Set

Mensajepor BlackHole » 18 Ene 2018 00:52

Chema escribió:Es que los tabuladores dan quebraderos de cabeza... a mí al menos
Offtopic: cuando tengo que pegar código en los foros, lo primero que hago es usar el Notepad++ y su opción "Cambiar tabs por espacios"

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

Re: Motorola 6809 Instruction Set [offtopic]

Mensajepor explorer » 18 Ene 2018 04:02

Mensaje borrado

Avatar de Usuario
ron
Mensajes: 17873
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 864 veces
Agradecimiento recibido: 919 veces

Re: Motorola 6809 Instruction Set

Mensajepor ron » 18 Ene 2018 08:40

Utilizad la fuente MONOSPACE. Mano de santo.


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