LF: For newbies... I
[Prev][Next][Index][Thread]
LF: For newbies... I
I will try to make U understand the basic knwoledge for asm: less than a
month ago, i knew nothing on asm... Thus, i feel i am well placed to explain
what i did not understood... I hope you will excuse spelling errors , and
will find this usefull ( for french readers, i recommend "assembleur facile"
in the " les best-sellers de l' informatique" by philippe mercier chez les
editions "Marabout": ~70 FF: ecrit pour PC mais tres, tres bien fait !)
I ) PRESENTATION
1) generalities
First, as assembly is a langage Xtremly similar to the structure of the
machine, there are a few things U ought to know...
The 92' s alphabet is limited to "0" and "1" which correspond to material
states: " electrons not passing" and " electrons not passing".A letter in
this alphabet is called a BIT. 8 bits form a BYTE , 16 bits a WORD and 32
bits a DOUBLE WORD or LONGWORD.
These 4 structures are the structures with which you will be working ( it
happens to be the ones with which the processor of the 92 is working ).
Please: never forget : whatever the numbers you will be using, these numbers
are just a representation of a serie of bits stored in the memory of the 92 (
under the form of micro interrupters swithed on or off )
So: the computer is working with binary data ( these little bits got 2
states: "bi" of bin ) . But data isn' t enough: to build a program, you need
data and instructions. Instructions will thus be simply coded using binary
data.
Here, a problem arises which you guys have surely seen: there is no way for
the calculator to do a difference between data and instructions, and more
genraly, between 2 form of data. Think about it : we' ll work on this later.
2) binary
As you know, all programs can be restricted to the manipulations of numbers:
the program is a traduction of an algorythm, a pseudo code.
So: how do we use numbers: all we got is 0 and 1 ? ? Take it easy: Can you
remember when you learned to count ? Then, that' s it. Basicaly, numbers are
representing objects: 10 is a representation of " I I I I I I I I I I " .
exemple: what is the diffrence between 27, 270, 2700. They are multiplied by
10 which is the number of letters we are using : they can decomposed in :
27=2*10+7, 270=2*100+7*10+0, 2700=2*1000+7*100+0*10+0.
let' s use the same principle with 2 letters: we' ll try to decompose a
numbers into its 2 powers:
exemple: 1=1*2^0 : 1
2= 1*2^1+0*2^0 : 10
3= 1*2^1 +1*2^0 : 11
8= 1*2^3 +0 : 1000
9= 1*2^3+0+0+1*2^0 : 1001
that' s it ! we got numbers !
then with the structures we mentioned sooner, we can represent 255=2^8-1 as a
maximum number with a byte...
To those of you who are reading this and saying: he thinks we are dumb!! All
he did is a base change... Yeah but i thnk that even if you got a calc which
does these conversions between decimal and binary much faster than we will
ever do these ( my casio does this quite well... ) , we should try to work in
binary, with these numbers, as they are at the heart of the machine.
Oh: i was about to forget: how do we represent negative numbers: we adopt a
convention: the bit the most to the left of a data is the sign bit; if set,
the data is negative...
with a byte, you got then, as a maximum number and minimum number: +127 and,
-127.
we' ll see later how they are precisely coded...
Ok: now, you know what is inside the calc : you understand the headaches of
the first programmers who had to program in binary: it is awfull...
So, to represent the content of memory, we use hexadecimal.
3) hexadecimal
As i said sooner, hexadecimalis just a representation of the state of the
memory.
We will now have 16 letters: 0-9 and A-F : this has been chosen because it
gets much easier to represent a word with this notation: to a group of 4
bits, we associate a "letter"
as 4 bits allow 2^4=16 states. thus, you see well in the definition of
hexadecimal how it is simple...
ex: 1100 1010 1000 1101 is CA8D ( i think ... )
4) convention
the "lower byte" of a word is the right 8 bits of the word ( the right byte )
the "higher byte" of a word is the left 8 bits of the word..
Same for longwords: lower word and upper word...
5) the calculator
Your calc is made of 2 parts: the memory: where the data is stored under a
binary form
"Data" means the instructions with their parameters which are to be executed
by the processor.
The processor, the heart of the calc: 2parts
a) a small memory where parameters for the near to come
instructions are
stored: the registers...
b) the processor itself, where instructions are
executed...
the registers are of 5 sort:
a) Dataregisters: numbered from 0 to 7 ( there are 8 ) : D0/D7 : 32 bits
b) adressregisters: A0/A6 : 32 bits
c) A7 : stack register ( it is phisicaly similar to A0/A6 but it isused in a
totaly differenrt manner and you should not meddle with it ... ) :32 bits
d) Status register: 16 bits
e) program counter: 24 bits
a) and b) are for you: you may store in these registers all data you wish
c) we' ll see later its use
d) composed of 2 bytes: the lower byte, the flag register is widely used: its
bits are set depending on the result of some operations executed by the
processor. ( see jimmy mardel ' s guide : 68k programming for more details or
wait some days till i get to the instructions part )
the upper byte, the system byte is a group of bits used by the system: you
can use them too but it requires to know what you are doing which is not my
case yet
e) the program counter is a register in which the adress in memory to the
next instuction to be executed is stored : you cannot modify its content !
well: i am getting tired this evening... if some of ypou found this usefull
and are looking forward a second part, Email me: i will try to write the
following...
Mathieu, <hm lacage@aol.com>
Follow-Ups: