0% found this document useful (0 votes)
9 views1 page

ASCII Conversion Chart

This document presents a reconstructed ASCII conversion chart, originally derived from a source believed to be the Heathkit Company. It details the ASCII codes, including non-printing characters, printable characters, and their binary representations, while providing insights into their usage in microprocessor programming and data flow control. The document also includes downloadable versions of the chart in PDF and Word formats for printing and modification.

Uploaded by

Dathan Nobrega
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views1 page

ASCII Conversion Chart

This document presents a reconstructed ASCII conversion chart, originally derived from a source believed to be the Heathkit Company. It details the ASCII codes, including non-printing characters, printable characters, and their binary representations, while providing insights into their usage in microprocessor programming and data flow control. The document also includes downloadable versions of the chart in PDF and Word formats for printing and modification.

Uploaded by

Dathan Nobrega
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

ASCII Conversion Chart

About This Chart


This is my reconstruction of a chart that I used while teaching microprocessor programming. It is
derived from a chart that I believe came from the Heathkit Company possibly with their solderless
breadboards or with an early 'Hero' robot. My only surviving copy is in pretty bad shape so I
generated this version and added the 'Binary' information which wasn't on the original.

Here is the Chart:

Download the Chart


PDF Document
This is the best choice if you want to print a copy.

Word Document
This is the best choice if you want to modify or add to the document.

Here is some interesting information that you can derive from


this chart.

The first section:

The left hand section contains the first 32 codes, those with hex values 00 through 1F, which are
known as the 'non-printing' characters. These codes were used to supervise or to 'control' the
data flow and the machines (typically Teletype machines) used to send and receive that data.
When mechanical Teletype machines evolved into CRT terminals these codes were adapted to
those terminals. They were invoked by using the control key [Ctrl] along with one of the letter
keys. Which letter key you ask? Well look to the right to column 3 or 4 on the same line as the
code you are interested and you will find the correct letter. Dig out your old ADM-3 terminal and
try some out. The values in the column labeled "ASCII" in this section are abbreviations for the
action that the code would cause. Code 07h is labeled BEL and it would ring the bell (to wake up
the operator) on a Teletype or sound a 'beep' on the CRT terminal. So [Ctrl + G] or [Ctrl + g] will
cause your dumb terminal to emit a beep. If you look at the raw contents of a text document
(one produced by Notepad for example) you will see that each line ends with the hex codes 0D
and 0A in that order. From this sheet you can see that these refer to CR and LF. This tells the
CRT terminal to move the cursor back the start of the line (CR) and then advance to the next line
(LF). Other programs on other operating systems put the LF before the CR or just use the CR and
imply the LF. So much for standards. BS stands for 'backspace', HT is 'horizontal tab', FF is
'form feed'. This one is really neat, on a mechanical machine it advanced to the next 'form' or
next sheet of paper. On a CRT terminal it sent a bunch of linefeeds, effectively clearing the
screen. One operating system we used had the capability of sending messages from one user to
another. These messages normally were restricted to the bottom line of the screen, but if you
sent your (former) friend a message with an FF (or a bunch of LFs) it cleared the screen thus
sending whatever he was working on into oblivion. Check out Wikipedia for more information on
ASCII codes.

The second section:

The next section contains 32 more codes, those with hex values 20 through 3F. These are the
first of the printable characters and they consist mostly of punctuation but they also contain the
numbers 0 through 9. Notice how the ASCII code (hex) for a number relates to the number itself.
This is what makes it so easy to convert numbers to and from ASCII. If you have the ASCII
code for a number you can either subtract 30h or mask off the upper four bits and you will be left
with the number itself. Likewise you can generate the ASCII code from the number by adding
30h or by ORing with 30h. Try to visualize what is happening while using the decimal version of
the ASCII code and you will soon see why I am using hex. Don't those forms that want your
credit card number without spaces or dashes infuriate you. If they haven't in the past then they
should now, since you can see that it is a sign of incredibly lazy programming. All the program
has to do to get rid of spaces, dashes, and anything else except numbers, is to ignore any value
less than 30h or greater than 39h, which can typically be achieved with only a few lines of code.

The third and fourth sections:

These sections contains the rest of the ASCII codes, those with hex values 40 through 7F. Here is
where you find the alphabetic characters and some more punctuation. Compare the binary value
for an uppercase letter with the value for it's lowercase equivalent and you will see that the only
difference is in bit 5. (Remember, the bits are numbered 7 6 5 4 3 2 1 0.) The uppercase letters
have bit 5 = '0' and the lowercase letters have bit 5 = '1'. So, when you enter your name into a
form using lowercase and the screen shows all uppercase letters all they are doing is ANDing your
input with 11011111b before displaying it.

The very last entry - DEL:

This is best explained by an example. Let's assume that you entered an 'a' (binary code
01100001) when you really wanted an 'A' (binary code 01000001). It is no problem to correct
this on a CRT screen, just back up the cursor (with a backspace code - BS), and replace the 'a'
with an 'A'. This is a big problem on a machine that punches the code into a paper tape since a
'1' is represented by a hole in the tape. The machine can't back up and fill in the hole but it can
back up and punch out all of the holes. The replacement character is then punched in the next
position. When the paper tape reader encounters a DEL it just ignores it and procedes to the next
position where it finds the replacement character. Did you notice that I said that it punches out
all of the holes? The actual ASCII code is a 7 bit code and we are using that code on an 8 bit
system, which is why the high bit is '0' for all of the entries on this chart. So, as far as the paper
tape machine is concerned, all of the bits that it knows about are '1' for a DEL code.

Where's the € symbol?


This is ASCII, that would require unASCII.
(my humble attempt at humor)

Back to the Home page.


Last modified on 6 December 2010
Copyright © 2009, 2010 Donald Weiman (weimandn@[Link])

This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit

[Link]

You might also like