PROGRAMMING
According to numerous requests from readers, this section
We highlighted some of the things that cause the greatest
difficulty in understanding a beginner program in assembly
language. The available literature on programming in machine
codes, in most cases, designed for trained readers. As it
turned out, many PC owners have faced
with the problem of terminology. Such
concept as a byte, bit, register
etc. Naturally, without development
these concepts do attempt to write programs useless.
VERY EASY ON COMPLEX
Without going into detail in the block diagram of a computer,
we consider its basic unit.
Central Processing Unit (CPU). In
computer ZX-Spectrum CPU-Z80.
CPU has the ability to read data from permanent storage
(ROM), read data and
send data to the operational
Memory (RAM) and
read data, send data
make them arithmetic and logical operations in
processor registers.
CPU registers, the cells
RAM and ROM can be represented in the form of original cottages
- Bytes in which there are 8
Apartments - bits. In each apartment, which are numbered from
0 to 7 can be either 1
or 0. Although each bit is
Only two states, 0 or 1,
weight of each bit is different in
Depending on the number (level).
So 1 is located in the zero
discharge has the number 1 in the first
discharge - 2 of 2 - 4, 3 - 8
4 - 16, 5 - 32, 6 - 64
7 - 128. Number, which is located in a byte can be determined
summing all the bits containing 1 according to their ranks.
Example:
7 6 5 4 3 2 1 0 bit
128 64 32 16 8 4 2 1 wt
0 0 1 0 0 1 1 0 bytes
32 + 4 +2 = 38
Consider first the town of
registers, which is located
directly into the processor.
Houses (registers) in this town
numbered letters of the Latin
alphabet and are arranged in pairs.
The function of each register is different.
Register A - battery. With this
register connected the greatest number of arithmetic and
logical instructions.
Next to the register A is located
Register F - a flag register, which can form a pair with
register A. After
Some commands in accordance
with the result of the operation changed the relevant bits of
this register. Bits of this register
called flags. If a bit contains one, then the flag is set, if 0
- reset.
Register flags F
S Z H V N C
carry flag
negative flag
Consequently results
results
parity flag
overflow
not used
Flag auxiliary
of auxiliary
Transfer
not used
zero flag
flag subtraction
of
When programming a flag
register plays a very important
role, because looking at changes
flags in this register can do the branching program to convert
numbers out of routines or programs for
performing the required conditions and
etc.
General purpose registers:
B, C, D, E, H, L - although these registers can be performed
the same operation, there are many teams that unique to the
individual registers that set.
In any given case one can store a number from 0 to
255. To store numbers in diopazone from 0 to 65535 apply
registra.Registry two can be combined only in certain
pair BC, DE, HL, and the first register is a senior and the
second junior. Senior Registry called because it is exceeded
in the low register number 255
Senior register increases by
unit.
In addition to a core set of registers in the processor Z-80
has another set of registers,
which is called the alternative. Alternate register set has the
following notation A'F ', B'C', D'E ', H'L'.
Index registers IX, IY
Feature of these registers
is that with the help of their
processor can access
memory cells, indicating their displacement relative to -128 or
127 address set in this case.
Stack Pointer SP
In programming the programmer specifies the scope of RAM
(stack), where the processor is in the process will be to
temporarily store their data. Address this field is entered in
the register pair SP. When writing to the stack value of SP is
reduced by 2 and when extracting the number increases by 2.
Program counter PC
Two-byte register PC monitors
order of instruction execution
program.
Register regeneration memory R
Serves the needs of computer hardware. Younger seven
of digits increases
unit after executing the next command processor. MSB of the
hardware is not used.
Register interrupt vectors I
Every 1 / 50 of a second processor interrupts the execution of
the main program and starts the auxiliary program. When you
install the 2-nd mode interrupt a programmer can write their
own protsvduru interrupt handling. As a result, processor will
perform two programs in parallel, switching on their
performance after every 1 / 50 of a second.
And now the most extensive
part of the computer - pamyat.Pamyat
computer is one big street consisting of memory cells.
As well as the CPU registers, each memory cell can
store one byte consists of
eight bits. Computer memory cells have a continuous numbering
from 0 to 65535. Computer memory
divided into two parts.
ROM from 0 to 16383. In this section
memory processor powerless
change anything. There are
program which the processor immediately begins to perform after
turn on your computer.
RAM from 16,384 to 65535.Etu part
Memory can be divided into
four areas:
1.16384-23296 - the screen. All that
send this memory area
displayed on the screen.
2.23552-23733 - GOVERNMENTAL peremennyh.Ispolzuetsya area
systems to temporary storage of data
work program ROM.
3. Free Memory - plot
memory that we can use to store
data and the location of a proper term program.
4. Machine stack. On request
programmer can select any fight free chunk of memory
temporary storage
processor.
EnA Now the fun part. Your
The first program in assembly language.
If you have a 128K computer, then
better, of course, use
turboassemblerom TASM 3.0.
The program below will show you how to Record the number in the
register of the processor, to produce him in a series of
arithmetic operations, copy number from the register in the
memory cell and when the corresponding
conditions exit. You
see also what changes
occur in the flags register F
with the program.
ORG 40000; address of the beginning of
; Program
LD A, 0; Register A enters 0
M1 INC A; increase the number of
; Register A by 1
RET Z; exit from the program
And if the flag
; Zero Z
LD (16384), A; contents of Reg.
; A copy of
; Screen
JP M1; jump to label M1
To run the program, press
ENTER.
The editors are very hopeful that
This short article will help you make the first decisive step
to learn assembler.
*