Hola a todos ,este es mi nuevo aporte al foro , (hace días que no pongo nada) , el code es sencillo y efectivo para convertir un byte a su forma binaria en Ascii .
Como funciona , trabajo con la instrucción BT de la cual hablamos en el post sobre Par o Impar , lo que hago con ella es empezar a ver el ultimo bite ,el numero 7 si es 1 la pongo en la variable binario , si es 0 lo mismo . Después decremento AL hacia el bite 6 y se repite la operación , esto se repite hasta llegar al bite 0 que es el ultimo. Este code se puede modificar para que trabaje con strings o con un rago de memoria , pero eso es para después.Chao people y comenten
; Convertir un numero hexadecimal a "binario" por ejemplo la letra a es 61h
Prototipo
IntToBin proto :BYTE,:DWORD
--------------------------------------------------------
Función
IntToBin proc Numero:BYTE,lpBinario:DWORD
mov al,7h
mov ebx,lpBinario ; Binario es la string donde se alojara elnumero convertido
mov cl,Numero
aun2:
dec eax
bt ecx, eax
mov byte ptr ds:[ebx],31h
jb nocero2
mov byte ptr ds:[ebx],30h
nocero2:
inc ebx
cmp al,0FFh ; VER si es el fin ...
jnz aun2
ret
IntToBin endp
Uso de la función
invoke IntToBin,0A0h,addr binario
--------------------------------------------------------
El code es libre siempre que se indique el autor de este.jajaja
Chao.
PD: Todos los que quieran ayudar , estoy haciendo un pequeño escrito sobre instrucciones inútiles y quisiera que mandaran tips sobre estos temas , ej de instrucción inútil
"inc cl" ;<< Nada mas inútil que usar este code debe de estar prohibido , sabes por que ?
Porque es mejor hace "inc ecx" y el resultado es el mismo y nos ahorramos un byte
00401000 > FEC1 inc cl
00401002 41 inc ecx
Ley numero 1 > Nunca incrementes un registro low como es el caso de "al cl dl bl"
Parece sencillo pero lo he visto en algunos casos (personales) XD
----------------------------------------------------------------------------
Otro caso es este:
(Objetivo : Poner en 7 a eax)
00401000 > 33C0 xor eax, eax
00401002 83C0 07 add eax, 7
-------------------
00401005 B8 07000000 mov eax, 7
Cual es mejor??
link http://foro.elhacker.net/asm/codigos_inutiles-t261032.0.html
Salu DOs