📄 basics of am 3mp33j3w.txt
字号:
::::::::: :::::::: ::::::::: ::::::::::
:+: :+: :+: :+: :+: :+: :+:
+:+ +:+ +:+ +:+ +:+ +:+
+#++:++#+ +#++:++#++ +#++:++#: :#::+::#
+#+ +#+ +#+ +#+ +#+ +#+
#+# #+# #+# #+# #+# #+# #+#
######### ######## ### ### ###
http://blacksun.box.sk
____________________
_______________________I Topic: I_____________________
\ I Bascis of am I /
\ E-mail: I 3mp33j3w I Written by: /
> I I <
/ fu@ckz.org I____________________I Ralph \
/___________________________> <_________________________\
Basics of am 3mp33j3w
by Ralph (fu@ckz.org)
-AWC (http://awc.rejects.net)
1. Introduction
-About this thing
-Who should read this?
-Brief intro to Mircoprocessors
2. Basics
-ALU
-Accumulator
-Data Register
-Address Register
-Program Counter
-Stack Pointer
-Instruction Register
-Instruction Decoder
3. Architecture
-Buses
-Instruction Responses
-Fetch
-Decode
-Execute
-Microprocessor Instructions
-Modes of Addressing
-Inherent Mode
-Immediate Mode
-Direct Mode
4. Machine Cycles
5. Interfacing
-Digital
-Analog
-Robotics
6. Other
1. Introduction
================
About this thing
----------------
This article will explain the basics of general MPUs. It is by no means in-depth or
anything, but it should be enough. I'm taking a fairly lowlevel approach to this thing.
As in, I will be talking about the circuits and such.
Please note that while I tryed to keep this information as acurate as possible by
reading multiple views on something, I can't guarentee that this info is actually all
true since I don't know anyone who wants to and knows enough to proof-read it.
Also, this thing is very general! Just by reading it you won't be able to distinguish
an Apple from an IBM or even a calculator.
Finally, even though this thing only explains the very basics of CPUs, it's not really
recommended reading material for people who are new to computers. I assume you're
familiar with concepts such as the binary numbering system, PC hardware, circuits, etc.
Who should read this?
---------------------
I have honestly no idea. Maybe low level programmers, or people new to this might be
able to put this to some use. This is basicly just background information you should
know, but will most likely never actually use it. Kinda the way most people in
high school math are thinking. In addition, this information is fairly old, thus some
of this shit has long since been replaced or added on to.
Brief intro to Mircoprocessors
------------------------------
Inside every computer, there is a little ceramic block of purified crystaline silicon,
coated with impurities that give it electronic swithing abilities, and etched with
poisonous gases. This little block was developt in 1971 by Integrated Electronics
(Intel). The earliest version of this thing was the 4004 chip used in Japanese
calculators. One year later, the founders of Intel, Robert Noyce and Gorden Moore,
designed the 8008 chip. These things sold rapidly and Motorola produced it's own chip,
the 6800. I little later more companies like Signetics (the 2650) and Rockwell
(the PPS8) produced their own chips. Still later many companies started releasing a
new generations of chips with more functions build into a single chip. Those are for
example Fairchild and Mostek's F8, Intels 8048, and my favourite, Zilog's Z80 (still
used in GameBoys). The Z80 stands out because it can handle the numbers DEAD and BEEF.
Ph33r! Anyway, eventually most of these companies droped out of the race, and only
Intel and Motorola kept on developing new processors. Intel started to work with IBM
and produced such famous chips as the 8088 and the 8086. Later a number was added
with each new version: 80286, 80386, 80486. The 80586 was renamed to Pentium. Motorola
on the other hand went to Apple. I don't like Apples, so I have no idea what the
current chip versions are.
Basics
======
A microprocessor is a chip which must perform at least all following functions:
* Receive and store binary data
* Perform arithmetic operations
* Make Logical decisions
* Deliver processed data to output circuits
These statements are very general, and along the way, I will explain how each is
performed.
ALU
---
ALU stands for Arithmetic Logic Unit, and is just that. It performs all the arithmetic
and logical operations based on binary data being fed to it. It performs additions
viva combinational logic based on usually a Full Adder Circuit. Subtractions is done
by first negetating the numbers, than adding them. Mulitplication and Division is done
by repeaded adding or subtracting respectivly.
This k-rad ASCII shows you how the ALU would go about adding two numbers (well it's
supposed to anyway):
+----------+
| Memory |
+----------+
| |
Number 2 Number 1
| |
+-----------+ +-------------+
|Accumalator| |Data Register|
+-----------+ +-------------+
\ /
Number 2 Number 1
\ /
\ /
+---------------+
| ALU |
+---------------+
|
Result
|
+-----------+
|Accumulator|
+-----------+
NOTE: The accumalator that stores the result is the same that stored number 2, I
just couldn't figure out how to express that in ASCII.
Accumulator
-----------
This is a multi-purpose circuit section. As you can see from my ASCII picture it will
not only hold a number to be mulitplied, but also store the result. Usually, the result
will than be transfered to some form of memory.
Data Register
-------------
Temporary storage for data comming from, and going to the bus.
Address Register
----------------
Conains the address of the current memory data. Used to access specific points in
memory.
Program Counter
---------------
As the name implies, this thing keeps track of the memory location containing the next
instruction to be executed. Whenever a break in the flow of the program (a jump, call,
interrupt, etc), the current number in the program counter is stored in on the stack and
the new location goes into the program counter. When the break is finished and control
is returned to the original routine, the number on the stack gets poped back into the
program counter. On most modern CPUs this part would be the Instruction Pointe (IP)
register.
Stack Pointer
-------------
A data structure that records the last program step prior to a break in the routine.
There are two basics systems. One is to store the last program step in memory and use
the stack-point counter to index the address. The other is the one used on almost all
systems today, Last In First Out, or LIFO. Think of it as a stack of books. You put
one on top of it, and that one will be the first one to come of next. Putting stuff on
the stack is called Pushing, getting stuff from the stack is called Poping. For
example, say you have 5 books called A, B, C, D, and E stack on top of each other like
this:
A
B
C
D
E
Now you add (push) book F to the stack:
F
A
B
C
D
E
If you pop the stack, you get book F back and the stack looks like this again:
A
B
C
D
E
Instruction Register
--------------------
The IR holds the binary data fetched from memory during the decoding and executing of
that instruction.
Instruction Decoder
-------------------
The ID sets up the logic which controls the entire MPU. This includes the control
lines, the clock, and bus access. Everything happending in your processor is controlled
from this section of the chip. Sometimes you may here that everything is controled by
the Control Unit, but in fact CU is just a name that summarizes the previously discussed
units.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -