ayuda con ld hl,de

Programando el Amstrad en Ensamblador.
Reglas del Foro
Debido a que hay varios temas pidiendo ayuda para programar en ensamblador máquinas distintas al Amstrad CPC, con micro distinto al Z80 y que incluso dependen del sistema operativo, nos vemos en la necesidad de poner por escrito que estos posts son bienvenidos pero que no es el lugar adecuado ya que por estos lares nos dedicamos más al ensamblador del Z80, un microprocesador de 8 bits que tuvo su gran auge en ordenadores y consolas de los años 80.

De todas formas, esto no quita que alguien que sepa del asunto pueda postear alguna respuesta pero es más fácil encontrar foros dedicados a programar en ensamblador en Windows o MS-DOS que ayudarán más que nosotros:
http://www.lawebdelprogramador.com/news ... nsamblador
halcon357
Lechoncillo
Lechoncillo
Mensajes: 11
Registrado: Dom 04 Nov , 2012 7:00 pm

ayuda con ld hl,de

Mensajepor halcon357 » Dom 24 Abr , 2016 9:46 pm

Buenas a todos me sale erro esta rutina.por que?


org &4000
ld de,&c000
ld hl,de


ld (hl),255
ret

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6969
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: ayuda con ld hl,de

Mensajepor MiguelSky » Dom 24 Abr , 2016 9:55 pm

No puedes cargar un registro doble con otro, sólo puedes cargarlo con 16 bit (LD HL,&dddd), o lo que contenga una dirección memoria indicada por un número de 16 bit (LD HL,(&dddd)). Si lo que quieres en tu caso es copiar lo que te tienes en DE a HL has de hacerlo registro por registro (LD H,D) y (LD L,E).

pacomix
Forum Addict
Forum Addict
Mensajes: 460
Registrado: Dom 11 Nov , 2012 8:05 pm

Re: ayuda con ld hl,de

Mensajepor pacomix » Dom 24 Abr , 2016 10:02 pm

O haciendo:

Código: Seleccionar todo

PUSH DE
POP HL
Aunque habría que mirar qué es más eficaz/rápido/ocupa menos bytes.

Avatar de Usuario
ronaldo
Forum Addict
Forum Addict
Mensajes: 358
Registrado: Sab 14 Sep , 2013 9:31 pm
Ubicación: Alicante
Contactar:

Re: ayuda con ld hl,de

Mensajepor ronaldo » Dom 24 Abr , 2016 11:28 pm

Hola, @halcon357. Como te han dicho @pacomix y @MiguelSky, la instrucción LD HL, DE no existe. Por eso obtienes un error con ese código. Cuando programes en ensamblador te recomiendo que tengas a mano la tabla de instrucciones de Z80 de clrhome: es muy útil para que puedas consultar todas las instrucciones y saber que no te equivocas.

Respecto a tu código, si lo que quieres es pasar el contenido de DE a HL, lo más rápido es esto:

Código: Seleccionar todo

ex de, hl ;; [1] Intercambia los valores de HL y DE (1 microsegundo, 1 byte)
Si lo que quieres es copiar el contenido de DE a HL, para que ambos valgan lo mismo, lo más rápido es lo que te ha sugerido @MiguelSky:

Código: Seleccionar todo

ld h, d ;; [1]
ld l, e ;; [1] Total: 2 microsegundos, 2 bytes.
La opción que te ha propuesto @pacomix puede serte útil en algún caso: siempre es bueno conocer alternativas. Eso sí, ten en cuenta que aunque ocupa lo mismo, es más lenta:

Código: Seleccionar todo

push de ;; [4]
pop hl ;; [3] Total: 7 microsegundos, 2 bytes.
El código de tu función, si lo único que quieres es pintar un 255 en C000 (para poner los primeros píxeles de pantalla a 1), tienes 2 opciones:

Código: Seleccionar todo

;; Opcion 1: usando HL
;;
ld hl, &C000 ;; [3]
ld (hl), 255 ;; [3] Total: 6 microsegundos, 5 bytes

;; Opcion 2: usando A
;;
ld a, 255 ;; [2]
ld (&C000), a ;; [4] Total: 6 microsegundos, 5 bytes
Personalmente, prefiero usar a, ya que así sólo se altera el contenido de 1 registro de 8 bits, dejando libre HL. De todas formas, esto ya depende del programa.

Espero que estas ideas te sirvan :).

Avatar de Usuario
johnlobo
Lechoncillo
Lechoncillo
Mensajes: 8
Registrado: Lun 01 Oct , 2012 12:56 pm
Contactar:

Re: ayuda con ld hl,de

Mensajepor johnlobo » Lun 25 Abr , 2016 8:59 am

=D>

No se puede explicar mejor.
- Dr.Roland
- Amsthrees
https://johnlobo73.itch.io/

halcon357
Lechoncillo
Lechoncillo
Mensajes: 11
Registrado: Dom 04 Nov , 2012 7:00 pm

Re: ayuda con ld hl,de

Mensajepor halcon357 » Lun 25 Abr , 2016 7:56 pm

muchas gracias a todos


¿Quién está conectado?

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


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic