Ascii to hex conversion
<p>I am working on a code for addition of n hexadecimal numbers.
This is the part of code I am not getting</p>

<pre><code>packnum:

xor bl,bl

mov ecx,02      ; For two digit numbers

mov esi,numascii


up1:

rol bl,04           ; Multiply by 10

mov al,[esi]

cmp al,39h

jbe skip

sub al,07h


skip:
sub al,30h

add bl,al

inc esi

loop up1

ret
</code></pre>

<p>Why compare al with 39h?
And if not equal why subtract 07h from al? Is this ascii to hex conversion?</p>