Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
cursos:ensamblador:lenguaje_2 [19-01-2024 06:48] – sromero | cursos:ensamblador:lenguaje_2 [26-03-2024 08:13] (actual) – [Desplazamiento de bits] sromero | ||
---|---|---|---|
Línea 10: | Línea 10: | ||
Para poder continuar con éste y posteriores capítulos del curso será imprescindible haber comprendido y asimilado todos los conocimientos de las entregas anteriores, de modo que si no es así, recomendamos al lector que relea las entregas 1, 2 y 3, y que se asegure de comprender todos los conceptos explicados. | Para poder continuar con éste y posteriores capítulos del curso será imprescindible haber comprendido y asimilado todos los conocimientos de las entregas anteriores, de modo que si no es así, recomendamos al lector que relea las entregas 1, 2 y 3, y que se asegure de comprender todos los conceptos explicados. | ||
- | En esta entrega trataremos las operaciones con bits ('' | + | En esta entrega trataremos las operaciones con bits ('' |
No obstante, antes de pasar a hablar de las operaciones con bits finalizaremos con la descripción de las instrucciones de carga (en este caso las repetitivas), | No obstante, antes de pasar a hablar de las operaciones con bits finalizaremos con la descripción de las instrucciones de carga (en este caso las repetitivas), | ||
Línea 239: | Línea 239: | ||
* '' | * '' | ||
- | * '' | + | * '' |
* '' | * '' | ||
Línea 781: | Línea 781: | ||
\\ | \\ | ||
- | | + | No existe una instrucción oficial '' |
+ | |||
+ | Finalmente, se da la curiosidad de que existe una serie de opcodes que no están documentados en el manual de Z80 y que dan lugar a una operación de desplazamiento nueva llamada '' | ||
<code z80> | <code z80> | ||
- | sll r | + | sli r |
- | sll (hl) | + | sli (hl) |
- | sll (ix+d) | + | sli (ix+d) |
- | sll (iy+d) | + | sli (iy+d) |
</ | </ | ||
Línea 794: | Línea 796: | ||
< | < | ||
Bit 7 6 5 4 3 2 1 0 C 7 6 5 4 3 2 1 0 | Bit 7 6 5 4 3 2 1 0 C 7 6 5 4 3 2 1 0 | ||
- | ----------------- -> SLL -> ------------------------ | + | ----------------- -> SLI -> ------------------------ |
a b c d e f g h a b c d e f g h 1 | a b c d e f g h a b c d e f g h 1 | ||
</ | </ | ||
Línea 803: | Línea 805: | ||
Flags | Flags | ||
Instrucción | Instrucción | ||
- | | + | ------------------------------------------------------------------------------ |
- | SLA s |* * 0 P 0 *| Shift Left Arithmetic (s=s*2) | + | SLA s |* * 0 P 0 *| Shift Left Arithmetic (s = s<< |
- | SRA s |* * 0 P 0 *| Shift Right Arithmetic (s=s/2) | + | SRA s |* * 0 P 0 *| Shift Right Arithmetic (s = s/2) |
- | SRL s |* * 0 P 0 *| Shift Right Logical (s=s>> | + | SRL s |* * 0 P 0 *| Shift Right Logical (s = s>> |
- | | + | |
</ | </ | ||
Línea 922: | Línea 924: | ||
------------- | ------------- | ||
|* * 0 P 0 *|</ | |* * 0 P 0 *|</ | ||
- | | **rlca** | **Rotate Left Circular Accumulator**\\ Rota el registro A en un bit a la izquierda.\\ Igual que **RLC** pero con diferente afectación de Flags.\\ El CF no entra en el registro.\\ El CF se ve afectado: CF = copia del bit 7 | < | + | | **RLCA** | **Rotate Left Circular Accumulator**\\ Rota el registro A en un bit a la izquierda.\\ Igual que **RLC** pero con diferente afectación de Flags.\\ El CF no entra en el registro.\\ El CF se ve afectado: CF = copia del bit 7 | < |
---------------------- | ---------------------- | ||
| | ||
------------- | ------------- | ||
|- - 0 - 0 *|</ | |- - 0 - 0 *|</ | ||
- | | **rrca** | **Rotate Right Circular Accumulator**\\ Rota el registro A en un bit a la derecha.\\ Igual que **RRC** pero con diferente afectación de Flags.\\ No interviene el CF. \\ El CF se ve afectado: CF = copia del bit 0 | < | + | | **RRCA** | **Rotate Right Circular Accumulator**\\ Rota el registro A en un bit a la derecha.\\ Igual que **RRC** pero con diferente afectación de Flags.\\ No interviene el CF. \\ El CF se ve afectado: CF = copia del bit 0 | < |
---------------------- | ---------------------- | ||
| | ||
------------- | ------------- | ||
|- - 0 - 0 *|</ | |- - 0 - 0 *|</ | ||
- | | **rla** | **Rotate Left Accumulator**\\ Rota el registro Aen un bit a la izquierda.\\ Igual que **RL** pero con diferente afectación de Flags.\\ El CF es un bit más (el 8) del registro.\\ Inserta el CF en el bit 0.\\ El CF se ve afectado: CF = valor del bit 7 | < | + | | **RLA** | **Rotate Left Accumulator**\\ Rota el registro Aen un bit a la izquierda.\\ Igual que **RL** pero con diferente afectación de Flags.\\ El CF es un bit más (el 8) del registro.\\ Inserta el CF en el bit 0.\\ El CF se ve afectado: CF = valor del bit 7 | < |
---------------------- | ---------------------- | ||
| | ||
------------- | ------------- | ||
|- - 0 - 0 *|</ | |- - 0 - 0 *|</ | ||
- | | **rra** | **Rotate Right Accumulator**\\ Rota el registro A en un bit a la derecha.\\ Igual que **RR** pero con diferente afectación de Flags.\\ El CF es un bit más (el 8) del registro.\\ Inserta el CF en el bit 0. \\ El CF se ve afectado: CF = valor del bit 0 | < | + | | **RRA** | **Rotate Right Accumulator**\\ Rota el registro A en un bit a la derecha.\\ Igual que **RR** pero con diferente afectación de Flags.\\ El CF es un bit más (el 8) del registro.\\ Inserta el CF en el bit 0. \\ El CF se ve afectado: CF = valor del bit 0 | < |
---------------------- | ---------------------- | ||
| | ||
Línea 957: | Línea 959: | ||
------------- | ------------- | ||
|* * 0 P 0 *|</ | |* * 0 P 0 *|</ | ||
- | | **SLL** | **Shift Left Logical**\\ Desplaza el registro o dato en un bit a la izquierda.\\ Introduce un 1 por la derecha (bit 0).\\ El bit saliente (bit 7) se copia al CF. | < | + | | **SLI** | **Shift Left And Increment**\\ Desplaza el registro o dato en un bit a la izquierda.\\ Introduce un 1 por la derecha (bit 0).\\ El bit saliente (bit 7) se copia al CF. | < |
---------------------- | ---------------------- | ||
- | | + | |
------------- | ------------- | ||
|* * 0 P 0 *|</ | |* * 0 P 0 *|</ | ||
Línea 1016: | Línea 1018: | ||
rrd |* * 0 P 0 -| | rrd |* * 0 P 0 -| | ||
</ | </ | ||
+ | |||
+ | A continuación podemos ver un resumen gráfico de las diferentes instrucciones de desplazamiento obtenido del libro "// | ||
+ | |||
+ | \\ | ||
+ | {{ : | ||
+ | \\ | ||
\\ | \\ |