Photo by Jonas Svidras on Unsplash
Last week on my SPO course, I had my first experience writing Assembly code. I won’t lie; it was struggling. For me, Assembly is like the Latin of the codding languages and “carpe diem” wasn’t my first lesson. Hexadecimal, binary and a list of instructions is a must know to guarantee survival.
Our
instructor introduced us to the 6502 processor: it is an old school chip that
was used in many home solutions such as PCs and video games. Internally, it has
three general-purpose registers, three special-purpose registers, memory and
input and output ports. Fortunately, there are emulators on the internet that
helps us to focus on the development, hiding the electronic part from us.
Using the
emulator, our first task was to copy, paste and execute a piece of code to
change the colour of every pixel in the display matrix. That was easy! The
result was a yellow screen. Then we were asked to introduce some instructions
at specific points in the code. Every change in the code changed the filling
pattern in the display.
The first
modification was small: add tya after the loop. It changed the display from
plain yellow to 16 vertical-coloured strips repeated side by side. Then, adding
lsr, altered the size of the bands, and the repeated pattern disappears. After
that, we went crazy, adding multiple lsr, switching tya to asl, and others.
They changed the filling pattern, the pixel colour and sometimes both. Those
exercises introduced us to the loop and nested loop using Assembly.
Then we
increase the level of complexity! We had to place a line on the top and at the
bottom of the screen. Easy? Not really. I struggled to define the beginning of
the last line and the number of pixels to fill in. Yes, I know how to count,
but that thing only understands hexadecimal! So, 32 in hex is $20. The bottom
was more challenging, though. The whole display has 4 pages; every page has 4
lines, and every line has 32 pixels. So, to get the start from the bottom, I
needed the last page ($05) plus 32x3 pixels. In hex, please! The answer is
$05E0. Then I put it in the loop, set the right colour for each one and run it
successfully.
When I
thought that it was enough for the first Lab, the last task made me grab a
coffee. It was to draw simple lines as the previous, but this time, on the left
and in the right. My first approach was to use a second loop that steps 32
pixels at a time. But this doesn’t help when we need to change the page.
Fortunately, I attended the last lecture class, and our instructor explained
how to accomplish it.
To
conclude, Assembly is not a dead language. It is the second language spoken by
every processor when they get out of the factory. You must know it if you want
to talk face to face with them. Or perhaps you want a closer relationship; you
should learn their first language – binary. However, if you speak C, C++, Java
or others, it is also possible to have a conversation by using “translators.”
The compilation process will translate everything for us. Just like human
language, sometimes the translators give us bad sentences. The meaning is
there, but we need to take some time and effort to process it. The same happens
with our fellow processors.
Comments
Post a Comment