Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa | |||
cursos:ensamblador:avanzadas2 [19-01-2024 08:35] – [Uso de los Shadow Registers] sromero | cursos:ensamblador:avanzadas2 [24-01-2024 17:25] (actual) – sromero | ||
---|---|---|---|
Línea 2: | Línea 2: | ||
En este capítulo vamos a ver algunas consideraciones relativas a optimizaciones y mejoras que no hemos querido incluír dentro de sus respectivos capítulos para evitar confundir al lector con código o ideas complejas en un momento en que está aprendiendo los fundamenos.. | En este capítulo vamos a ver algunas consideraciones relativas a optimizaciones y mejoras que no hemos querido incluír dentro de sus respectivos capítulos para evitar confundir al lector con código o ideas complejas en un momento en que está aprendiendo los fundamenos.. | ||
+ | |||
+ | \\ | ||
+ | ===== Optimizaciones generales ===== | ||
+ | |||
+ | Veamos una serie de " | ||
+ | |||
+ | \\ | ||
+ | **Copiar el flag Zero al Carry** | ||
+ | |||
+ | <code z80> | ||
+ | scf ; CF = 1 | ||
+ | jr z, $+3 ; Si ZF=1, saltamos y dejamos CF=1 | ||
+ | ccf ; Si ZF=0, al no saltar ejecutamos ccf | ||
+ | ; y hacemos CF=0 | ||
+ | ; $+3 es la instrucción posterior al ccf | ||
+ | </ | ||
+ | |||
+ | **Copiar el flag de Carry al Zero flag** | ||
+ | |||
+ | <code z80> | ||
+ | ccf | ||
+ | sbc a, a | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | **Realizar un '' | ||
+ | |||
+ | <code z80> | ||
+ | xor a | ||
+ | sub Parte_baja_Registro | ||
+ | ld Parte_baja_Registro, | ||
+ | sbc a, a | ||
+ | sub Parte_alta_Registro | ||
+ | ld Parte_alta_Registro, | ||
+ | </ | ||
+ | |||
+ | Por ejemplo, para simular '' | ||
+ | |||
+ | <code z80> | ||
+ | xor a | ||
+ | sub l | ||
+ | ld l, a | ||
+ | sbc a, a | ||
+ | sub h | ||
+ | ld h, a | ||
+ | </ | ||
+ | |||
\\ | \\ |