~
o
&
S
=
g
§
a
8
>»
8
e
é
c
S
8esus Alonso Rodriguez, de
veintiocho afios de edad,
estudiante de Ciencias Econo-
micas y colaborador desde sus
inicios en la Revista MI-
CROHOBBY, llegd al campo
de la informatica como aficio-
nado cuando comenzaba a
despertar esta revolucién tec-
nolégica en nuestro pais. Su
pasion por los ordenadores le
ha llevado a convertirlos en su
profesion, que desarrolla ac-
tualmente como Programador
en un Organismo dependiente
del Ministerio de Trabajo.
Autodidacta como es, se en-
cuentra, tal vez, en una posi-
cién privilegiada para apreciar
lo que el aficionado medio es-
pera encontrar en un Curso de
Programacion. Responsable de
la Seccion CONSULTORIO de
MICROHOBBY Semanal des-
de sus ios, el contacto di-
recto con los lectores de la re-
vista ha constituido un inmejo-
rable punto de observaci6n pa-
ra adaptar sus explicaciones a
un nivel comprensible por la
gran mayoria.
HOBBY PRESS, para gente inquleta.PROLOGO
INTRODUCCION AL CODIGO MAQUINA
Précticamente cualquier
usuario de Spectrum ha teni-
do alguna vez contacto con et
cédigo maquina. En este len-
guaje estan escritoslos mejo-
fes programas comerciales, y
algunas veces lo hemos util
zado en las paginas de nues-
tra revista.
Los menos experimenta-
dos se preguntan qué es eso
del codigo maquina, que tiene
que ver con sentencias como
DATA, USR, RANDOMIZE, ete.
y sobre todo, para que sirve. A
lo largo de este curso, vamos
a dar respuesta a estas y
otras preguntas.
El cédigo maquina no es
solo otro Ienguaje mas de
programaci6n; se trata de ha.
blarle al ordenador directa~
mente en el lenguaje que él
entiende. De esta forma, no
estamos sujetos a las restric-
ciones del Basic, queson mu-
chas, y tenemos un dominio
completo sobre nuestra ma-
quina.
Normaimente, nadie pro-
grama directamente en codi-
go maquina, este lenguaje
esta compuesto unicamente
por sucesiones de ntimeros y
no existe nadie capaz de re-
cordarlos todos. Por esto, se
suelen escribirlos programas
en Assembler y despues, tra-
ducirlos a codigo maquina.
Esta ultima tarea, se conoce
por el nombre de “ensambla-
do”, y habitualmente, se reali-
za con la ayuda de un progra-
ma llamado “Ensamblador”.
En los cuatro primeros
capitulos del curso, se estu-
dian algunas nociones pre-
vias que seran necesarias en
los capitulos posteriores, por
lo que no es recomendable
pasar a estudiar un capitulo
sin haber comprendido total-
mente el anterior. _
Es muy probable que el
CODIGO MAQUINA Igran volumen de lectores nos
haga imposible mantener una
correspondencia personali-
zada, pero atin asi, nos agra-
daria que quienes sigan el
curso nos escriban contan-
donos sus progresos 0 las di-
ficultades que encuentran.
Estas cartas nos permitiran ir
adaptando las explicaciones
un nivel que satisfaga a to-
dos y permita que nadie se
quede “descolgado”.
En este mismo capitulo in-
cluimos dos tutinas de utili-
dad escritas en cédigo ma-
quina que permiten hacer
“Scroll” lateral de la pantalla,
aderecha eizquierday pixela
pixel.
Las dos rutinas se han en-
‘samblado una a continuacion
de la otra y son reubicables,
es decir, se pueden colocar
en cualquier parte de la me-
moria. Nosotros las hemos
ensamblado a partir de la di-
reccion 55000, pero quien
disponga solo de 16 K, puede
colocarlas en otra direccién,
haciendo unas pequenas
modificaciones en el progra-
ma cargador, que explicare-
mos un poco mas adelante.
En la FIGURA 1, reproduci-
mos fotograficamente el lista-
do en Assembler de las dos
rutinas. No se preocupe cl
lector sile suenaa “chino”, un
listado en Assembler no es
mas dificil de entender que
uno en Basic, cuando se co-
noce. Al final del curso, mas
de uno sera capaz de mejo-
rarlo.
EI PROGRAMA 1 sirve, logi-
camente, para cargar estas
tutinas en memoria sim nece-
sidad de Ensamblador. De es-
ta forma, no es necesario sa-
ber codigo maquina para
usarlas. Una vez estén en me-
moria, basta teclear:
XHISOFT GENSSM ASSEMBLER®
2X SPECTRUM
Copyright HISOFT 1983
CURSO C/M MICROHOBEY
Pass 1 errors: 00
10 xC-
20 *D+
5000 30 ORG 55000
40 5
SO ;SCROLL_IZQUIERDA
60 5
55000 70 LD HL, 22527
55003 80 Lb C192
55005 90 BUC_2 LD B32
55007 100 AND A
s5008 110 BUC_1 RL HL)
55010 120 DEC HL
S5011 150 DJNZ = BUC_1
55013 140 oR NC, NOCA_1
55015 150 Lp «VAR? s HL
55018 160 Lb IX, (VAR)
55022 170 SET 0, (1X+32)
55026 180 NOCA_1 DEC &
55027 190 oR NZ,BUC_2
55029 200 RET
210 ;
220 ;SCROLL_DERECHA
2303
55030 240 Lp HL, 16384
S5033 250 Lb C,192
§5035 260 BUC_4 LD B,S2
55037 270 AND OA
55038 280 BUC_3 RR (HL)
55040 290 INC HL
55041 300 DJNZ — BUC_S
55043 310 oR NC, NOCA_2
55045 320 Lp (VAR) » HE
55048 330 Lb 1X, (VAR)
55052 340 SET 7» (1X-32)
55056 350 NOCA_2 DEC =
55057 360 IR NZ, BUC_4
55059 370 RET
23728 380 VAR QU 23728
Pass 2 errors: 00
Table used: 97 from 160
RANDOMIZE USR 55000
Il CODIGO MAQUINA
Fig. 1. Listado Assembler de las rutinas de “Scroll” lateral.PROGRAMA |
oe SeROCL EATERAL #* eee _Plor o.@,_oRAU 288.0. oRaU
curse com mrcronopey 9 T9sPb Bn 2as8"8! BRAU%S, CTSY
3g Fone Z2ess 16
323 TRinkeve="S" THEN Ranconze
n> etre TRU INK EY &= THEN RANDOMIZ
3 en ened
} WoBPENT “gRge™: “Sob_onTa vsessvecssecsensecece
ae eau deccocerorcocaesees™
Para que lapantallasedes- _ volverlas a cargar con. nuestros lectores han mane-
place un pixel a la izquierda,
jado alguna vez una calcula-
dora de bolsillo. El conjunto
formado por una calculadora
de bolsillo, la persona que la
Antes de seguir leyendo, le ™aneja, un lapiz y un papel,
pedimos que cargue y ejecu- Peden ser un simil bastante
Para que lo haga hacia late el PROGRAMA 1. Ponga —Proximado de lo que es un
derecha, Para salvar‘el codi- mucho cuidado paranoequi- _ fdenador.
go en cinta, puede utilizar: —vocarse a partir de la linea _Imaginémonos a un amigo
300, ya que los errores en CON una caleuladora y un la-
codigo maquina suelen tener _Pizi esto equivale mas o me-
consecuencias desastrosas. "Sal microprocesador 0
2Ya ha ejecutado el pro- CPU: Por otro lado esta el pa~
grama’ Asombroso éno’’ Te- Pel, que equivale a la memo-
nemos pensado otro que ha-_‘i@. Nuestro amigo puede
il jc el papel para apuntar re~
ce el Scroll-arriba y abajo, ya. USA" el pal '
se lo contaremos. sultados 0 datos intermedios
Ahora vamos a intentar in- 42 198 eAlcules, pero noso-
troducimnos en el estudio de! tos Podemos usarlo tambien,
codigo maquina partiends ara apuntarie a él os calcu-
desde la base mas elemental, _!98 que aueremos que reali-
Bara que incluso quien no e-De esta forma, el papel (la
El PROGRAMA 1 incluye
una demostracion sobre la
forma de utilizar estas rutinas.
Quien esté interesado en
usarlas en sus programas, tenga ni la mas remota idea Memoria) cumple una doble
puede mirar atentamente las
lineas 240 y 250 que resultan
suficientemente ilustrativas.
Para adaptar las rutinas ala
version de 16 K, se deben
realizar las siguientes modifi-
caciones en el PROGRAMA 1:
de lo que es esto pueda se. fuNcién, por un lado sirve pa-
guirnos. Sinoessucasoyes '@ que el microprocesador
usted capaz de entender sin (Nuestro amigo) anote datos,
problemas las explicaciones _Y Per otro lado, sirve para que
de los cuatro primeros capi. 980tros le anotemos las ins-
tulos noes necesario que lea _ucciones que tiene que se-
lo que sigue, aunque tal vez Wit (el programa).
pueda aclararlealgunoscon- __ Nuestro amigo no tiene
idea de como se maneja una
240 In Ineyara” THEN RawooMZ — CePLOS.
usr sceoe calculadora, asi que tendre-
elope cama 7” TEN Rewoontz mos que decirle, una por otra,
M Soe las teclas que tiene que pul-
En este caso, habra que elededaes sar. Podemos decirle: “pulsa
salvar las rutinas con ———=65596 THEN co
(a) A MEX. tos)
fer" cs
3000 EET cecemnt (ici) Ler.
@ THEN LeT es=CHRe
s080, 127 ne-esces:
pene TH Te" oes
Sogo iF eile THEN CET es-stRs IN
ber cxcoc; IF
7 5
Eb led af PH oe ecnons rues
Binacion a Taw srg! ons; TRE.
aesaei "be: co To 100°
Necesitamos 16 digitospa- sumamente sencilla, basta
fa representar todas las posi-__ con multiplicar el valor de ca-
bles combinaciones, como da digito por 16 elevado a la
Como hemos visto, los solo conocemos 10 digitos correspondiente
potencia
numeros binarlos son muy — distintos (del @ al9), utilizare- (como haciamos_anterior-
adecuados para su uso en
mos las 6 primeras letras mente para los binarios y de-
aparatos electronicos, pero maylsculas del abecedario _cimales); habra que tener en
tienen un graninconveniente; (de la“A" ala “F").EnlaFIGU- cuenta, que “A" vale 10, “B”
cuando losescribimos,nece- RA 3 se pueden ver las 16 vale 11, “C" vale 12,
sifamos unagran cantidad de — combinaciones posibles con
“D" vale
13, “E" vale 14 y “F” vale 15.
cifras para representar un 4 bits y su equivalente en he- Veamos algun ejemplo, va-
numero relativamente peque- _ xadecimal.
No. Si pudiéramos agrupar
tar este inconveniente.
agtuparlos de 4 en 4.con el fin
cifras. Como regla general,
con “n” bits se pueden obte-
ner “2 elevado an" cambina-
ciones distintas, por tanto,
con 4 bits podemos obtener
16 combinaciones, cada una
de las cuales las asociare- “Hexa"
mos con un digito hexadeci-
frecuencia,
mos a convertir a decimal el
Supongamos elnumero bi-_ nimero “5CB2h"
los bits, conseguiriamos evi- nario “01101100",
do la tabla de la FIGURA 3, po-
Dado que vamos a trabajar demiosescribirlo como “6Ch"
con 80 16 bits, parece logico Hemos escrito “6" en lugar de
“0110” y “GC” en lugar de
de obtener numeros de 204 "1100", la “h” se anade al fi-
nal para indicar que se trata
de un numero hexadecimal y
no confundirlo con uno dec:
mal. Alos numeros hexadeci
males se les denomina con
simplemente, decimal, precisamente la di-
siguien-
PORTS HC1O
Fu evo eso arory
#54096 = 29730)
El resultado es "23730" en
reccion de la variable del Sis~
Laforma detransformarun tema “RAMTOP". Las direc-
mal. numero Hexa en decimal,es cones de memoria en el
CODIGO MAQUINA 11