extraer cifras decimales de un DD

Iniciado por Growdes, 30 Junio 2009, 23:05 PM

0 Miembros y 1 Visitante están viendo este tema.

Growdes

Hola soy un estudiante, de ingenieria informatica de cienfuegos y necesito que me
aclaren una duda de ensamblador si esta en sus posibilidades, la cuestion es la sgte:
? Se necesita separar las cifras decimales de una doble palabra, a un arreglo de
byte, lo que tengo hecho es lo sgte?
?? Dato DD 54545H
?? ARR DB ?,?,?,?,?,?,?,?,?,?
??
? Mov AX, word ptr
Dato ; pongo el lsb en ax
? MOv DX, word ptr Dato +2 , pongo el msb en
dx?


Lo que me sucede es que no puedo dividir por 10 o por 100 y
luego por 1000 por que el cociente y el resto no me cabrian en ax o dx, mi pregunta es
como puedo extraer estas cifras decimales del numero de doble palabra, saludos al
expertos y disculpe la molestia;

ny0x

pues lo que das no es muy ilustrativo, y si manejas un dword dx:ax al hacer la divicion queda en dx resto y en ax resultado.  :silbar:

Growdes

por ejemplo del numero
NUM DB 254
ARR DB ?,?,?

si pongo en AX  el numero
MOV AX, NUM
MOV BX, 10
DIV BX

lo que me queda es de resto en AH o AL no recuerdo bien es 4
y si divido nuevamente me queda 5 etc al final
ARR DB 2,5,4
pero para doble palabra no funciona igual porque si divido por 10
el resto en AX es muy grande y me genera int 0,
necesito otra via o sugerencias por favor

ny0x

no te entendi bien pero puedes hacer esto:
mueve el dword a eax y pon edx a 0 y a continuacion divides, el resultado queda en eax y el resto en edx

Growdes

Cita de: x0ʎu en  1 Julio 2009, 00:15 AM
no te entendi bien pero puedes hacer esto:
mueve el dword a eax y pon edx a 0 y a continuacion divides, el resultado queda en eax y el resto en edx

SE ME OLVIDO LO MAS IMPORTANTE, NO SE PUEDEN USAR REGISTROS EXTENDIDOS O SEA EAX O EBX

YST

Nose a mi me suena a tarea , de ser el caso en este foro no se ahcen tareas ;) .


Yo le enseñe a Kayser a usar objetos en ASM

Growdes

#6
Cita de: YST en  1 Julio 2009, 21:32 PM
Nose a mi me suena a tarea , de ser el caso en este foro no se ahcen tareas ;) .
el problema no radica en eso y espero no molestarlos no es una tarea, si quieres no me respondas ahora, me puedes responder dentro de un mes o dos , te lo voy a agradecer igual.
Ademas yo creo codigo objeto con tasm.exe y lo enlazo con el TLink.exe y traceo con TD.exe,con ninguno de estos y con instrucciones del 80286 puedo utilizar registros extendidos si no ya tuviera resuelto el problema ya lo que planteo no tuviera gracia.   Saludos 

Erik#

Pero, las variables numericas no se definen con dd? porque pones DB?

CitarNUM DB 254
ARR DB ?,?,?

ny0x

es lo mismo lo unico que cambia es el tamaño, nada mas que los bytes se usan usualmente para representar caracteres

YST

Cita de: Erik# en  7 Julio 2009, 11:55 AM
Pero, las variables numericas no se definen con dd? porque pones DB?

CitarNUM DB 254
ARR DB ?,?,?
No es que laas variaable numericas se definan con dd , ya que un dd es un dword osea 4 bytes ,la unica diferencia que si lo defines como dw o db o dq o cualquiera es el tamaño :P


Yo le enseñe a Kayser a usar objetos en ASM