Ensamblador - una simpleza que no sé resolver

 
Vista:

una simpleza que no sé resolver

Publicado por uNoMas (5 intervenciones) el 23/01/2002 20:48:33
1 - si tengo a ebx con el valor BFF45543h por ejemplo y quiero poner a cero la parte baja, cómo lo hago?
2 - cómo puedo imprimir en pantalla el valor de un registro en hexa?? cuando lo mando a poner en una ventana me lo pone en caracteres extraños.

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:una simpleza que no sé resolver

Publicado por nandois (7 intervenciones) el 23/01/2002 22:34:30
no se , pero has probado con mov bx,0000
La otra no lo se, pero cuando lo hago con visual basic no tengo probemas y en C tampoco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:una simpleza que no sé resolver

Publicado por Vega (1 intervención) el 11/02/2002 01:02:17
Si quieres imprimir un valor lo tendras que hacer en forma de caracter (ASCII) y para ello tienes que sumarle un 30 a lo que quieras mostrar. Busca una tabla ASCII y fijate que para imprimir un 1 el numero que debes mostrar en realidad es un 31h. Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Muy flojas las respuestas, che...

Publicado por Jorge (126 intervenciones) el 11/02/2002 06:57:18
Para poner a cero tantos bits como quieras, podés usar la instrucción AND de esta forma:

and ebx, FFF0h

ahí, por ejemplo, puse a cero los 4 bits de menor peso. El resto queda inalterado. Este método es bueno porque vos elegís el Nº de bits, por ejemplo, si quiero poner a 0 los primeros 5 bits, hago:

and ebx, 07FFh

y listo. Eso sí, tenés que saber binario y (opcionalmente) hexa.

Después, fijate en el resto del foro que ya mandé una vez un código que imprime números en ASCII.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Muy flojas las respuestas, che...

Publicado por Googol (61 intervenciones) el 18/02/2002 17:23:38
Mmm... no será al revés?
Hay que poner los bits que quieres borrar a 0, y el resto a 1.
Es decir, si quieres poner a 0 los 4 primeros bits tendrás que hacer la AND con el valor que tenga esos 4 bits a 0 y el resto a 1:

AND EBX, 0FFFFFFF0h

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Muy flojas las respuestas, che...

Publicado por Emiliano (1 intervención) el 31/03/2002 18:29:13
No se casi nada de ASM, pero si entiendo algo de ope. logicas con binarios
Dejemos bien aclarado para que se entienda. Creo que Jorge dijo bien, pero es bueno, detallar un poquito....

Sabiendo que un digito hexa equivale a 4 bits, y que el bit menos significativo es el que esta mas a la derecha, al hacer AND, se hace segun su tabla de verdad que el resultado solo sea 1 si ambos bits son 1
Para el ejemplo de Jorge

F = 1111
0 = 0000
7 = 0111

Entonces si el numero con el que opero le hago and con F, el resultado sera el mismo numero

Ejemplo:
F = 1111
AND
6 = 0110
----------------------
0110

Si en vez de F uso 7u otro numero que tenga unos y ceros, los bits que pongo a 0, seran los que figuren en dicha mascara ( 0, 7 , F, etc).
Y bueno, para tomar la parte baja, tomas los digitos que quieras eliminar en un AND con los ceros que necesites. por ejemplo para AX haces
AND AX, 00FF. Eso borra los bits 8 mas significativos.Suerte!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar