Ensamblando problemas (ejercicios de programación)
Reglas del Foro
Debido a que hay varios temas pidiendo ayuda para programar en ensamblador máquinas distintas al Amstrad CPC, con micro distinto al Z80 y que incluso dependen del sistema operativo, nos vemos en la necesidad de poner por escrito que estos posts son bienvenidos pero que no es el lugar adecuado ya que por estos lares nos dedicamos más al ensamblador del Z80, un microprocesador de 8 bits que tuvo su gran auge en ordenadores y consolas de los años 80.
De todas formas, esto no quita que alguien que sepa del asunto pueda postear alguna respuesta pero es más fácil encontrar foros dedicados a programar en ensamblador en Windows o MS-DOS que ayudarán más que nosotros:
http://www.lawebdelprogramador.com/news ... nsamblador
Debido a que hay varios temas pidiendo ayuda para programar en ensamblador máquinas distintas al Amstrad CPC, con micro distinto al Z80 y que incluso dependen del sistema operativo, nos vemos en la necesidad de poner por escrito que estos posts son bienvenidos pero que no es el lugar adecuado ya que por estos lares nos dedicamos más al ensamblador del Z80, un microprocesador de 8 bits que tuvo su gran auge en ordenadores y consolas de los años 80.
De todas formas, esto no quita que alguien que sepa del asunto pueda postear alguna respuesta pero es más fácil encontrar foros dedicados a programar en ensamblador en Windows o MS-DOS que ayudarán más que nosotros:
http://www.lawebdelprogramador.com/news ... nsamblador
- litos.net
- Loading, Please Wait...
- Mensajes: 5961
- Registrado: Mié 05 Oct , 2005 7:57 pm
- Ubicación: Madrid
- Contactar:
Ensamblando problemas (ejercicios de programación)
(Editado por Artaburu)
Se abre este hilo a sugerencia de un forero interesado en aprender ensamblador. Iremos proponiendo ejercicios a realizar. Podéis postear las soluciones y las vamos viendo y comentando entre todos.
El nivel de los ejercicios irá subiendo poco a poco y espero que así nos beneficiemos todos, aprendiendo y aportando.
Se abre este hilo a sugerencia de un forero interesado en aprender ensamblador. Iremos proponiendo ejercicios a realizar. Podéis postear las soluciones y las vamos viendo y comentando entre todos.
El nivel de los ejercicios irá subiendo poco a poco y espero que así nos beneficiemos todos, aprendiendo y aportando.
RE: Ensamblando problemas (ejercicios de programación)
Busquemos soluciones para los siguientes casos:
Sumar 2 números de 8 bits, sumar dos números de 16.
Restar 2 números de 8 bits, Restar 2 números de 16 bits.
(de números que están en memoria)
En los números de 8 bits usando registros de 8 bits y en los de 16 haciéndolo mediante registros de 8 y de 16 bits. Con lo cual habrá 2 soluciones para los de 16 bits.
Condiciones:
Inicio del programa &4000
valor 1 8 bits &4100
valor 2 8 bits &4101
resultado suma se guardará en &4102
resultado resta se guardará en &4103
valor 1 16 bits &4104
valor 2 16 bits &4106
resultado suma1 se guardará en &4108
resultado suma2 se guardará en &410A
resultado resta1 se guardará en &410C
resultado resta2 se guardará en &410E
Sumar 2 números de 8 bits, sumar dos números de 16.
Restar 2 números de 8 bits, Restar 2 números de 16 bits.
(de números que están en memoria)
En los números de 8 bits usando registros de 8 bits y en los de 16 haciéndolo mediante registros de 8 y de 16 bits. Con lo cual habrá 2 soluciones para los de 16 bits.
Condiciones:
Inicio del programa &4000
valor 1 8 bits &4100
valor 2 8 bits &4101
resultado suma se guardará en &4102
resultado resta se guardará en &4103
valor 1 16 bits &4104
valor 2 16 bits &4106
resultado suma1 se guardará en &4108
resultado suma2 se guardará en &410A
resultado resta1 se guardará en &410C
resultado resta2 se guardará en &410E
Salu2,
Arta
Arta
- Mode 2
- I am The Forum
- Mensajes: 2068
- Registrado: Lun 10 Oct , 2005 8:01 pm
- Ubicación: Sevilla, años 80.
- Contactar:
Preguntas sobre ejercicios
Arta, en cuanto a los nºs a sumar y restar:
¿Se meten directamente en las posiciones de memorias especificadas o se leen por teclado?
¿Es indiferente su valor imagino?
¿Se guarda solamente o se saca por pantalla el resultado?
Gracias, genio!
¿Se meten directamente en las posiciones de memorias especificadas o se leen por teclado?
¿Es indiferente su valor imagino?
¿Se guarda solamente o se saca por pantalla el resultado?
Gracias, genio!
RE: Preguntas sobre ejercicios
Por ahora sin entradas y salidas, eso para más adelante. Los valores que querais luego ya veremos si funciona.
Salu2,
Arta
Arta
- Mode 2
- I am The Forum
- Mensajes: 2068
- Registrado: Lun 10 Oct , 2005 8:01 pm
- Ubicación: Sevilla, años 80.
- Contactar:
La primera parte del ejercicio
;Suma y resta de 8 bits
org &4000
ld a,30
ld (&4100),a
ld a,20
ld (&4101),a
ld a,(&4100)
ld b,a
ld a,(&4101)
add b
ld (&4102),a
ld a,(&4101)
ld b,a
ld a,(&4100)
sub b
ld (&4103),a
ret
org &4000
ld a,30
ld (&4100),a
ld a,20
ld (&4101),a
ld a,(&4100)
ld b,a
ld a,(&4101)
add b
ld (&4102),a
ld a,(&4101)
ld b,a
ld a,(&4100)
sub b
ld (&4103),a
ret
- Mode 2
- I am The Forum
- Mensajes: 2068
- Registrado: Lun 10 Oct , 2005 8:01 pm
- Ubicación: Sevilla, años 80.
- Contactar:
Hombre, yo sé que se puede poner algo más claro como en el ejemplo de abajo. Pero lo de no usar B y usar los registros H y L, no sé a que te refieres a no se que con H y L consumas menos ciclos.
;Suma y resta de 8 bits
suma equ &4102
resta equ &4103
numero1 equ &4100
numero2 equ &4101
org &4000
ld a,30
ld (numero1),a
ld a,20
ld (numero2),a
ld a,(numero1)
ld b,a
ld a,(numero2)
add b
ld (suma),a
ld a,(numero2)
ld b,a
ld a,(numero1)
sub b
ld (resta),a
ret
;Suma y resta de 8 bits
suma equ &4102
resta equ &4103
numero1 equ &4100
numero2 equ &4101
org &4000
ld a,30
ld (numero1),a
ld a,20
ld (numero2),a
ld a,(numero1)
ld b,a
ld a,(numero2)
add b
ld (suma),a
ld a,(numero2)
ld b,a
ld a,(numero1)
sub b
ld (resta),a
ret
- Mode 2
- I am The Forum
- Mensajes: 2068
- Registrado: Lun 10 Oct , 2005 8:01 pm
- Ubicación: Sevilla, años 80.
- Contactar:
Ah!! Bien que con HL no hace falta cargar el número en A y luego traspasarlo a B sino que se hace del tirón:Me refiero a apuntar a los números con HL, y escribir y leer contra HL, se ahorran ciclos.
Por ejemplo, LD HL,numero1
ld hl,numero1 en vez de
ld a,numero1
ld b,a
Pero HL es la unión de H y L, sería para números de 16 bits, ¿no?
Es igual:
ld h,&33
ld l,&22
que:
ld hl,&3322
Gracias Arta!!
Jodo, no tengo tiempo ni de postear... Originalmente me han salido las sumas como a Nemesis_v2.0, aunque obviando la carga de los números a sumar, que los presupongo ya en memoria.
Lo del HL viene en el Capítulo 3 del Tuto
org &4000
;en 8 bits
;suma
LD HL,&4100
LD A,(HL)
INC HL
ADD (HL)
INC HL
LD (HL),A
;resta
LD HL,&4100
LD A,(HL)
INC HL
SUB (HL)
INC HL
INC HL
LD (HL),A
RET
A ver si luego puedo meterme con las de 16 bits con el HL...
Lo del HL viene en el Capítulo 3 del Tuto
org &4000
;en 8 bits
;suma
LD HL,&4100
LD A,(HL)
INC HL
ADD (HL)
INC HL
LD (HL),A
;resta
LD HL,&4100
LD A,(HL)
INC HL
SUB (HL)
INC HL
INC HL
LD (HL),A
RET
A ver si luego puedo meterme con las de 16 bits con el HL...
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro
La Comunidad Española |