Alguna duda con ASM...
Moderador: Sir Cilve Sinclair
- JBGV
- Manic Miner
- Mensajes: 279
- Registrado: Vie Feb 11, 2011 9:16 am
Alguna duda con ASM...
Hola, pues eso, a ver si alguien me puede ayudar con estas dudas:
1- Cómo puedo ver "el código comprimido" de (por ejemplo) un gráfico comprimido con el rlezx.c que se maneja en el curso de Compiler? http://wiki.speccy.org/cursos/ensamblador/compresion_rle ?
2- Qué diferencia hay entre usar en ensamblador DEFB, DEFW, DB, EQU ... para guardar datos?
3- Hasta ahora he usado ConTEXT como editor y PASMO, pero veo que hay programas que te indican la posición de memoria, ejecuciones linea a linea con los valores de los registros, etc. Recomendais alguno?
Gugleando me he encontrado con esto , qué os parece? http://www.oshonsoft.com/z80.html
Bueno, saludos y gracias
1- Cómo puedo ver "el código comprimido" de (por ejemplo) un gráfico comprimido con el rlezx.c que se maneja en el curso de Compiler? http://wiki.speccy.org/cursos/ensamblador/compresion_rle ?
2- Qué diferencia hay entre usar en ensamblador DEFB, DEFW, DB, EQU ... para guardar datos?
3- Hasta ahora he usado ConTEXT como editor y PASMO, pero veo que hay programas que te indican la posición de memoria, ejecuciones linea a linea con los valores de los registros, etc. Recomendais alguno?
Gugleando me he encontrado con esto , qué os parece? http://www.oshonsoft.com/z80.html
Bueno, saludos y gracias
-
- Freddy Hardest
- Mensajes: 666
- Registrado: Vie Ago 15, 2008 2:43 pm
Re: Alguna duda con ASM...
JBGV escribió:Hola, pues eso, a ver si alguien me puede ayudar con estas dudas:
1- Cómo puedo ver "el código comprimido" de (por ejemplo) un gráfico comprimido con el rlezx.c que se maneja en el curso de Compiler? http://wiki.speccy.org/cursos/ensamblador/compresion_rle ?
Si te refieres a los datos ya comprimidos, imagino que tirando de depurador. Si te refieres al gráfico a partir de los datos comprimidos... habrá que descomprimir primero.
JBGV escribió:2- Qué diferencia hay entre usar en ensamblador DEFB, DEFW, DB, EQU ... para guardar datos?
DEFB y DB son lo mismo, almacenas un byte. DEFW y DW almacenan dos bytes. EQU no almacena nada, solo hace constantes.
db 5, 3 ; esto se codifica como 05, 03
dw 5, 3 ; esto debería generar 05, 00, 03, 00
pi equ 3 ; no genera nada, pero ahora el ensamblador pondrá un 3 donde pongamos pi
JBGV escribió:3- Hasta ahora he usado ConTEXT como editor y PASMO, pero veo que hay programas que te indican la posición de memoria, ejecuciones linea a linea con los valores de los registros, etc. Recomendais alguno?
Gugleando me he encontrado con esto , qué os parece? http://www.oshonsoft.com/z80.html
Bueno, saludos y gracias
Mi entorno de desarrollo favorito es ZX Spin. Yo solo hago parches pequeños, estoy seguro de que hay ensambladores mejores. Sin embargo, es de lo mejor para depurar programas.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...
- JBGV
- Manic Miner
- Mensajes: 279
- Registrado: Vie Feb 11, 2011 9:16 am
Re: Alguna duda con ASM...
Muchas gracias por la respuesta Zup !
No entendía porqué en los listados aparecían DEFW, DB, ... , ya lo se.
Voy a dar una oportunidad el ZX Spin a ver si me aclaro, no logro hacer funcionar el programa del enlace que os puse.
Si, me refería a ver los datos comprimidos, no se muy bien a que te refieres con eso de usar un depurador , como ves me falta mucho aún.
Creo que es importante tener los datos comprimidos en un listado para poder colocarlos en el programa sin necesidad de conocer una dirección exacta.
Gracias !!
No entendía porqué en los listados aparecían DEFW, DB, ... , ya lo se.
Voy a dar una oportunidad el ZX Spin a ver si me aclaro, no logro hacer funcionar el programa del enlace que os puse.
zup escribió:Si te refieres a los datos ya comprimidos, imagino que tirando de depurador. Si te refieres al gráfico a partir de los datos comprimidos... habrá que descomprimir primero.
Si, me refería a ver los datos comprimidos, no se muy bien a que te refieres con eso de usar un depurador , como ves me falta mucho aún.
Creo que es importante tener los datos comprimidos en un listado para poder colocarlos en el programa sin necesidad de conocer una dirección exacta.
Gracias !!
-
- Freddy Hardest
- Mensajes: 666
- Registrado: Vie Ago 15, 2008 2:43 pm
Re: Alguna duda con ASM...
Aclarando un poco (escribí lo otro en la tablet a toda prisa)...
(tal vez debería haber puesto un ejemplo más claro, donde se diferencien mejor los tipos de datos)
En cuanto a lo de usar un depurador... casi todos los depuradores tienen una ventana que permite ver los datos tal cual están almacenados en memoria (en forma de bytes). Solo es cuestión de averiguar dónde están tus datos y cotillear en esa dirección.
Lo del programa del curso de ensamblador: a bote pronto, le falta una directiva org. Con org, le decimos en qué dirección empieza nuestro programa en ensamblador. Si no hay un org, el ensamblador no podrá calcular direcciones absolutas para saltos, punteros y variables... con lo que no va a generar código. Ponle un org 30000 y lo ensamblará bien.
Código: Seleccionar todo
org 16384
bytes: db 3,5 ; esto se codifica como 03 05
word: db 3,5 ; esto se codifica como 03 00 05 00
pi equ 3 ; esto no ocupa espacio en memoria
; bytes2: db 32768 ; esto es ilegal, db es de 8 bits y 32768 ocupa 16.
;ld a,bytes ; esto es ilegal, bytes es una dirección de 16 bits.
ld a,(bytes) ; a=3
ld hl,word ; hl=16386 (dirección de word)
ld hl,(word) ; hl=3 (lo que hemos definido en word)
ld a,pi ; a=3
ld a,(pi) ; a=$69
ret
; todo esto se codifica como
; 03 05 03 00 05 00 3A 00 40 21 02 40 2A 02 40 3E 03 3A 03 00 C9
(tal vez debería haber puesto un ejemplo más claro, donde se diferencien mejor los tipos de datos)
En cuanto a lo de usar un depurador... casi todos los depuradores tienen una ventana que permite ver los datos tal cual están almacenados en memoria (en forma de bytes). Solo es cuestión de averiguar dónde están tus datos y cotillear en esa dirección.
Lo del programa del curso de ensamblador: a bote pronto, le falta una directiva org. Con org, le decimos en qué dirección empieza nuestro programa en ensamblador. Si no hay un org, el ensamblador no podrá calcular direcciones absolutas para saltos, punteros y variables... con lo que no va a generar código. Ponle un org 30000 y lo ensamblará bien.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...
- Metalbrain
- Freddy Hardest
- Mensajes: 592
- Registrado: Lun May 07, 2007 8:17 am
- Ubicación: Sevilla
- Contactar:
Re: Alguna duda con ASM...
Que yo sepa, lo más común en los ensambladores Z80 era usar DEFB, DEFW, etc... Las versiones más cortas DB, DW, etc... se añadieron posteriormente por influencia de los ensambladores de 80x86. La mayoría de los ensambladores actuales admiten ambas formas, pero puede haber alguno que solo acepte una de ellas.
SevenuP se escribe con u minúscula y P mayúscula.
-
- Manic Miner
- Mensajes: 215
- Registrado: Vie Jun 08, 2007 9:42 am
- Ubicación: En un lugar de la mancha
- Contactar:
Re: Alguna duda con ASM...
EQU $
Es otra forma de utilizar una direccion de memoria en lugar de una etiqueta y nos permite darle un offset
valor EQU $+1
rutina LD DE,#0000
LD HL, valor
INC DE
LD [HL], DE
RET
con esto podemos acceder al valor que cargamos en DE
Lo que hace $ es referenciar al primer byte de codigo de la siguiente linea de codigo.
Si posteriormente cambiamos algo como por ejemplo poner LD [IX+#01], D podemos apuntar al valor #01 de esta forma sin tener que estan poniendo y recordando el desplazamiento del byte que queremos modificar.
Cosa que con una etiqueta no podriamos hacer.
-------
El uso de ORG creo que siempre que no se usen saltos absolutos, es decir que se puedan solucionar con JR y no exista un CALL o JP u otros trucos de programacion no deberia de ser necesario el uso de la etiqueta, aunque siempre seria recomendable utilizarla, pero en las rutinas reubicables no seria necesario. En estas rutinas utilizar posiciones de memoria absolutas como por ejemplo acceder y modificar las variables del sistema es licito.
----------
Yo uso el ZXspin para depurar y programas aunque cono ensamblador me quedo con el sjasm.
hay ciertas cosas que no me gustaron del Pasmo. Cada uno tiene sus gustos.
En algunos ensambladores si pones XOR A, B lo sustituyen internamente por XOR A, A y XOR A, B esto permite ahorrar letras al escribir pero personalmente me gusta poner la A aunque el propio nemotecnico implique que solo se puede usar con A.
Cada compilador tiene sus cositas, es encontrar el que mejor se adapte a tus gustos.
Enviado desde mi GT-N7100 mediante Tapatalk
Es otra forma de utilizar una direccion de memoria en lugar de una etiqueta y nos permite darle un offset
valor EQU $+1
rutina LD DE,#0000
LD HL, valor
INC DE
LD [HL], DE
RET
con esto podemos acceder al valor que cargamos en DE
Lo que hace $ es referenciar al primer byte de codigo de la siguiente linea de codigo.
Si posteriormente cambiamos algo como por ejemplo poner LD [IX+#01], D podemos apuntar al valor #01 de esta forma sin tener que estan poniendo y recordando el desplazamiento del byte que queremos modificar.
Cosa que con una etiqueta no podriamos hacer.
-------
El uso de ORG creo que siempre que no se usen saltos absolutos, es decir que se puedan solucionar con JR y no exista un CALL o JP u otros trucos de programacion no deberia de ser necesario el uso de la etiqueta, aunque siempre seria recomendable utilizarla, pero en las rutinas reubicables no seria necesario. En estas rutinas utilizar posiciones de memoria absolutas como por ejemplo acceder y modificar las variables del sistema es licito.
----------
Yo uso el ZXspin para depurar y programas aunque cono ensamblador me quedo con el sjasm.
hay ciertas cosas que no me gustaron del Pasmo. Cada uno tiene sus gustos.
En algunos ensambladores si pones XOR A, B lo sustituyen internamente por XOR A, A y XOR A, B esto permite ahorrar letras al escribir pero personalmente me gusta poner la A aunque el propio nemotecnico implique que solo se puede usar con A.
Cada compilador tiene sus cositas, es encontrar el que mejor se adapte a tus gustos.
Enviado desde mi GT-N7100 mediante Tapatalk
Si vas a tirar Hardware, primero pregunta si alguien lo puede recuperar.
No abandones un ordenador en un vertedero, donalo a alguien.
No abandones un ordenador en un vertedero, donalo a alguien.
- JBGV
- Manic Miner
- Mensajes: 279
- Registrado: Vie Feb 11, 2011 9:16 am
Re: Alguna duda con ASM...
Muchas gracias a todos, vaya lujo de foro
Está muy claro, muchas gracias por la explicación !! , lo entiendo ahora perfectamente.
No tenía ni idea y creo que puede ser muy útil.
Me doy cuenta que programar en ASM es un mundo muy grande
zup escribió:(tal vez debería haber puesto un ejemplo más claro, donde se diferencien mejor los tipos de datos)
Está muy claro, muchas gracias por la explicación !! , lo entiendo ahora perfectamente.
Z80user escribió:EQU $
Es otra forma de utilizar una direccion de memoria en lugar de una etiqueta y nos permite darle un offset
No tenía ni idea y creo que puede ser muy útil.
Me doy cuenta que programar en ASM es un mundo muy grande
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 19 invitados