SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: njdiaz2 en Martes 19 de Mayo de 2009, 05:51

Título: Extender de 16bits a 32bits
Publicado por: njdiaz2 en Martes 19 de Mayo de 2009, 05:51
Hola que tal, soy nuevo en el foro y luego de echar un vistazo he encontrado en las dudas y propuestas de otros colegas solución a mis problemas de programación en Ensamblador y por esto doy gracias.

Ahora después de buscar por horas y no encontrar nada relacionado, he decidido hacer la siguiente pregunta:

En mi proyecto de arquitectura de computadores (en Ensamblador) debemos de ingresar 4 números cada uno de 7 cifras por teclado, según lo que he notado cada número en Ensamblador es tratado bajo código ASCII y tiene un valor decimal de 3 cifras, para la cual un numero de siete cifras tomaría 21bits y trabajando sobre 8086 cuyos registros son de 16bits genera un error; ahora mi pregunta es: que método puedo utilizar o como puedo realizar este procedimiento bajo la arquitectura del 8086, ya he implementado los registros extendidos y no me funcionan.

Por cualquier ayuda o sugerencia mil gracias.
Título: Re: Extender de 16bits a 32bits
Publicado por: m0skit0 en Martes 19 de Mayo de 2009, 10:33
Cita de: "njdiaz2"
ya he implementado los registros extendidos y no me funcionan.
Hablas de arquitectura 8086. Eso no existe, supongo que te refieres al procesador 8086 (x86-16). El 8086 no tiene registros extendidos. Son de 16 bits y punto. Debes usar 2 registros y el acarreo para operar con números mayores.

Si no te refieres al procesador 8086, especifica sobre qué procesador en concreto estás trabajando.
Título: Re: Extender de 16bits a 32bits
Publicado por: njdiaz2 en Martes 19 de Mayo de 2009, 18:11
Tienes razón que pena, cuando hablo de 8086 me refiero al procesador...
Siguiendo el tema he encontrado esto:
 
Código: ASM
  1.  
  2. org 100h
  3.  
  4. jmp a
  5. ; double word definition is supported:  
  6. mydouble dd 12345678h
  7.  
  8. ; it is equal to:  
  9. mywords   dw 5678h
  10.           dw 1234h
  11.  
  12. ;  and it is equal to:  
  13. mybytes   db  78h
  14.           db  56h
  15.           db  34h
  16.           db  12h
  17.  
  18. ; exactly 32 bits  
  19. binn dd 00010010001101000101011001111000b
  20. ; load double word to dx:ax  
  21. a: mov ax, binn
  22.    mov dx, [binn+2]
  23.  
  24. ret
  25.  
  26.  

En el codigo anterior utilizan una palabra doble para un numero hexadecimal, mi pregunta es si este numero se puede operar sin ningún inconveniente y de serlo como puedo ingresarlo por teclado...

Gracias por su ayuda...
Título: Re: Extender de 16bits a 32bits
Publicado por: m0skit0 en Miércoles 20 de Mayo de 2009, 09:50
Cita de: "njdiaz2"
si este numero se puede operar sin ningún inconveniente
Cualquier número se puede operar sin inconveniente. Éste igual. Simplemente hay que utilizar más de un registro para operar con él si es doble palabra.

Cita de: "njdiaz2"
como puedo ingresarlo por teclado...
Haciendo una rutina de lectura del teclado y otra de transformación de ASCII a entero.
Título: Re: Extender de 16bits a 32bits
Publicado por: njdiaz2 en Miércoles 20 de Mayo de 2009, 20:08
Hey muchas gracias...