elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Problema Ensamblador 8085
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema Ensamblador 8085  (Leído 3,175 veces)
MCLucro

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Problema Ensamblador 8085
« en: 27 Octubre 2014, 02:29 am »

Buenas, tengo un ejercicio que no logro resolver.
El ejercicio en cuestión es el siguiente:
2. Suma y resta de números decimales.
a. Sumar y restar dos números que se encuentran en formato decimal en las posiciones de memoria 0x0100 y 0x0101.
b. La opción de suma o resta viene dada en el puerto 00: 0x00 -> suma; 0x01 -> resta
c. Almacenar el resultado en las posiciones 0x0102 y 0x0103, donde la primera posición almacena los dos cifras decimales menos significativas y la segunda almacena las dos más significativas (00 ó 01 dependiendo del posible acarreo decimal).
d. Sirva como “pista” el estudio de la representación BCD (Binary Coded Decimal). Básicamente lo que sucede es que nosotros insertaremos los números directamente como si se tratasen de decimales, nos olvidamos de las cifras “A” a la “F”.
e. Asimismo, debemos tener en cuenta que el internamente procesador sigue considerando todos los números como hexadecimales, por lo que las operaciones aritméticas se realizarán en dicha base.
f. Puesto que el resultado final aparecerá en hexadecimal, a continuación de dicha operación habrá que aplicar un proceso de ajuste decimal para obtener el valor correcto, como si hubiésemos realizado la operación matemática en base 10.

Por ejemplo, si quiero sumar 88 y 12 tendría que dar esto:

0x0100  88
0x0101  12
0x0102  00
0x0103  01

0xYYYY se refiere a la posición de memoria. Muchas gracias de antemano!

Mi código es el siguiente:

mvi h,01
mvi l,00

mov a,m
mov b,a
inr l
mov a,m
mov c,a
inr l
add b
daa
jnc noacarreo
acarreo: mov m,a
inr l
mvi c,01
hlt
jc acarreo
noacarreo: mov m,a
hlt


Lo que pasa que al realizar la suma anterior me da 88+12=a0, cuando tendría que darme 00.
El código es un prototipo, pero teniendo este problema no lo puedo terminar.


« Última modificación: 27 Octubre 2014, 02:33 am por MCLucro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ensamblador
Electrónica
marcela 0 2,607 Último mensaje 30 Mayo 2005, 19:23 pm
por marcela
ayuda assembler 8080 o 8085
ASM
john27 0 3,303 Último mensaje 6 Agosto 2009, 20:31 pm
por john27
ASM Intel 8085
ASM
asaranblin 2 3,189 Último mensaje 2 Noviembre 2012, 04:36 am
por asaranblin
Problema al atrapar excepcion en ensamblador cambiando [fs:0] manualmente (FASM)
ASM
harry_the_blogger 6 4,070 Último mensaje 16 Septiembre 2014, 04:02 am
por harry_the_blogger
Interrupciones Ensamblador para 8085
ASM
zuzito76 0 2,466 Último mensaje 27 Abril 2015, 19:51 pm
por zuzito76
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines