Buenas a todos me sale erro esta rutina.por que?
org &4000
ld de,&c000
ld hl,de
ld (hl),255
ret
ayuda con ld hl,de
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
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
Re: ayuda con ld hl,de
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).
Re: ayuda con ld hl,de
O haciendo:
Aunque habría que mirar qué es más eficaz/rápido/ocupa menos bytes.
Código: Seleccionar todo
PUSH DE
POP HL
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: ayuda con ld hl,de
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:
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:
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:
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:
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 .
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)
Código: Seleccionar todo
ld h, d ;; [1]
ld l, e ;; [1] Total: 2 microsegundos, 2 bytes.
Código: Seleccionar todo
push de ;; [4]
pop hl ;; [3] Total: 7 microsegundos, 2 bytes.
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
Espero que estas ideas te sirvan .
Re: ayuda con ld hl,de
No se puede explicar mejor.
Re: ayuda con ld hl,de
muchas gracias a todos
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro
La Comunidad Española |