ASCII is a 7-bit character code numbered from 0 to 7F in hexadecimal and from 0 to 127 in decimal. See http://aspell.net/charsets/iso646.html and http://en.wikipedia.org/wiki/ASCII .
There is no absolute logic to the assignment of characters in ASCII or in any character set, though of course the digits are normally in order and the alphabet is normally in order. You normally use a table to find any particular character.
Hexadecimal numbers are used to represent ASCII values exactly as decimal numbers are, or octal numbers, or numbers using any base. They are just numbers and can be translated from one base to another. Programmers often tend to use hexadecimal because current computers work in base 2, and base 16 (which is 2 × 2 × 2 × 2) fits into base 2 more conveniently than 2 × 5.
In the original definition of ASCII it was expected that code positions from 128 to 255 (hex 80 to FF) would often be used for extra characters. ASCII sets with such extra characters are sometimes called Extended ASCII character sets. Any character set may be also called a Code Page.
See http://www.asciitable.com/ for the extended ASCII better referred to as Code Page 437 which is the original IBM MS-DOS Code Page. This is no longer the “most popular”. A better listing is found at http://msdn.microsoft.com/en-ca/goglobal/cc305156.aspx where rarer characters are not just replaced with “_”.
Computer languages tended to have a function into which the user could plug in a decimal number and the function would return the character. This function was often called ASC() even on machines that did not use the standard ASCII set and also worked with extended ASCII characters. Such usage encouraged the improper use of the word “ASCII” for non-ASCII characters.
See the site http://www.i18nguy.com/unicode/codepages.html for a large number of code pages and articles on character sets.
The first 128 code points in Unicode contain the ASCII characters. See http://www.unicode.org/charts/PDF/U0000.pdf .