Está en la página 1de 426
~ o & S = g § a 8 >» 8 e é c S 8 esus 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 I gran 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

También podría gustarte