Ayudadeporfavor [ASM Z80]

Soporte técnico sobre los lanzamientos de MojonTwins y comentarios sobre los güegos. Ofrecemos soporte técnico con Fourspriter, te ayudamos con ZX Basic o Z88DK, te damos pistas some cómo saltarse un bicho y cosas así.

Moderador: na_th_an

Avatar de Usuario
Lord Raptor
Mensajes: 17
Registrado: Mié, 09 Oct 2013, 22:52

Ayudadeporfavor [ASM Z80]

Mensajepor Lord Raptor » Mar, 17 Ene 2017, 15:21

Hola, estoy dándole mordiscos al asm [sí, yo también he caído]... y como todo recien llegado
tengo dudas muy dudosas. Apelo a los güenos modales y coñocimientos de los gurús protegidos
por Bah-Kah [si alguno keda]. Aunke sean dudas de nivel chorra-iniciado a mí me traban y no
deseo apreder erróneamente.

Pregunta:

Código: Seleccionar todo

LD B, 3      ;B vale 3
LD BC, 0

En la segunda instrucción dónde se almacenaría cero??
En B ? En C ?
O se pone el registro entero BC a cero ?

Si en vez de 0 fuese un valor de 70 por ej... dónde se almacena ese valor?
En C ? ke contiene el byte menos significativo ?

Si luego hay un :

Código: Seleccionar todo

INC BC


Se incrementa B [pasando a valer 4] y C también, o sólo lo hace uno de ellos ?

[mestaré jasiendo la pisha un lío ?]
Avatar de Usuario
Haplo
Mensajes: 20
Registrado: Lun, 26 Ene 2015, 20:01

Re: Ayudadeporfavor [ASM Z80]

Mensajepor Haplo » Jue, 19 Ene 2017, 13:12

Lord Raptor escribió:Hola, estoy dándole mordiscos al asm [sí, yo también he caído]... y como todo recien llegado
tengo dudas muy dudosas. Apelo a los güenos modales y coñocimientos de los gurús protegidos
por Bah-Kah [si alguno keda]. Aunke sean dudas de nivel chorra-iniciado a mí me traban y no
deseo apreder erróneamente.

Pregunta:

Código: Seleccionar todo

LD B, 3      ;B vale 3
LD BC, 0

En la segunda instrucción dónde se almacenaría cero??
En B ? En C ?
O se pone el registro entero BC a cero ?

B y C valdrían 0
Si en vez de 0 fuese un valor de 70 por ej... dónde se almacena ese valor?
En C ? ke contiene el byte menos significativo ?

En C, porque sería menor de 255, si en vez de 70 fuera 256, C tendría 0 y B, 1. Si fuera 257, C tendría 1 y B, 1

Si luego hay un :

Código: Seleccionar todo

INC BC


Se incrementa B [pasando a valer 4] y C también, o sólo lo hace uno de ellos ?



Cuidado, cargas B con 3 y no especificas C!
INC BC en realidad lo que hace es incrementar C y se pasa de 255, lo pone a 0 y suma 1 a B.

Espero habértelo explicado bien :)
De todas maneras, échale un ojal a este tutorial:
https://wiki.speccy.org/cursos/ensamblador/lenguaje_1
Avatar de Usuario
Lord Raptor
Mensajes: 17
Registrado: Mié, 09 Oct 2013, 22:52

Re: Ayudadeporfavor [ASM Z80]

Mensajepor Lord Raptor » Vie, 20 Ene 2017, 15:12

Hola Haplo, gracias por contestar.
Igual no me he expresado bien. Se supone ke el trocito de código es seguido y todos los valores son en decimal.

Código: Seleccionar todo

LD B, 3     ; B vale 3 [decimal]
LD BC, 0    ; BC parece ser puesto a 0 [los dos registros]
            ; una forma rápida de limpiar cualkier registro, parece
INC BC      ; ahora BC vale 1 y se guarda ese 1 [decimal] en C  ?¿

[BC = 00000000 00000001]
Mi interpretación es correcta ahora ?
Ahora ke lo pienso, yo puedo meter valores en la forma ke me sea más cómoda, decimal, hex, binario
pero en la memoria siempre se van a almacenar en binario. Debería pensar siempre en binario...
Avatar de Usuario
Haplo
Mensajes: 20
Registrado: Lun, 26 Ene 2015, 20:01

Re: Ayudadeporfavor [ASM Z80]

Mensajepor Haplo » Lun, 23 Ene 2017, 11:09

Código: Seleccionar todo

LD B, 3     ; B vale 3 [decimal]
LD BC, 0    ; BC parece ser puesto a 0 [los dos registros]
            ; una forma rápida de limpiar cualkier registro, parece
INC BC      ; ahora BC vale 1 y se guarda ese 1 [decimal] en C  ?¿


según está, al final BC vale 1 y desglosado, C=1 y B=0. Lo que no entiendo es porqué cargan B con 3 en la primera línea si luego sobrescriben B y C con 0.

Sin embargo:

Código: Seleccionar todo

LD BC,0
LD B,3
INC BC


BC= 769 porque sería B*256+C, es decir 3*256+1=769
también se consigue lo mismo con esto:

Código: Seleccionar todo

LD B,3
LD C,0
INC BC


Código: Seleccionar todo

LD BC,768
INC BC


Código: Seleccionar todo

LD BC,769


Lo del formato hexadecimal, binario, etc... úsalo como mejor te entiendas, al compilador le da exactamente igual. Habrá veces que te será más sencillo usar representación binaria (como cuando se usa XOR, OR, AND) y otras hexadecimal (direcciones y cálculos rapidos).

Volver a “Ayuda”

¿Quién está conectado?

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