proc converts 1000h into 1000d..

[b][red]This message was edited by Mr FrozeN at 2004-11-19 8:59:18[/red][/b][hr]
Maybe it will save you some time...
;=======================================================================
Hex2Dec proc
mov ax, Number ;for example 0123h
and Number, 00F0h ;Number=0020h
shr Number, 1
shr Number, 1
shr Number, 1
shr Number, 1 ;Number=0002h
mov bx, Number
mov N, bx ;N=00002h (that's tens)
mov Number, ax
and Number, 0F00h ;Number=0100h
shr Number, 1
shr Number, 1
shr Number, 1
shr Number, 1
shr Number, 1
shr Number, 1
shr Number, 1
shr Number, 1 ;Number=0001h
mov bx, Number
mov Q, bx ;Q=0001h (that's hundreds)
mov Number, ax
;cmp Number, 1000h... ;special case
mov ax, N
mov Tmp, 6
mul Tmp
mov HexN, ax ;HexN=N*6h
mov ax, Q
mov Tmp, 9Ch
mul Tmp
mov HexQ, ax ;HexQ=Q*9Ch
mov dx, HexN
mov Hex, dx
mov dx, HexQ
add Hex, dx ;Hex=HexN+HexQ
mov dx, Hex
sub Number, dx ;sub Number, Hex
ret ;and we got 0123h=0123d... ;)
Hex2Dec endp
;=======================================================================
Formula: NumberHex-(Q*9Ch+N*6h)=NumberDec


Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories