Página 1 de 1

Ayudadeporfavor [ASM Z80]

Publicado: Mar, 17 Ene 2017, 15:21
por Lord Raptor
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:
$this->bbcode_second_pass_code('', '
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 :$this->bbcode_second_pass_code('', '
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 ?]

Re: Ayudadeporfavor [ASM Z80]

Publicado: Jue, 19 Ene 2017, 13:12
por Haplo
$this->bbcode_second_pass_quote('Lord Raptor', 'H')ola, 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:
$this->bbcode_second_pass_code('', '
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
$this->bbcode_second_pass_quote('', '
')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

$this->bbcode_second_pass_quote('', '
')Si luego hay un :$this->bbcode_second_pass_code('', '
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

Re: Ayudadeporfavor [ASM Z80]

Publicado: Vie, 20 Ene 2017, 15:12
por Lord Raptor
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.
$this->bbcode_second_pass_code('', '
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...

Re: Ayudadeporfavor [ASM Z80]

Publicado: Lun, 23 Ene 2017, 11:09
por Haplo
$this->bbcode_second_pass_code('', '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:

$this->bbcode_second_pass_code('', '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:
$this->bbcode_second_pass_code('', 'LD B,3
LD C,0
INC BC
')

$this->bbcode_second_pass_code('', 'LD BC,768
INC BC')

$this->bbcode_second_pass_code('', '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).