Está en la página 1de 283
LENGUAJE ENSAMBLADOR Y PROGRAMACION PARA IBM® PC Y COMPATIBLES Tercera edicién Peter Abel British Columbia Institute of Technology TRADUCCION: Lic. Victor Hugo Ibarra Mercado Lic. en Fisica y Mateméticas Coordinador Matematicas Aplicadas Escuela de Actuaria - Universidad Anéhuac REVISION TECNICA: Prof. Raymundo Hugo Rangel Gutiérrez UNAM México * Argentina + Brasil » Colombia + Casta Rica + Chile + Ecuador Espaiia + Guatemala * Panama + Pera * Puerto Rico * Uroguay * Venezuela EDICION EN INGLES PRE-PRESS/MANUFACTURING BUYER: BILL SCAZZERO- ACQUISITIONS EDITOR: MARCIA HORTON EDITORIAL/PRODUCTION SUPERVISION AND INTERIOR DESION RICHARD DeLORENZO COPY EDITOR; BRIAN BAKER EDITORIAL ASSISTANT: DOLORES MARS SUPLEMENT EDITOR: ALICE DWORKIN ABEL: LENGUAJE ENSAMBLADOR Y PROGRAMACION PARA IBM PC ¥ COMPATIBLES (3a. ed.) ‘Traducida del inglés de ta obra; IRM®-PC ASSEMBLY LANGUAGE. AND PROGRAMMING. All Rights Reserved. Authorized translation from English language edition published by Prentice Hall Inc, A Simon & Shuster Company. ‘Todos los derechos reservados, Traduccién autorizada de la edici6n en inglés publicada por Prentice Hall Inc, ‘All Rights Reserved. No part of this hook may be reproduced or transmitied in any form or by any means, electrowie or mechanical, including photocopying, recording or by any information storage and retrieval system, ‘without permission in writing from the publisher, Prohibids La reproduccién total o parcial de esta obra, por cualquier medio 0 método, sin la autorizaci6n escrita del editor Derechos reservados © 1996 respecto la primera edicisn en espanol publicads por PRENTICE-HALL HISPANOAMERICANA, S.A Atlacomiuleo Naga. 500-5" Piso ‘Col. Industral Atoto 53819, Nouenlpan de }irer, Edo, de México ISBN 968-380-708-7 ‘Miembro de la Cimara Nactonal de la Industria Editorial, Reg. Mim. 1524 ‘Original English Language Edicion Published by Prentice Hall Inc. ‘Conyrigth @ MCMXCV ISBN 0-13-124603-8 IMPRESO EN MEXICO/PRINTED IN MEXICO PARTE A — Fundamentos del hardware y software de la PC CAPITULO 1 Introduccién al hardware de la PC OBJETIVO Explicar las caracteristicas basicas del hardware de la micto- computadora y la organizacién de programas, INTRODUCCION Excribir un programa en lenguaje ensamblader requiere de comocimientos acerea de! hardware {arquitectara) de Ja computadora, su conjunto de instrucciones y sus reglas de uso. En este capi tulo sc ofrece una explicacién del hardware basico: bits, bytes, registros, el procesador y el bus de datos. El conjunta de instruceiones y su usa son desarrollados a la large del libra, Los bloques fundamentales de informacion. de sna computadora son los bits y los bytes. Estos proporeionan los medios por los cuales la computadora puede representar datos e instruccio- cnes en [a memoria Los elementos principales de hardware interno de la computadera son un micropracesador, la memoria y los registros: los elementos de hardware externo son los dispositives de entrada! salida, como el teclado, el monitor y el disco, El software consta de diversos programas y archi: vos de datos (ineluyendo al sistema operativo) almacenados en el disco. Para ejecutar (0 correr) un programa, el sistema lo copia del disco a la memoria interna. (La memoria interna es lo que la ‘gente entiende cuando pide que su computadora tenga, por ejemplo, 8 megabytes de memoria.) El microprocesador ejccuta las instrucciones del programa, y los registrox manejan la aritmetica, movimiento de datos y el direceionamiento. 2 Introduccién al hardware dela PC Capitulo 1 Un programa en lenguaje ensamblador consiste en uno o més segmencos para definis datos y almacenar instrucciones de maquina y un segmento Hamada stack (@ pila) que Contiene direccio- es almacenadas, BITS Y BYTES La unidad més pequefia de informaci6n en la computadora es el dit. Un bit puede estar no magne- tizado, 0 apapado, de modo que su valor es cero, o bien, magnetizado, o encendido, de modo que su valor es uno. Un solo bit no proporciona mucha infarmacién, pero es sorprendente lo que un conjunto de ellos puede hacer Bytes ‘A.un grupo de nueve bits se le Hama dyze, el eual representa locatidades de almacenamiento, tanto en memoria interna como en discos externos. En memoria, cada byte tiene una direccién nica, que inicia con cero para el primer byte. Cada byte tiene ocho bits para datos y un bit de paridad wpe fefeloefeleslel. (+s tas | paridss | Los acho bits de datos proporcionan la base para la aritmética binarla y para representar caracte- res come la letra A oel simbolo de asterisco (*). Ocho bits petmiten 256 combinaciones diferentes de condiciones de apagado-encendide (off-on), desde todas los bits apagados (00000000) hasta todos los bits encendidos (11111111). Por ejemplo, una representacidn de los bits para la letra A ¢s 01000001 y para el asterisco es 00101010, aunque no tenemos que memorizarlas, La paridad requiere que el nimero de bits encendidos en cada byte siempre sea impar Puesto que la letra A contiene dos bits encendides, para forzar Ia paridad impar el procesador establece de forma automitica su bit de paridad en encendide (01000001-1). De forma similar, puesto que el asterisce tiene ires bits encendides, para mantener 1a paridad impar el procesador establece el bit de paridad en apagado (00101010-0}. Cuando una instruccién hace referencia a un byte en memoria interna, el procesador verifica su paridad, Si su paridad es par, el sistema supone que un bit estd “perdido” y exhibe un mensaje 0 de error. Un error de paridad puede ser resultado de una falla en ¢l hardware o un trastorno eléctrico; de cualquier forma, ¢s un acontecimiento raro. Puede preguntarse c6mo es que In computadora “sabe™ que e] valor de los bits 01000001 representa la letra A. Cuando usted oprime la A en el teclado, el sistema envia una sefial desde esa tecla a la memoria y establece un byte (en una posicién de entrada) al valor 01000001. Usted puede mover el contenido de este byte de un lugar a otro de la memoria y aun imprimirio o mostrarlo en Ia pantalla como la letra A. Para propiisitos de referencia, los bits en el byte se numeran del (al 7 de derecha a izquier- da, como se muestra aqui para Is letra A (ya no nos preocuparemos por el bit de paridad) Naimero de bit 7 540 Coneadioen bis pila: | @ | 9 9 0 @ Nimeros binarios 3 Bytes relacionadas Un programa puede tratar a un grupo de bytes como una unidad de informacién, como tiempo © distancia. A un grupo de uno-o mas bytes que definen un valor particular se le-conoce cominmente como canpo. La computadora también emplea ciertos tamafios que le son naturales: + Palabra. Un campo de 2 bytes (16 bits). Los bits en una palabra son numerados desde 0 hasta 15, de derecha a izquierda, como se muestra a continuacidn para las letras Naimern debit ‘Coatenides.ca hits (PC) + Palabret doble. Un campo de 4 bytes (32 bits) + Palabra: cuddruple. Un campo de 8 bytes (64 bits), + Parrafo. Un campo de 16 bytes (128 bits) «+ Kilobyte (KB). El nimero 2!°es igual a 1024, el cual pasa a ser el valor de K, por kilobytes. Por tanto, una computadora con una memoria de 640K tiene 640 x 1024, 0 655,360 bytes. + Megabyte (MB). El nimero 2” ¢s igual a 1,048,576, o un megabyte. IMEROS BINARIOS Puesto que la computadora slo puede distinguir entre bits 0 y 1, trabaja con un sistema de numeracién de base 2 conocido.camo binario. De hecho, la palabra “bit” es una.contraccién de las palabras inglesas “binary digit” (digito binario). Una coleceién de bits puede representar cualquier valor numérico. El valor de un niimero binario depende de las posiciones relativas de cero a uno de los bits. Al igual que en los nimeros decimales, las posiciones de derecha a izquierda representan potencias ascendentes (pero de 2, no de 10). En el siguiente oamero de ocho bits, todos los bits se toman como uno (encendido}: Posicién: 7 6 5 4 3 2 1 0 Valor del bit: 1 1 1 1 i 1 1 1 Valor dela posicin: 1286432 16 8 4 2 1 E] primer bit de la derecha toma el valor 1 (2%) ¢l que sigue a la izquierda toma el valor 2 (2'); ef siguiente el valor 4 (2°), y asi sucesivamente. En.este caso el valor del ndmero binario-cs | + 2 + 4b a + 128 = 255 2"= 1, En forma similar, el valor del mimero bi ‘Valor del bit: 0 1 a 0 0 a o 1 Valorde la posicign: 128 6432. 16 8 4 2 1 Pero, no es 01000001 Ia letra A? En realidad, si, Los bits 01000001 pueden representar ya sea el mimero 65 0 bien la letra A, como a continuacién se indica: Introduccién al hardware de laPC Capitulo 1 + Siun programa define los dates para propésitos aritméticos, entonces 01000001 es un.rximero binario equivatente al mimero decimal 65 * Si un programa define los datos con propésites descriptives como encabezados, entonces 01000001 representa un cardcter alfabético. ‘Cuando inicie 1a programacién, vera con mas claridad esta distinciOn, puesto que define y utiliza cada elemento de informacién para un propésito especffiea. En la prictica, rara vez los dos usos son fuente de confusidn. Un numero binario no esté limitado a 8 bits. Un procesador que utiliza una arquitectura de 16 bits (0 de 32 bits) maneja de manera automatica miimeros de 16 bits (o de 32 bits). Para 16 bits, 2)*~ 1, da valores hasta 65,535, y para 32 bits, 2" ~ 1, proporciona valores hasta 4,284,967,295, Aritmética binaria La microcomputadora realiza aritmética sélo en formato binario, En consecuencia, el programa- dor de: lenguaje ensamblador tiene que estar familiarizado con el formato binario y Ia suma binaria Los siguientes ejemplos ilustran la suma binaria a 0 1 1 +000 Ht a 1 Io tt "1 Note en los dos ‘iitimos ejemplos un 1 de acarreo. Ahora, sumemos @]000001 a 00101010. Estamos sumando la letra A con el asterisco? No, son las cifras decimales 65 y 42 Decimal Binario 65 ‘01000001 +42 +001 107 OLIOIOL Verifique que la suma binaria 01101011 realmente es 107. Otro ejemplo: sume los valores deci males 60 y 53: Decimal Binario 60 oo1 11100 +53 +001 10101 13 01110001 ‘Niimeros negativos Los niimeros binaries anteriores son todos positives, porque cn cada uno el dltimo bit de la izquierda es un cero. Un nimero binaria negativo tiene un | en el bit de la izquierda. Sin embar go, no ¢s tan simple como cambiar el bit de la izquierda a 1, tal como 01000001 (+65) a 11000001 Un valor negative se expresa en noaciée de complemento a des; esto es, para representar un numero: binario como negativo la regla es: invierta los bits y sume 1. (Se entiende por invertir un bit que sisu valor es 1, lo cambiamos por 0, y $i su valor es 0, lo cambiamos por 1.) Como ejemplo, encontrar el complemento a dos de 01000001 (0 65). Numeros binarios 5 Namero +65: ‘01000001 Invertir los bits: 1OL10 Sumar 1: L Numero 65; Iola Un mimero binario es negativo si su tltimo bit a la izquierda es 1, pero si sum los valores de tos bits que tienen 1, para convertir el némero 10111111 a decimal, no obtendrd 65. Para de- terminar el valor absoluto de un nmero negative binario, simplemente repita la operacién ante rior, esto es, invierta wut 01000000 —1 ‘0100000! La suma de +65 y —65 debe set cero, Pruébelo: +65 1000001 65 +N 69 (00000000 En la suma, el valor de los 8 its es cero, y el acarreo de un | a la izquierda se pierde. Pero coma existe un acarreo hacia ¢l bit de signo y tn acarreo hacia afuera del bit de signo, el resultado es correct. La resta binaria cx simple: convierta cl nimero que sera restado a su complemento a dos y sume los nimeros, Restar 42 de 65, La representackin binaria de 42 es 00101010 y su compie~ mento a dos es 11010110: 65 1000001 +42) 411010110 23 @oooloit El resultado, 23, es correcta. Una vez mis, existe un acarreo valido hacia el bit de signo y un acarreo hacia fuera. Si Ia justificacién para Ia notacién de complemento a dos no es inmediatameme clara, considere la siguiente pregunta: ,Qué valor tiene que ser sumado al nimero binario 00000001 para hacer que la suma sea igual a 00000000? En términos de mimeros decimales, Ia respuesta seria 1. Ei complemente a dos del J es IIIILLI1, Asi sumamos +1 y—1 come sigue: 1 0000001 +-D mw Resultado: (7)00000000 Ignorando el acarreo de 1, puede ver que el niimero binario 11111111 es equivalente al decimal - 1. También puede ver un pattén en la forma en que los niimeros binarios decrecen en valor +3 00000011 +2 09000010 +1 00000001 a 00000000 -1 0 WHMI -2 1LuN10 -3 nor 6 Introduccién al hardware de laPC Capitulo 1 De hecho, en un niimero negative los bits con cero indican su valor (absoluto}: trate el valor posicional de cada uno de los bits con cero come si fueran 1, sume los valores y agregue 1. Este material sobre aritmética binaria y nimeros negativos lo eneantrara provechoso cuando vea los capitulos 12 y 13, sobre aritmética. REPRESENTACION HEXADECIMAL Imagine que quiere ver los contenidos de cuatro bytes adyacentes, que representan un valor bina- rio, en memoria (una palabra doble}. Aunque un byte puede tener cualquiera de las 256 combina- ciones de bits, no hay manera de mostrar o imprimir muchos de elles come caracteres ASCIL comunes. (Bjemplos de tales caracteres son fas configuraciones de bits para Tab, Enter, Form Feed y Escape [tabulador, Intro, Avance de pégina y Escape.) En consecuencia, los disedadores de computaderas desarrollaron un método abreviado para representar informacién binaria. El método divide todo byte en mitades y expresa cl valor para cada medio byte. Como cjemplo, considere los siguientes cuatro bytes: Binnie; [0101 1001 | oof) orm | tor too; | 1100 1110 Decimal: 59 3s} un 9] ew Puesto que los niimeros 11, 12 y 14 necesitan 2 digitos, se extiende ¢l sistema de numera- cidm de manera que 10 = A, 11 = B, 12 = C, 13 = D, 14 = Ey 18 = F. Aqui esté el nimero en forma abreviada que representa el contenido de los bytes dados: 39 35 BS CE Por tanto, el sistema de numeracidn incluye los “digitos” 0 a F, y ya que existen 16 de tales digitos, cl sistema es conocido como representacién, hexadecimal (o hex). La figura 1-1 muestra los niimeros decimales de 0 a 15 junto con sus valores equivalentes en binario y en hexadecimal Binaric Decimal Nexadecimal | Binarig Decimal Hexadecimal onan 0 . Loop a 5 gona, 1 a 1002 3 2 ooo a 2 1019 1 a gona, 3 3 1022 a B 0190 4 4 1109 wz c 0x93 5 5 1192 a 3 Gres 7 7 432 a5 F Figura 1-1 Representacién binaria, decimal y hexadecimal 1 lenguaje ensamblador hace uso considerable del formato hexadecimal. Un listado de un programa ensamblador muestra, en hexadecimal, todas las direcciones, instrucciones de eédigo de maquina y el contenido de [as constantes de datos. Para depurar sus programas, puede usar el programa DEBUG del DOS, cl cual también muestra las direcciones y los contenidos de los bytex en formato hexadecimal Muy pronte staré trabajando en formato hexadecimal. Tenga en mente que él siimera hexadecimal que sigue inmediatamente a F es el 10 hexadecimal, que es el valor decimal 16, Weamos a continuaci6n algunos ejemplos sencillos de aritmética hexadecimal. El procesador 7 6 5 F F 10, FF oo 48 HL SR 04 A D 1 1E 40 100 Note también que el 40 hexadecimal es igual al 64 decimal, el 100 hexadecimal es cl 256 decimal y €l 1,000 hexadecimal es el 4,096 decimal, En un programa para indicar un mimero hexadecimal, se escribe una *H” inmedistamente después de! nimero; asi 25H = 37 decimal. Por convencién, un ndmero hexadecimal siempre empieza con un digito 0-a 9, asi que debe codificar BRH, come OB8H. En este libro indicamos un walor hexade: con la palabra “hex” o una “H™ después del ntimero (como en 4C hex.o 4CH); un valor binario con la palabra “binario” o una “B” a continuackin del aimero (come 01001100 binario.o 01001 100B), y un valor decimal simplemente por un nimero (como. 76). Se exceptian Jos casos en que la base es obvia por el coniexto. En el apéndice A se explica cOmo convertir mimeras hexadecimales a decimal, y viceversa, CODIGO ASCIT Para uniformar Ia representacidn de caracteres, los fabricantes de microcomputadoras han adop: tado el cédigo ASCII (American Standard Code for Information Interchange). Un codigo unifor- ‘me facifita la transferencia de informacién entre los diferentes dispositivos de la computadora, 11 c6digo ASCII extendide de & bits que utiliza la PC proporciona. 256 caracteres, incluyendo simbo- los para alfabetos extranjeros, Por ejemplo, la combinacién de bits 01000001 (41 hex) indica la letra A. El apéndice B tiene una lista de las 256 caracteres ASCII y el capitulo 8 ensefia eémo mostrarlos en la pantalla. EL PROCESADOR ‘Un elemento importante del hardware de la PC es la unidad del sistema, que contiene una tarjeta de sistema, fuente de poder y ranuras de expansién para tarjetas opclonales, Los elementos de la tarjeta de sistema son un microprocesador Intel (o equivalente), memoria de s6lo lectura (ROM) y memoria de acceso aleatorio (RAM). El cerebro de la PC y compatibles es un microprocesador basado en la familia 8086-de Intel, que realiza todo el procesamiento de datos ¢ instrucciones. Los procesadores varian en velocidad y eapacidad de memoria, registros y bus de datos, Un bus de datos transfiere datos entre el procesador, la memoria y los dispositives externos. En realidad, dirige el tréfico (trénsito) de datos. En seguida se anota una breve descripcién de varios procesadores de Intel: 8088/8018. Estos procesadores tienen registros de 16 bits y un bus de datos de & bits, y pueden direccionar hasta un millén de bytes en memoria interna. Los registros pueden procesar dos bytes al mismo tiempo, mientras que el bus de datos sélo puede transferir un byte a la ver. El 80188 es un 8088 con mayor potencia. por la adicién de unas cuantas insirucciones, Ambos procesadores corren en lo que se conoce como mado real, esto es, un programa a la vez 8086/90186. Estos procesadores son similares « los 8088/80188, pero tienen un bus de daios de 16 bits y corren mas répida, El 80186 es un 8086 més potente con unas cuantas instruc- ciones adicionales. Introduccién al hardware dela PG Capitulo 1 80286. Este procesador puede corter mds répido que los anteriores y direceionar hasta 16 millones de bytes. Puede cotrer en modo real o en mode protegido para multitareas, 80396. Este procesador tiene registros de 32 bits y un bus de datos de 32 bits, y puede ccionar hasta cuatro mil millones de bytes en memoria. Puede correr en moda real o en modo protegido para multitareas, 80486. Este procesador también tiene registros de 32 bits y un bus de datos de 32 bits {aunque algunos. clones tienen un bus de-datos de 16 bits) y esta disehado para mejorar el desem- pefo, Puede correr en modo real o en modo protegido para multitareas, Pentium (o PS). Este procesador tiene registros de 32 bits, un bus de datos de 64 bits y puede ejecuar mis de una instruccién por ciclo de reloj. (Intel adopté el nombre “Pentium” Porque, a diferencia de los nimeros, los nombres pueden tener derechos reservados.) Unidad de ejecucién y unidad de interfaz del bus El procesador se divide en dos unidades logicas; una unidad de cjecucién (EU) y una unidad de interfaz. del bus (BIU), como se ilustra en la figura 1-2. El papel de la EU es ejecutar instruccio- nies, micniras que la BIU envia instrucciones y datos ala EU, La EU conticne una unidad aritmé- vica-légica (ALU), una unidad de control (CU) y varios registros. Estos elementos ejecutan ins- trucciones y operaciones aritméticas y légicas La funcién mas importante de la BIU es manejar la unidad de control del bus, los registros ide segmentos y la cola de instrucciones. La BIU controla los buses que transfieren los datos a la EU, a la memoria y a los dispositives de entrada/salida externos, mientras que los registros de segmentos controlan el direccionamiento de memoria. BU: Una a tata i ts Figura 1-2 Unidad de ejecuci6n y unidad de imertaz del bus Memoria interna, 9 ‘Otva funcién de la BIU es permitir el acceso a instrucciones. Ya que las instrucciones de un programa en ejecuciGn se encuentran en la memoria, la BIU debe accesar insirucciones desde la memoria y colocarlas en la cola de instrucetones. Puesto que el tamafio de esta cola es de 4 a 32 bytes, dependdiendo del procesador, la BIU es capaz de adelantarse y buscar con anticipacién instruceiones de manera que siempre haya una cola de instrucciones listas para ser ejecutadas La EV y la BIU trabajan en paralclo, si bien Ia BIU se mantiene un paso adelante. La EU notifica a la BIU cudndo necesita acceso a los datos en memoria o a un dispositive de E/S. También, la EU solicita instrucciones de maquina de la cola de instrucciones de la BIU. La instrucciGn que s¢ encuentra adelante de Ia cola ¢s la actualmente ejecutable, y mientras la EU esta ocupada ejecutando una instruceién, la BIU busca otra en la memoria. Esta bisqueda se traslapa con la ejecucién y aumenta la velocidad de procesamiento, Los procesadores hasta el 80486 tienen lo que se conoce como iuberia sencilla, la cual los restringe a completar una instruccin antes de iniciar la siguiente. El Pentium y pracesadores. posteriores tienen una duberia doble (0 dual) que les permite correr varias operaciones en paralelo. MEMORIA INTERNA La microcomputadora posee dos tipos de memoria interna: memoria de acceso aleatorio (RAM) y memoria de séla lectera (ROM). Los bytes en memoria se numeran en forma consecutiva, ini ciando con 00, de modo que cada localidad tiene un némero de direccidn tnico. La figura 1-3 muestra un mapa fisico de memoria de una PC tipo 8086. Del primer megabyte de memoria, los primeros 640K Ios ocupa la RAM, la mayor parte de la cual esté disponible para su uso. ROM, La ROM es tn chip especial de memoria que (como su nombre lo indica) s6to- puede ser lefda, Ya que las inscrucciones y los datos estiin “grabados” permanentemente en un chip de ROM, no pueden ser alterados. EL. Sistema Basico de Entrada/Salida (BIOS) de ROM inicia en la direccién 768K y maneja los dispositives de entrada/salida, como un controlador de disco duro. La ROM que inicia en 960K controla las funciones basicas de la computadera, como fa autoprueba al encender, patrones de puntos para los gréficos y el auttocargador de disco, Cuan- da se enciende la computadora, la ROM realiza ciertas verificaciones y carga, desde el disco, los daios especiales del sistema que envia ala RAM. Inicie Direceién use Dec Hex 360% F0000 768K coo00 memoria superior sox aggga | Ge video (RAN! memoria 640 K memoria (RAM) convencional cero 90000 Figura 1-3 Mapa de memoria fisiea 10 Introducctén al hardware dela PC Capitulo 1 RAM. Un programador esté preocupado principalmente con la RAM, que seria mejor tla- mada “memoria de lectura-escritura”. La RAM se dispone como una “boja de trabajo” para almacenamiemto temporal y ejecucién de programas. Ya que el contenido de la RAM se pierde cuando se apaga 1a computadora, debe reservar almacenamienio exierno para guardar programas y datos. Si cuando enciende la computadora tiene insertado un disco flexible con DOS o un disco duro instalado, el provedimiento de arranque en ROM carga el programa COMMAND.COM en RAM. Después se le pide s COMMAND.COM ealizar acciones, como cargar un programa de un disco ala RAM. Puesto que el COMMAND.COM ‘ocupa una pequefia parte de RAM, también existe espacio para otros programas. Su programa se ejecuta en RAM y por lo comvin produce salida a la pantalla. a la impresora.o a un disco. Cuando termina, usted puede pedir al COMMAND.COM cargar otro programa en RAM, una accivin que se escribe sobre el programa anterior. En todo él estudio posterior de la RAM se usaré el 1érmino general “memoria” Dircccionamiento de localidades de memoria Dependiendo del modelo, el provesador puede accesar uno o mis bytes de memoria a la vez. ‘Considere el nimero decimal 1,025. La representacion hexadecimal de esta cifra, O401H , requie- re de dos bytes (o una palabra) de memoria. Consta de un byte de orden alto (mas significativo), 04, yun byte de orden bajo (menos significative), 01. El sistema almacena en memoria estos bytes en Secuencia inversa de bytes: el byte de orden bajo en Ia direecién baja de memoria y el byte de orden alto en la direccién alta de memoria, Por ejemplo, el procesador transferirfa O401H de un registro a las localidades de memoria $612 y 5613 como: regia oa a ——s meemurs o1 o4 locabidad 5612, localidad $613, lnyte menas significative byte mis significative El procesador espera que los datos numéricos en la memoria estén en secuencia inversa de bytes y los procesa de acuerdo ¢on esto. Cuando el procesador recupera la palabra de la memoria, ovra vez invierte los bytes, restablecidndolos de manera correcta en el registro como 04 01 bex. Aunque esta caracteristica es enteramemte automitica, usted tiene que estar alerta cuando progra- ‘me y depure programas en lenguaje ensamblador Un programador de lenguaje ensambladar tiene que distinguir claramente entre la direecidn ¥ los contenidos de una localidad de memoria, En el ejemplo anterior, el comtenido de la localidad 5612 es O1 y el contenido de la lovalidad 5613 es 04 SEGMENTOS Y¥ DIRECCIONAMIENTO- Un segmento es un rea especial en un programa que inicia en un démite de un parrafo, esto es, en tuna localidad regularmente divisible entre 16, 0 M0 hex, Aunque un segmento puede estar ubicado casi en cualquier lugar de Ia memoria y, en modo real, puede ser hasta de 64K. silo necesita tanto espacio como el programa requiera para su ejecucién, Segmentos y direccionamiento " Un segment en modo real puede ser de hasta 64K. Se puede tener cualquier mimero de seg- mentos; para direccionar un segmemto en particular basta cambiar la direccidn en el registro del segmento apropiado. Los tres segmentos principales son los segments de cédtigo, de datas y de la pita Segmento de cédigo El segmento de cddigo (CS) contiene las instrucciones de méquina que son ejecutadas, Por lo comin, la primera instruccién ejecutable estd en el inicio del segmento, y el sistema operativo cmlaza a esa localidad para iniciar la ejecucién de! programa, Como su nombre indica, el registro del CS direcciona el segmento de cédigo. Si su drea de cédigo requiere mas de 64K, su programa puede necesitar definir mas de un segmento de cédigo. Segmento de datos El segmento de datos (DS) contiene datos, constantes y areas de trabajo definidos por el progra ma, El regisiro del DS direcciona el segmento de datos. Si su drea de datos requiere de mis de 68K, su programa puede necesitar definir mas de un segmento de datos. Segmento de la En términos sencitlos, la pila contiene los datos y direcciones que usted necesita guardar tempo ralmente o para uso de sus “Iamadas” subrutinas, El registro del segmento de la pila (SS) direcciona l segmento de la pita, Limites de los sepmentas Los registros de segmentos contienen la direcciGn inicial de cada segmento. La figura 1-4 presenta unesquema de los registros CS, DS y SS; los registros y segmentos no necesariamente estiin.en el orden mostrado. Otros registros de segmentos son el ES (segmento extra) y, en los procesadores 80386 y posteriores, los registros FS y GS, que tienen usos especializados. Como ya dijimos, un segmento inicia en un limite de parrafo, que es una direccidn por to connin divisible entre el 16 decimal, © 10 hex. Suponga que un segmento de datos inicia en Ia localidad de memoria 045 POH. Ya que en este y todos los demas casos €1 dltime digito hexadecimal de la derecha es cero, los diseftadores de computadora decidieron que seria innecesario almacenar el digito cero en el registro del segmento. Asi, (45FOH se almacena como 045F, con el cero de la extrema derecha sobrentendido. En donde sea spropiado, el texto indica al cero de la derecha con corchetes, como en 045F[0} stamens Figura 1-4 Segmentos y registros 12 Intreduceién al hardware dela PC — Capitulo 1 Desplazamientos de segmentos En un programa, todas las localidades de memoria estén referidas a una direccién inicial de segmento, La distancia en bytes desde la direccién del segment se define como el desplazamienta (offset). Un desplazamienio de dos bytes (16 bits) puede estar en el rango de OOOH hasta FFFFH, o bien, desde cero hasta 65,535. Asi, el primer byte del segmemto de cddigo tiene un desplaza. miento-00, el segundo byte tiene wn desplazamiemto Ot, etc. hasta el desplazamiemo 63,335. Para referir cualquier direceién de memoria en un segmento, el procesador combina la direccién del segmento en un regisire de segmento con un valor de desplazamiento En el ejemplo siguiemte, el registro DS contiene la direccidn de segmento del segmento de datos en O4SF[O] hexadecimal y una instruccion hace referencia a una localidad con un desplaza- miemto de 0032H bytes dentro del segmento de datos. EL 7 j ! irecciGn de segmento (4SFOH esplazamiena 32H Por tanto, la localidad real de memoria del byte referido por 1a instruccién es ($4622H. Direccién del segmento DS: G45FOH Desplazamiento: +0032H Direceion real 04622H Note. que un programa tiene uno o mas segmentos, los cuales pueden iniciar casi en cual quier lugar de memoria, variar en tamaio y estar en cualquier orden. Capacidad de direecionamiento La serie de PC ha usade varios procesadores Intel que proporcionan diferentes capacidades de: direceionamiento Direceionamiento de 8086/8088, Los registros de los procesadores 8086/8088 proporcio- nan 16 bits. Ya que una direccidn de segmento esti en el limite de un parrafo, los 4 bits de la extrema derecha de: su direccién son cero. Como ya vimos, una direccién es almacenada en un registro de segmento, y la computadora asume los cuatro dltimos bits de la derecha como ceros (un digito hexadecimal), como anan[0] hex. Ahora, FFFE[OJH permite direccionar hasta 1,048,560 byies. Si tiene duda, decodifique cada F hex come el 1111 binario, considere los cuatro dltimos bits de la derecha como ceros y sume: los valores de los bits a 1. Direcctonamiento 80286. En modo real, el procesador 80286 maneja ¢l direccianamiemio de la misma manera que lo hace el 8086, En moda protegide, el procesador utiliza 24 bits para direceionamiento, de manera que FFFFF[0] permite diteccionar hasta 16 millones de bytes. Los registros de segmento actéan come seleccionadores para accesar una direccidn de segmento de 24 bits de la memoria y sumar este valor a un desplazamiento de direceién de 16 bits: Regiutra de segment: 16 bits (0000), Direccién det segment: Da bats Registros 13 Direccionamiento 80386/486/586. En modo real, estos procesadores manejan el direc- cionamiento de forma muy parecida a como lo hace un 8086. En modo provegid, tos procesadores utilizan 48 bits para el direccionamiemto, lo que permite direcciones de segmento de hasta cuatro mil millones de bytes. Las registros de segmento de 16 bits actdan como seleocionadores para el acceso a direcciones de segmento de 32 bits de la memoria y para agregar este valor a un despla- zamiento de direeeién de 32 bits Registro de segmenio: 16its [0000] Dareceién del segment 3 REGISTROS Los registros del procesador se emplean para controlar instrucciones en ejecucién, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionables por medio de un nombre. Los bits, par convencién, se aumeran de derecha a izquierda, como en: M4 12 12 1 Ww 9876S 4 I2IIO Registros de segmento Un registra de segmento tiene 16>its de longitud y facilita un érea de memoria para direceionamiento conocida come el segmento actual. Como hemos dicho, un segmento se alinea en un limite de pirrafo y su direceién en un registro de seamenio supone cuatro bits 0a su derecha. Registro CS. El DOS almacena la direccién inicial del segmento de cédigo de un progra- ma en el registro CS. Esta direccién de segmento, mis un valor de desplazamiento en ¢l registro de apuntador de instruccién (LP), indica la direccién de una instroccién que es buscada para su ejecuciGn, Para propésitos de programacién normal, no se necesita referenciar el registro CS. Registro DS. La direccitin inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta diteccién, més un valor de desplazamiento en una insiruceién, genera una referencia a la localidad de un byte especifico en el segmemto de datos. Registro SS, El registro S$ permite la colocacién en memoria de una pila, para almacena- miento temporal de dirceciones y datos. El DOS almacena la direccién de inicio del segmento de pila de un programa en el registro SS. Esta direccién de segmento, mis un valor de desplaramien to en el registro del apuntador de Ia pila (SP), indica la palabra actual en la pila que esté siendo direccionada. Para propésitos de programacién normal, no se necesita referenciar el registro SS. Registro ES. Algunas operaciones con cadenas de-caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria, En este contexto, el registro ES esti asociado con el registro DI (indice). Un programa que requiere el uso de! registro ES puede inicializarlo con una direcctén de segmento apropiada. Registros FS y GS. Son registros exira de segmento en los procesadores 80386 y poste~ riores. 4 Intraducci6n al hardware dela PC Capitulo 1 Registro de apuntador de instrucciones El registro apuntador de instrucciones (IP) de 16 bis contiene el desplazamicnio de direccién de Ia siguiente instruccién que se ejecuta. El IP esté asociada con el registro CS en el sentide de que el IP indica la instrucci6n actual deniro del segmento de cédigo que se est4 ejecutando actualmente Por lo comin, usted no refiere el registro IP en un programa, pero, para probar un programa, si puede cambiar su valor por medio de! programa DEBUG del DOS. Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits, llamado EIP. En el ejemplo siguiente, el registro CS contiene 25A4I0}H y el IP contiene 412H. Para encontrar la siguiente instruccién que sera ejecutada, el procesador combina las direcciones en ¢l CS y el IP: Segmento de direccidn en el registro CS: 25A40H Desplazamiento de direccign en el registro IP: + 12H Direccién de la siguiente instreccién: 25E52H Registros apuntadores Los registros SP (apuntador de la pila) y BP (apuntador base) estin asociados con el registro SS y permien al sistema accesar datos en el segmento de Ia pila. Registro SP, Fl apuntador de la pila de 16 bits est asociado con el registro SS y propor ciona un valor de desplazamicnto que sc refiere a Ia palabra actual que esta siendo-procesada en la pila. Los procesaderes 80386 y posteriores tienen un apuntador de pila de 32 bits, el registro ESP. El sistema maneja de manera automatica estos registros. En el ejemplo siguiente, e] registro SS contiene Ia direcciGn de segment 27B3[0]H y el SP, ¢l desplazamiento 312H. Para encontrar la palabra actual que esté siendo procesada en la pila, la computadora combina las direcciones en el SS y el SP: Direcci6n de segmento en el registra SS: 27B30H Desplazamiento en el registro SP: +312H Direceién én la pila: 27E42H LTT LT ‘2783 0)H_ 3H Direccid del sepmenso 8S Desplataieatn det SP Registro BP. E] BP de 16 bits facilita la referencia de pardmetros, los cuales som datos y direcciones transmitidos via la pila, Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits liamado el registro EBP. Registras de propésite general Los registros de propdésito general AX, BX, CX y DX son los caballos de batalla del sistema. Son tinicos en el sentide de que se puede direccionarlos come una palabra 0 como una parte de un byte. E! ltimo byte de la izquierda es la parte “alta”, y el dltimo byte de la derecha es 1a parte “baja” Por ejemplo, el registro CX consia de una parte CH (alia) y una parte CL (baja), y usted puede referirse a cualquier parte por su nombre. Las instrucciones siguientes mueven ceros a los regis- wos CX, CH y CL, respectivamente, Registros 15 MON CK.O0 ww Los procesadores 80386 y posteriores permiten el uso de todos los registros de propésito general, mas sus versiones ampliadas de 32 bits: EAX, EBX, ECX y EDX Registro AX. El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y 1a mayor parte de la aritmética. Por ejempio, las instrucciones para multiplicar, dividir y waducir suponen el uso del AX. También, algunas operaciones generan cédigo mas eficiente si se refieren al AX en lugar de a los otros registros ax (Taw [a BAX: Registro BX. El BX es conocido como el registro base ya que es el tinico registro de propdsito general que puede ser un indice para direccionamiento indexado. Tambign es comiin emploar ¢l BX para célculos. BX: BH BL EBX: Registro CX. El CX es conocida como el registro contador. Puede contener un valor para controlar el niimero de veces que un ciclo se repite 0 un valor para corrimiento de bits, hacia la derecha © hacia la izquierda. El CX también es usado para muchos eélculos, oe or ECX; Registro DX. El DX es conocido come el registro de datos, Algunas operaciones de entra da/salida requieren su uso, y las operaciones de multiplicacién y divisién con cifras grandes suponen al DX y al AX trabajando juntos. Dx: DH EDX Puede usar los registros de propésito general para suma y resta de cifras de 8, 16 0 32 bits Registras indice Los registras SI y DI estan disponibles para direecionamiemto indexado y para sumas y restas, 16 Introduceién al hardware dela PC Capitulo 1 Registro SI. El registro indice fuente de 16 bits es requerido por algunas operaciones con cadens (de caracteres). En este contexto, el SI estd asociado con el registro DS. Los procesaderes ‘80386 y posteriores permiten el uso de un registro ampliado de 32 bits, el ESI Registro DI. El registro indice destino también es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el DI estd asociado con el registro ES. Los procesadores ‘80386 y posteriores permiten ei uso de un registro ampliado de 32 bits, el EDI. Registro de banderas De los 16 bits del registro de banderas, nueve son comunes a toda la familia de procesadores ‘8086, y sirven para indicar el estado actual de la méquina y el resultado del procesamiemo ‘Muchas instrucciones que piden comparaciones y aritmética cambian el estado de las banderas, algunas de cuyas instrucciones pueden realizar pruebas para determinar la accién subsecuente En resumen, los bits de las banderas comunes son como sigue: OF (overflow, desbordamiento). indica desbordamiento de un bit de orden alto (mas a la izquierda) después de una operacién aritmética DF (direcciém). Designa la direccién hacia la izquierda o hacia la derecha para mover 0 comparar cadenas de caracteres IF (interrupeién), Indica que una incerrupcién externa, como la entrada desde el reclade, sea procesada o ignorada, ‘TF (trampa). Permite 1a operacién del procesadior en modo de un paso. Los programas depuradores, como DEBUG, activan esis banders de manera que usied pueda avanzar en la ejecucién de una sola instruccién a un tiempo, para examinar el efecto de esa instruccién sobre las registrds y la memoria. SF (signo). Contiene el signo resultante de una operacién aritmética (0 = positive y 1 = negativo). ZF (cero). Indica el resultado de una operacién aritmética o de comparacién (0 = resul- tado diferente de cero y 1 = resultado igual a cero) AF (acarreo auxiliar). Contiene un acarrea externo del aritmética especializada. PF (paridad). Indica paridad par o impar de una operacién en datos de acho bits de bajo orden (més a la derecha). 3 en un dato de acho bits, para CF (acarreo). Contiene el acarrea de orden més alto (mais a la izquierda) después de una operacién aritmética; también eva el contenido del ditimo bit en una operacién de corrimiento © de rotacidn. Las banderas estén en ef registro de banderas en las siguientes posiciones: Nim debt: IS72 1 ow 98 8 7 6 8 4 3 2 1 ° vues [T][[Tole[i[rls]z]]allelle] Puntos clave Ww Las banderas mas importantes para la programacién en ensamblador son O, $, Z y C, para operaciones de comparacién y aritméticas, y D para operaciones de cadenas de caracteres. Los procesadores 80286 y posteriores tienen algunas banderas usadas para propésitas internos, en especial las que afectan al modo protegido, Los procesadores 80386 y posteriores tienen un regis- to extendido de banderas conocido como Eflags. El capitulo 8 contiene detalles adicionales acer- ca del registro de banderas. PUNTOS CLAVE ‘» La computadora distingue entre bits 0 (apagado) y 1 (encendido), y realiza aritmética 3610 en formato binario. + El valor de un nimero binario se determina par la ubicacién de sus es igual a? + 240+ 2,013 ‘+ Un mimero binario negative se representa en notacién de complemento a dos: se invierten los bits de su representacién positiva y se suma 1. + Un solo cardcter de memaria es un byte; comprende ocho bits de datos y un bit de paridad. Dos bytes adyacentes comprenden una palabra, y cuatro bytes adyacentes, una palabra doble. + El valor de K es igual a2", 0 1,024 bytes. + El formato hexadecimal es una notacién abreviada para representar grupos de cuatro bits. Los digitos hexadecimales 0-9 y A-F representan los mimeros binarios desde 0000 hasta aL + La representaciGn de datos de caracteres es realizado en el formato ASCII. + El corazén de la PC es el microprocesador. El procesador almacena datos numéricos en palabras de memoria en secuencia inversa de bytes * Los dos tipos de memoria son ROM y RAM. + Un programa en lenguaje ensamblador consiste en uno o mis segmentos: un segmento de la pila para mantener las direceiones de regreso, un segmento de datos para definir éreas de datos y de trabajo y un segmento de oédigo para instrucciones ejecutables. Laé localidades en un segmento son expresadas como un desplazamiento relativo a la direccidn inicial del segment, « Los registros de CS, DS y 8 permiten el direccianamiento de los segmentos de eédigo, datos y de la pila, respectivamente + El registro IP contiene Ia direceiéin de desplazamiento de la siguiente instruccién que es ejecutada, *« Los registros de apuntador SP y BP esuin asociados con el registro 8S y permiten al sistema accesar datos en el segmento de 1a pila. «+ Los registros de prapsito general AX, BX, CX y DX san los caballos de batalla del sistema, El tiltimo byte a la izquierda es 1a parte “alta”, y el dltime byte a la derecha es la parte “baja”. El AX (acumulador principal) se emplea para entrada/salida y para la mayor parte de la aritmética, El BX (registro base) puede ser usado como un indice en direccionamiento extendido. E] CX es conocide como el registro contador y el DX como el registra de datos + Los regisiros SI y DI estin disponibles para direccionamiemo extendido y para sumas y rrestas. Estos registros también se necesitan para algunas operaciones con cadenas de caracteres (cardcter). Asi, 1011 binario 18 Introducci6n al hardware dela PG Capitulo 1 + El registro de banderas indica el estado actual de la computadora y los resultados de ts ejecucién de las instrucciones. PREGUNTAS: 1-1. Determine ta coafiguracin binaria en bits de los siguientes riimeras: (a) 6; (b) 14; (@) 22; (€) 28; (e) 20. 1-2, Sume los siguientes mimeros binarios: (@) 9001010 (&) OOTTIIOL — fe) OOMTTION (ay OON0 ‘0001 101 ‘oo1010r0 000011 oo L 10 13. Halle el complements a dos. de los siguiemes nimeros binaries; (a) OOO10110; (b) OOLII1O1; (c) ooLit 100 1-4, Encuentre el valor positivo (absoluto) de los siguientes nuimeros binarios negativos: (a) 11001000; (b) TOLILLON; (c) LULTLT1O; (@) FELT. 1-8. Determine la represemacién hexadecimal de los valores siguientes: (a) codigo ASCII de la letra Q; (b) cédigo ASCII del ndimero 7; (c) 01011101 binario, (d) 01110111 binari 1-6. Sume los niimeros hexadecimales siguientes (@) 2346 (be) SIED 7779 td) EABE—(@)_:FBAC. +0022 +0003 +0887 $284 +0CBE 1-1. Determine la representacién hexadecimal de los mimeros decimales siguientes. Consulte el apéndice ‘A para ver el métode de conversidin. También debe verificar su resultado al convertir el hexadecimal a binario yal sumar los bits de 1. (a) 19; (b) 33; (¢) 88; (d} 255: (e) 4,095; «f) 63,398 1-4, Proporcione in configuracién ASCH, en bits, de los siguientes caracteres de un byte. Utilice el apéndice B como guia: (a) P; (b) p: (¢) #: (@) 5. {Cust es objetiva del procesador? {Cuiles son las dos clases principales de memoria en la PC y cusles, sus principales uses? Muestre cémo el sistema almacena 012345 hex como un valor en la memoria, Explique lo siguiente: (a) segmento; (b) desplazamiento (offset); (c) Nanite de diveceién, {Cutles son: (a) las tres clases de segmentos; (hb) su tamafio maximo: y (C) ef limite de direceiéa en el que ellos inician? Sefale el objetivo de cada uno de los tres registros de segments, Explique qué registros ve utilizan para los siguientes propésitos: (a) sumar y restar; (b) comar los ciclos; (¢} muliplicar y dividir; (4) segmentos de direccionamiento; (e) indicacidn de un resultado igual a cera; (f) desplazamiento de direccidn de una instruceidn que se va a ejecutar 1A16. Muestre el registro EAX y el tamaiio y posiciin de AH, AL y AX en él. 1.17. Codifique las instrucciones en lenguaje de ensamblador para mover el nidmert 25 a los eegistros femtes: (a) CH; () CL; (6) CX; (@) BCX. CAPITULO 2 Requerimientos de software de la PC OBJETIVO: Explicar et ambiente general de software para la PC. INTRODUCCION En este capitulo describimos el ambiente de software de la PC: las funciones del DOS y sus ‘eomponentes principales. Examinamos el procesa de arrangue (cémo es que el sistema se autocarga cuando usted enciende su computadora) y consideramos cémo el sistema carga un programa para sjecutarlo, cémo utiliza ta pila y emo una instruccién en el segmento de cédigo direcciona datos en el segmento de datos. E} capitulo se completa con Ia explicaciin bisica de! software y hardware de la PC y nos permite continuar con el capitulo 3, en donde cargamos programas clave en la memoria y los ‘¢jecutamos paso a paso. CARACTERISTICAS DEL SISTEMA OPERATIVO El DOS es un sistema operative que proporciona acceso general © independiente de los dis- ‘positives a los recursos de la computadora, Los dispositivos que permite incluyen teclados, panta~ llas y unidades de disco, Por “independencia de dispositivos” debe entender que no es preciso dirigirse especificamente a los dispositivos, ya que el DOS y sus controladores de dispositivos pueden manejar las operaciones a nivel de dispositive. 19 20 Requerimientos de software dela PC Capitulo 2 Entre las funciones del DOS que nos conciernen en este libro, estén las siguientes: + Administracién de archivos. El DOS mantiene los directorios y archivos en los discos de sistema. Los programas crean y actualizan archivos, pero el DOS tiene la responsabilidad de administrar sus ubicaciones en el disco. + Entrada/satida (E/S). Los programas solicitan datos de entrada al DOS o entregan informacion al DOS por medio de interrupciones. E] DOS releva al programador de codificar a nivel de B/S. * Carga de programas, Un usuario 0 programa solicita la ejecucién de un programa; el DOS maneja los pasos necesarios para tener acceso al programa desde el disco, colocatle en la memoria ¢ inicializarlo para su ejecucién. + Administracién de la memoria. Cuando el DOS carga un programa para su ejecucién, asigna suficiente espacio en memoria para el eédiga del programa y sus datos. Los programas pueden procesar datos dentro de su drea de memoria, liberar memoria que no necesiten ¥ solicitar memoria adicional. + Manejo de interrupciones. El DOS permite a Jos usuarios instalar programas residentes ep memoria que se adhieren al sistema de interrupeiones para realizar funciones especiales. Organizackin del DOS Los tres componentes principales de! DOS son 1O.SYS, MSDOS.SYS y COMMAND.COM. EI 10.SYS realize las funciones de inicializacién en el momento del arranque y también contiene importantes funciones de E/S y controladores de dispositives que dan el soporte de E/S bésico en el BIOS de ROM. Este componente esté almacenado en disco como un archivo de sistema oculte y es conocido come IBMBIO.COM en e! PC-DOS. El MSDOS.SY$ actia como el miicleo (kernel) del DOS y se ocupa de ia administracién de archivos, de memoria y de entrada/salida, Este componente esté almacenado en disco como un archivo de sistema y en el PC-DOS se conoce como IBMDOS.COM. (COMMAND. COM és un procesador de comandos shell que actda como la interfaz entre 1 usuario y el sistema operative. Muestra la indicacién del DOS, monitorea el teclado y procesa los:comandos del usuario, como borrado de tn archive o carga de un programa para su ejecucién, EL PROCESO DE ARRANQUE Encender la computadora provoca una “iniclalizacién” (algunos le llaman “arrangue en fio"). El procesador introduce un estado de restauracién, limpia todas las localidades de memoria (es decir, coloca cero en todas ellas), realiza una verificacién de paridad de la memoria y asigna al registro CS la direcci6n del segmento FFFFIOJH y al registro [P el desplazamiento cero, Por tanto, la primera instruccién a ejecutarse esté en la direccién formada por la pareja CS:1P, que es FFFFOH, la cual es el punto de entrada al BIOS en ROM. [La rutina de BIOS que inicia en FFFFOH verifica los diferentes puertos para identificarlos ¢ inicializa los dispositivos que estén conectados a Ia computadora. Después et BIOS establece dos areas de datos: 1. Una tabla de servicios de interrupeién, que en memoria baja en la localidad 0 y contiene las direcciones de las interrupciones que ocurren. 2. Undreade datos de BIOS que inicia en la localidad 40(0), que estd estrechamente relacionada con los dispositivas conectados. Programa cargador del sistema 21 640K — Parte tranaitoria 4el CoMMAND.coM (programas que se estén ejecutande Parte residente dei CommMAND. Com (reside de manera permanente? or Mapa de la memoria convencional A conlinuacién el BIOS determina si est presente un disco que contenga los archivos de sistema del DOS y, en caso de que asi sea, accesa el cargador de arranque desde exe disco. Este programa carga los archivos de sistema I0.SYS y MSDOS.SYS desde e! disco hacia la memoria ¥ transfiere el control al punto de entrada del IO.SYS, el cual contiene los controladores de dispositivos y otro eédigo especificn del hardware, El 10.SYS se reubica él mismo en memoria y transfiere el control al MSDOS.SYS. Este médulo inicializa las tablas internas del DOS y la porcién del DOS de la tabla de interrupciones. También lee el archivo CONFIG.SYS y ejecuta sus comandos. Finalmente, el MSDOS.SYS pasa el control al COMMAND.COM, el cual procesa ¢l archive AUTOEXEC. BAT, muestra su indicaciém y monitorea las entradas dadas desde el veclado. En este punto, Ia memoria convencional hasta los 640K aparece como se muestra en la figura 2-1, Por medio de un administrador de memoria, parte del DOS puede ser reubicado en 1a me- moria alta. INTERFAZ DOS-BIOS. BI BIOS contiene un conjunto de rutinas en ROM para dar soporte a los dispositivos. El BIOS prueba ¢ inicializa los dispositivos conectados y proporciona los servicios que son usados para la lectura y escritura desde los dispositivos. Una tarea del DOS es hacer interfaz con el BIOS cuando cexista una necesidad de accesar estas facilidades ‘Cuando un programa usuario solicita un servicio det DOS, éste podria transferir la solicitud al BIOS, el cual a su vez accesa el dispositive solicitado. Sin embargo, algunas veces un programa hace la peticién directamente al BIOS, especificamente para servicios del teclado y de la pantalla Y en otras ocasiones -aungue es raro y no recomendable- wn programa puede pasar por alto tanto al DOS como al BIOS para accesar un dispositive direetameme, La figura 2-2 muestra estas trayectorias altcrnas. PROGRAMA CARGADOR DEL SISTEMA EL DOS da soporte a dos tipos de programas ejecutables: COM y .EXE. Un programa .COM ‘consta de un segmento que contiene eédigo, datos y la pila. Si se necesita un pequetio programa de utileria oun programa residente en memoria (un programa que es instalado permanentemente y estd disponible mientras otros programas estin ejecutandose), se escribe un programa COM. Un programa .EXE consta de segmentos de eédigo, datos y de la pila separados y es el método usado por la mayorfa de los programas serios, Este libro usa. ambos tipos de programas. 2 Requerimienios de software de laPG Capitulo 2 Programas de usuarios Hardvare/Dispositivos Figura 2-2 Interfax DOS-BIOS ‘Cuando usted le solicita al DOS cargar un programa .EXE desde el disce a la memoria para su ejecucién, ef cargador realiza las siguientes operaciones: 1. Accesa el programa .EXE desde el disco. 2. Construye un prefijo de segmento de programa (PSP) de 256 bytes (100H) en un limite de parrafo en memoria interna disponible. 3. Almacena el programa en memoria inmediatamente después del PSP. 4. Carga la direccién del PSP en los registros DS y ES. 5. Carga la direccién del segmento de cidigo en el CS y establece el IP al desplazamiento de la primer instruccién (por lo comin cero) en el segmento de cédigo. 6, Carga la direccisn de Ia pila en el SS y establece el SP al tamatio de la pila. Transfiere el control al programa para ejecucién, iniciando (por lo comin) con La primer instracciGn en el segmento de cédigo. En.esta forma, el cargador DOS inicializa correctamente los registros CS:IP y SS:SP. Pero note que el programa cargador almacena la direccién del PSP tanto en el registro DS como en el ES, aunque su programa normalmente necesita la direccién del segmento de datos en estos regis- tros. Como consecuencia, sus programas ti¢nen que inicializar el DS con la direccién del segmen- to de datos, como se verd en el capitulo 4, Ahora examinaremos la pila y después los segmentos de cédigo y datos LA PILA (STACK) Los programas .COM y EXE, requieren un rea en el programa reservada como una pila (stack), El propésito de la pila es mantener un espacio para el almacenamiento temporal de direcciones y datos. E} DOS define de manera automdtica la pila para un programa .COM, mientras que para un programa .EXE usted debe definir en forma explicita la pila. Cada elemento de dato en la pila es una palabra (dos bytes). El registro SS, como es inicializado por el DOS, contiene la direccién del inicio de 1a pila. Inicialmemte, el SP contiene ef tamafio de la pila, un valor que apunta al byte que est pasando ¢! final de la pila. La pila difiere de otros segmentos en su método de almacenar los datos: empieza en Ia localidad més alta y almacena los datos hacia abajo por la memoria.

También podría gustarte