The MASM Forum Archive 2004 to 2012

General Forums => The Campus => Topic started by: azdps on May 26, 2008, 09:35:55 PM

Title: hex/dec to bin
Post by: azdps on May 26, 2008, 09:35:55 PM
im opening a registry key to get a hex or dec value (dword). im able to obtain the value but i need the value returned to be in bin format so that i can check for which bits are set or not set. once i obtain my dword value how would i do that?
Title: Re: hex/dec to bin
Post by: NightWare on May 27, 2008, 12:12:39 AM
if you have obtained the dword, then IT'S in bin/hex/dec...  :toothy coz bin/hex/dec are just views of the value.

if you want to test the bits, use "bt reg,bit" (where here the bit go from 0 to 31)
and if the bit is positionned the carry flag = 1, otherwise = 0. and then, you just have to jump with "jc" or "jnc" where you want...

if you want to convert the value in binary string, you can use :
ALIGN 16
;
; convert a dword to binary string
;
; Syntax :
; mov eax,Dword
; mov esi,String (33 bytes, 32 digit+final zero)
; call Dw2Bin
;
; Return :
; nothing
;
Dw2Bin PROC
; push eax
; push edx
push esi
push edi

test eax,eax
jz Label05
mov edi,esi
Label01: shr eax,1
setc dl
add dl,"0"
mov BYTE PTR [edi],dl
inc edi
test eax,eax
jnz Label01
mov BYTE PTR [edi],0
Label02: dec edi
mov dl,BYTE PTR [esi]
mov dh,BYTE PTR [edi]
mov BYTE PTR [edi],dl
mov BYTE PTR [esi],dh
inc esi
cmp esi,edi
jb Label02
Label03:
pop edi
pop esi
; pop edx
; pop eax
ret

Label05: mov WORD PTR [esi],30h

pop edi
pop esi
; pop edx
; pop eax
ret
Dw2Bin ENDP

Title: Re: hex/dec to bin
Post by: herge on May 27, 2008, 11:31:47 AM
 Hi  azdps:


; DW2B.ASM 6:56 AM 5/27/2008
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    include \masm32\include\masm32rt.inc
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    .code
start:
   
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

    call main
    inkey
    exit

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

main proc

    LOCAL Pbuf  :DWORD
    LOCAL buff[65]:BYTE

    mov Pbuf, ptr$(buff)

    mov eax, 2147483647         ; decimal number input

    invoke dw2bin_ex,eax,Pbuf   ; change it to ascii binary

    print Pbuf,13,10            ; print result to console

    ret

main endp

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

end start



Try this.

Regards herge.
Title: Re: hex/dec to bin
Post by: azdps on May 28, 2008, 09:09:18 AM
thank you both. i was able to figure it out.