***************************************
* *
* *
* MACHINE LANGUAGE TUTORIAL DISK *
* *
* WRITTEN BY DR. FIRMWARE *
* *
* *
***************************************
The aim of this disk is for you the
reader to understand machine language
to an extent so that you can program
fully in machine language (ml).
PART I
The fundamentals.
The first part of the course is number
bases. if you undestand binary and
hexadecimal numbers and conversion
between these and decimal, you can skip
to the next section.
Binary: Base two.
Number bases are what we are dealing
with here. The number base that we
normally use in everday life is
decimal. 'Decimal' comes from latin
where it meant ten. We have ten digits,
0,1,2,3,4,5,6,7,8, and 9, which are
combined in various ways to produced
other numbers. It is understood that
the number '345' means 3x100+4x10+5x1.
The right-most digit has the least
significance, while the left-most has
the most significance. From left to
right, the numbers that are multiplied
with the digits are successive powers
of 10. 1=10~0, 10=10~1, 100=10~2, etc.
Now applying these fundamentals, we'll
construct the base two, or binary,
number system. First there are two
digits, 0, and 1. So, the right-most
digit has the least significance and
the left-most, the most significance,
just like in decimal. Now, the numbers
multiplied with the digits will be
successive powers of two. 2~0=1, 2~1=2,
2~2=4, 2~3=8, etc. We now have the
basics down, so we'll take a number,
such as '1001101', and find it's
decimal value.
To start, we'll take the right-most
digit and find out what it is
multiplied with. Since it's the right-
most digit, it's multiplied with two
to the power of zero. 1x2~0=1. Now,
repeat the process, this time with the
second right most digit, which is a 0.
0x2~1=0. Continueing produces: 1x2~2=4,
1x2~3=8, 0x2~4=0, 0x2~5=0, and
1x2~6=64. Summing the results,
1+0+4+8+0+0+64=77. So 77 is the decimal
value of the binary number 1001101.
If you want to practice some, just make
strings of 0's and 1's and do what we
did above.
Conversion from decimal to binary is a
little more complex. Suppose we take a
decimal number, 35. To convert, we do a
series of steps.
1> Divide the number by two, and put
the remainder aside.
2> Replace the dividend with the
quotient.
3> Repeat step 1 & 2 until the number
reaches zero.
4> Take the remainders and place them
in a row, the first is right-most, the
last is left-most.
And that's it. To demostrate, we'll
convert 35 to binary.
0 R=1 -------
--- !
2) 1 R=0 !
--- !
2) 2 R=0 !
--- v
2) 4 R=0 100011
--- ~
2) 8 R=1 !
--- !
2) 17 R=1 ------------
---
2) 35
There. Quite simple. The diagram would
look somewhat better on paper, but this
will have to do in the mean while.
Hexadecimal
'Hex', as it is affectionately called
by in most computerese dialects, is
nothing more than a base sixteen number
system. Let's go through some basics.
It has 16 digits. These digits are the
numbers 0-9, and the letters A-F. The
reason why the letters are included is
because there aren't enough numbers.
Let's take a number, $4A. Note that
when you see a '$' infront of a number,
it denotes that the number is a hex
number. $4A means 4x16~1+10x16~0. The
letters are the numbers from 10-15, A
being 10, B is 11, C=12, etc.
Conversion to decimal is exactly the
same as for binary. To demostrate we'll
convert 10234 to hex.
0
------
16) 2 R=7 ----
------ v
16) 39 R=15 7FA
------ ~
16) 639 R=10 -----/
------
16) 10234
There we are! 10234 is $7FA.
One interesting fact: since 16=2~4,
then a 4 digit binary number is equal
to 1 hex digit, i.e. 1111=$F, 1010=$A,
etc. This makes binary to hex, and
vice versa, conversion very easy. For
example, the number $3A0 in binary is
0011 1010 0000.
~ ~ ~
! ! $0
! $a
$3
This ends the discussion on number
bases and now the reader should be
aquianted with binary and hex and what
they mean.
Bits and Bytes.
A bit is really only a binary digit.
In other words, a 1 or a 0. These are
digital computers handle, strings upon
strigs of bits. Unfortunately, bits are
very combersome, because even the
charcters that you see require 8 bits
each. The screen size is 40x24, and
that adds up to 7680! bits!
A more convinient form are two digit
hex numbers. A two digit hex number
represents 8 bits in only two digits.
A more common name for this compact
unit is a byte.
You might know that your computer has
64K RAM. The K represents 1,024 bytes.
So this means that your computer has
65,536 bytes of RAM memory. 65,536 can
be expresses more conviniently as 2~16.
This is important for reasons that
we'll discuss a little later.
Well, there we are! Now that we have
some basics down, we can get to some
machine language.
=======================================
DR. FIRMWARE, OCT 21st, 1985.
I CAN BE REACHED ON TESTY, 514-332-6852
OR ON TRANSFERS AE, 514-738-1247
=======================================