Unidad i
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Unidad i

on

  • 606 views

 

Statistics

Views

Total Views
606
Views on SlideShare
606
Embed Views
0

Actions

Likes
0
Downloads
28
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Unidad i Presentation Transcript

  • 1. Ingeniería en Sistemas Computacionales Primera Unidad Lenguaje Ensamblador (SCM-0421)Ing. Mario Jiménez Vázquez
  • 2. Programa1.- Fundamentos2.- Elementos del Lenguaje3.- Modularización4.- Programación Híbrida
  • 3. 1.- Fundamentos1.1.- Introducción1.2.- El Microprocesador1.3 .-Interrupciones1.4.- Estructura de un programa en Lenguaje Ensamblador1.5.- Procedimiento de ensamble, enlace y ejecución1.6.- Entorno de programación
  • 4. 2.- Elementos del lenguaje 2.1.- Instrucciones lineales. 2.2.- Saltos. 2.3.- Tipos de ciclos. 2.4.- Operadores lógicos. 2.5.- Desplazamiento. 2.6.- Procesos de control.
  • 5. 3.- Modularización3.1.- Macros3.1.1.- Internas3.1.2.- Externas3.2.- Procedimientos3.2.1.- Internos3.2.2.- Externos
  • 6. 4.- Programación Híbrida4.1.- Directivas para compilación híbrida4.2.- Funciones en Lenguaje Ensamblador4.3.- Bloques en Lenguaje Ensamblador4.4.- Operadores4.5.- Integrar módulos de Ensamblador en Lenguajes de Alto Nivel
  • 7. 1.1.- Introducción1.1.1.- Uso y aplicaciones del Lenguaje Ensamblador.1.1.2.- Escalabilidad de los procesadores1.1.3.- Tipos de Lenguajes Ensambladores1.1.4.- Clasificación de memorias1.1.5.- Unidades de entrada/ salida
  • 8. Un Lenguaje Ensamblador es aquel en el quecada enunciado produce exactamente unainstrucción de máquina.Existe una correspondencia uno a uno entrelas instrucciones de máquina y los enunciadosdel programa en ensamblador.
  • 9. Lenguaje Ensamblador44 0012 B9 00 05 mov Cx, 545 0015 C6 06 00 43r 08 ciclo: mov Dato, 08h4647 001A BA 03 78 atras: mov dx, 378h48 001D A0 00 43r mov al, Dato49 0020 EE out dx, al50 0021 E8 00 1C call Retardo51 0024 E8 00 2B call pantalla52 0027 D0 0E 00 43r Ror Dato,153 002B 80 3E 00 43r 80 cmp Dato,80h54 0030 75 E8 jne atras5556 0032 E2 E1 Loop ciclo
  • 10. Si cada línea del programa en LenguajeEnsamblador contiene exactamente unenunciado y cada palabra de máquinacontiene exactamente una instrucción demáquina, entonces un programa enensamblador de n-líneas producirá, a suvez, un programa en lenguaje de máquinade n-palabras.
  • 11. Programa enLenguaje de CompilarAlto Nivel oMedioInstrucciones Programa Programa enPrograma en Objeto Lenguaje deLenguaje Ensamblar Enlazar MaquinaEnsamblador Binario Multiplatafor- EjecutableMnemónicos ma Exadecimal Leer Decodificar Microprograma Unidad de Ejecutar Control Microinstruccio nes Electrónica
  • 12. La principal razón por la que se utiliza ellenguaje ensamblador, es porque resulta muycomplejo programar directamente enlenguaje de máquina, los sistemas que seutilizan para resolver las necesidades compu-tacionales de las empresas.Es más fácil utilizar nombres y direccionessimbólicas que manejar únicamente valoresbinarios, octales o hexadecimales.
  • 13. Cuando se usa Ensamblador se puede accederdirectamente a todos los recursos de un proce-sador, mientras que con un lenguaje de nivelmedio o alto no es posible hacerlo, ya que elEnsamblador está diseñado para hacer uso delconjunto de instrucciones completo de unprocesador específico.
  • 14. La programación en Ensamblador es muchomás difícil que en lenguaje de alto nivel.Escribir un programa en Ensamblador es mástardado que escribirlo en alto nivel.Depurar un programa en Ensamblador esmás complejo.Es más difícil mantener un programa en En-samblador que en alto nivel.
  • 15. Programando correctamente un sistema, sepuede producir código más pequeño en len-guaje Ensamblador que en lenguaje de altonivel.Esto es importante porque en todas las aplica-ciones la rapidez de respuesta y el tamaño sonfactores principales.
  • 16. Como ejemplos se puede mencionar al códigode una tarjeta inteligente, el código de un telé-fono celular, los controladores de dispositivosen un sistema operativo, las rutinas de BIOS ymuchos otros.Algunos procedimientos requieren acceso totalal hardware, cosa imposible en lenguajes dealto nivel.
  • 17. Por ejemplo, los manejadores de interrupcio-nes y trampas de bajo nivel de un sistemaoperativo, además de los controladores dedispositivos de muchos sistemas incorpora-dos de tiempo real.Se estima que llevar a cabo la programaciónde un sistema en lenguaje ensamblador espor lo menos 5 veces más tardada que en unlenguaje de alto nivel.
  • 18. También se estima que el código resultante de laprogramación en ensamblador es por lo menosla tercera parte del código obtenido en alto nively se ejecuta en la tercera parte del tiempo.Lo anterior implica que cuando se programa enalto nivel el código generado depende delcompilador, mientras que cuando se usa ensam-blador el código depende del programador.
  • 19. En consecuencia el código producido por elcompilador ocupa un espacio mayor en lamemoria y se almacena en archivos másgrandes.Por el contrario, el código producido por ellenguaje ensamblador ocupa poco espacio enmemoria y se almacena en archivos pequeños,por lo que ocupan poco espacio en los mediosde almacenamiento, como disco duro u otros.
  • 20. 1.1.2.- Escalabilidad de los procesadores
  • 21. Con frecuencia la arquitectura de una aplica-ción se evalúa en términos de su rendimiento;la capacidad que tiene para terminar un núme-ro de operaciones lógicas en un períodoespecífico de tiempo.La meta es lograr una arquitectura que garan-tice que el rendimiento alcanzará un nivel sufi-cientemente alto que permita darle un tiempode respuesta adecuado a la demanda del usua-rio.
  • 22. Una arquitectura escalable es aquella que tienela capacidad de incrementar el rendimiento sinque tenga que rediseñarse por obligación y sim-plemente se aprovecha de manera adecuada elhardware adicional.
  • 23. La definición de escalabilidad más apropiadaen los términos que usaremos es:Un sistema se dice escalable si es capaz, deincrementar sus recursos y rendimiento a lasnecesidades solicitadas de manera efectiva o,en el caso de scale down, reducir costos.
  • 24. Aunque la mayoría de las veces se habla deescalar hacia arriba, es decir, hacer el sistemamás grande, no siempre es necesario.Muchas veces interesa hacer el sistema máspequeño logrando reutilizar los componentesexcluidos.
  • 25. Para que un sistema sea escalable implica: Funcionalidad y rendimiento.Si un sistema escala, mejora su rendimiento, demanera que de forma ideal, al aumentar en N elnúmero de elementos de proceso del sistemaéste debe aumentar en N el rendimiento.
  • 26. Escalabilidad en costos.De lo anterior se deduce que idealmente elcosto de la escalabilidad de 1 a N en un siste-ma lleve un costo de N por el costo de un pro-cesador.La escalabilidad perfecta es lineal, si una po-tencia 10 veces superior nos cuesta 15 vecesmás, el sistema no está escalando bien.
  • 27. Compatibilidad de componentes.De manera que la inclusión o exclusión decomponentes en el sistema no suponga, porobligación, la inutilización, infrautilización ocosto adicional en los componentes.
  • 28. Con todo esto queda patente que tener un altofactor de escalabilidad es un requisito in-teresante para cualquier sistema.
  • 29. Procesadores Intel de la década de los años 70 4004 8008 8080 8086 8088Fecha de 15/11/71 1/4/72 1/4/74 8/6/78 1/6/79introducciónVelocidad de 108 KHz 108 KHz 2 MHz 5 MHz 5 MHzRelojAncho de 4 Bits 8 Bits 8 Bits 16 Bits 8 BitsBusNúmero de 2 300 3 500 6 000 29 000 29 000Transistores (10) (10) (6) (3) (3) (µm)Memoria 640 16 64 1 1Direccionable bytes Kbytes Kbytes Mbyte MbyteMemoria -------- ----------- ---------- ---------- ----------Virtual
  • 30. Procesadores Intel de la década de los años 80´s 80286 80386DX 80386SX 80486DXFecha de 1/2/82 17/10/85 16/6/88 10/4/89introducciónVelocidad de 6 MHz 16 MHz 16 MHz 25 MHzRelojAncho de Bus 16 Bits 32 Bits 16 Bits 32 BitsNúmero de 134 000 275 000 275 000 1.2 MTransistores (1.5) (1) (1) (0.8) (µm)Memoria 16 4 4 4Direccionable Mbytes Gbytes Gbyte GbyteMemoria Virtual 1 Gbyte 64 Tbytes 64 Tbytes 64 Tbytes
  • 31. Procesadores Intel de la década de los años 90´s 80486SX PENTIUM PENTIUM PENTIUM II PROFecha de 22/4/91 22/03/93 1/11/95 07/05/97introducciónVelocidad de 16 MHz 60 MHz 150 MHz 200 MHzRelojAncho de Bus 32 Bits 32 Bits 32 Bits 32 BitsNúmero de 1.185 M 3.1 M 5.5 M 7.5 MTransistores (µm) (1) (0.8) (0.6) (0.8)Memoria 4 4 4 4Direccionable Mbytes Gbytes Gbyte GbyteMemoria Virtual 64 Gbyte 64 Tbytes 64 Tbytes 64 Tbytes
  • 32. PROCESADORES INTEL ACTUALES PENTIUM III PENTIUM IV PENTIUM M PENTIUM DFecha de 1999 2000 2002 2006introducciónVelocidad de 500 MHz 1.5 GHz 1.6 GHz 2.8 GHzRelojChipset 810, 815 915, 925 855, 915 945, 955Número de 8.2 M 42 M 77 M 230 MTransistores (µm) (0.8) (0.13) (0.13) (0.09)Pipeline 20 13 Etapas EtapasMemoria Caché 512 Kb L2 2 Kb L2 1 Mb L2 2x1 Mb L2
  • 33. Escalabilidad en el AMD Athlon 64El núcleo del K8 ha sido concebido desdeun principio para su perfecta implementa-ción en sistemas multiprocesador, tareaque se ve ampliamente beneficiada con laimplementación de la tecnología HyperTransport.
  • 34. Un equipo basado en 8 procesadoresOpteron puede tener 64 bancos de me-moria directamente conectados (128GB de RAM) y 4 enlaces Hyper Trans-port.
  • 35. SocketsUno de los aspectos más controvertidos entodo a lo que la nueva generación AMD64respecta es el tema de los sockets, debido aque desde un principio AMD optó por laconvivencia de los sockets 754, 939 y 940.Empezamos con este último, el 940, que fueel primero en aparecer y está dirigido aservidores y estaciones de trabajo:
  • 36. Como su nombre indica, un socket940 tiene940 pines.En él se pueden instalar microprocesadoresOpteron, dedicados a servidores y estacio-nes de trabajo (workstation) de sistemasmultiprocesador.
  • 37. También se pueden instalar los Athlon64 FX,la versión más potente del Athlon64, si bienla tendencia es que en poco tiempo sólo sededique esta plataforma para el Opteron.Prueba de ello es que el nuevo Athlon64 FX55 ha salido únicamente para socket 939.
  • 38. El siguiente socket en aparecer es el socket754, de 754 pines, destinado a la familia A64de gama baja, es decir, aquéllos Athlon64que no tienen habilitado el doble canal dememoria y funcionan con memoria DDR sinregistrar.
  • 39. Hasta hace poco tiempo estos microprocesado-res eran la única opción que un usuario mediopodía adquirir, dado el elevadísimo precio de lasiguiente familia de microprocesadores Athlon64: los Athlon64 FX, cuyo precio es muysuperior (prácticamente el triple) y desde elprincipio han estado enfocados a las plata-formas socket 939 y 940, sin demasiadas ofer-tas en cuanto a placas base.
  • 40. El hecho de que desde un principio estuviesedeterminado que esta plataforma iba a ser enpoco tiempo sustituida por la 939, a la par delas limitaciones que por naturaleza tiene (sinsoporte para doble canal de memoria), unidoa la no necesidad imperativa del cambio a los64bits, ha hecho que la presencia de Athlon64 en los hogares sea más bien simbólica.
  • 41. La situación ha venido a ser un tanto com-parable a aquél Intel Pentium 4 en socket423, con la diferencia de que entonces nose sabía con tanta certeza la poca duraciónque iba a tener en el mercado.
  • 42. El último en discordia es el socket 939. Esexactamente igual que el 940 a excepciónde que tiene un pin menos, debido a quelos microprocesadores que sean inser-tados en él no requieren memoria ECC(Error-Correcting Code memory) dado queel controlador de memoria está integradoen el propio microprocesador, de maneraque es el microprocesador quien requiereun pin menos para trabajar con memoriasin registrar.
  • 43. la plataforma 939 tiene un futuro más queprometedor, y es que un usuario teóricamen-te podría comprar hoy un Athlon 64 939 ycambiarlo dentro de un año y medio por unnuevo microprocesador mucho más potentey económico, sin necesidad de tener que sus-tituir más hardware que el propio micropro-cesador
  • 44. Escalabilidad de los Procesadores
  • 45. Procesador Pentium IIIParte externa Parte Interna
  • 46. Procesador Pentium IVParte externa Parte Interna
  • 47. 1.1.3.- Tipos de Lenguajes Ensambladores
  • 48. Se pueden distinguir tres tipos deensambladores:– Ensambladores básicos.– Ensambladores modulares– Ensambladores modulares 32-bits o de alto nivel.
  • 49. Ensambladores básicosSon de muy bajo nivel, y su tarea consistebásicamente en ofrecer nombres simbólicos alas distintas instrucciones, parámetros y cosascomo los modos de direccionamiento.Estos ensambladores reconocen una serie dedirectivas (o meta instrucciones) que indicanciertos parámetros de funcionamiento delensamblador.
  • 50. Ensambladores modulares, o macro ensambladores.Son descendientes de los ensambladores bási-cos, fueron muy populares en las décadas de los50 y los 60, antes de la generalización de loslenguajes de alto nivel.Hacen todo lo que puede hacer un ensambladory proporcionan una serie de directivas para defi-nir e invocar macroinstrucciones (o simplemen-te, macros).
  • 51. Ensambladores modulares 32-bits o de alto nivel.Son ensambladores que aparecieron comorespuesta a una nueva arquitectura de pro-cesadores de 32 bits, muchos de ellosteniendo compatibilidad hacia atrás paratrabajar con programas con estructuras de16 bits.
  • 52. Permiten también el uso de macros, y pue-den utilizar estructuras de programaciónmás complejas propias de los lenguajesde alto nivel.
  • 53. • As (Unix)• Netwide Assembler (NASM)• Flat Assembler (FASM)• RosASM• High Level Assembler Language (HLA)• GNU Assembler (Gas)• Microsoft Macro Assembler (MASM)• Turbo Assembler (TASM)• GoASM• A86 y A386 assemblers• GNU toolchain• MPLAB
  • 54. El Microsoft Macro Assembler (MASM)Es un ensamblador para la familia x86 demicroprocesadores.Fue producido originalmente por Microsoftpara el trabajo de desarrollo en su sistemaoperativo MSDOS, y era por cierto tiempo elmás popular ensamblador disponible para esesistema operativo.
  • 55. El MASM soportó una amplia variedad defacilidades para macros y programación es-tructurada, incluyendo instrucciones de altonivel para bucles, llamadas a procedimientosy alternación (por lo tanto, MASM es un ejem-plo de un ensamblador de alto nivel).
  • 56. Versiones posteriores agregaron la capaci-dad de producir programas para los siste-mas operativos Windows.MASM es una de las pocas herramientas dedesarrollo de Microsoft para las cuales nohabía versiones separadas de 16 bits y 32bits.
  • 57. El Turbo Assembler (TASM), un paqueteensamblador principalmente destinado a laplataforma del IBM PC y sus compatibles.Fue la oferta de Borland en el mercado deherramientas de programación en lenguajeensamblador para la familia de los micropro-cesadores x86.
  • 58. Como se pudiera esperar, trabajaban bien conlos compiladores de lenguaje de alto nivel deBorland para las PCs, como Turbo C y TurboPascal.Junto con el resto de lenguajes de programa-ción Turbo, Turbo Assembler ya no se encuen-tra en el mercado.
  • 59. El paquete Turbo Assembler vino junto con elenlazador Turbo Linker, y era interoperablecon el depurador Turbo Debugger.Para la compatibilidad con el ensambladorMicrosoft Macro Assembler (MASM) deMicrosoft, TASM también podía ensamblarlos archivos de código fuente del MASM pormedio de su modo MASM. Al igual que éste, esun ensamblador de alto nivel
  • 60. El gas, o GNU Assembler, es el ensambla-dor del proyecto GNU.Es el back-end por defecto del GNU Compi-ler Collection y es usado para compilar Linuxy otros sistemas operativos como el sistemaoperativo GNU.
  • 61. Es una parte del paquete GNU Binutils, y sepuede acceder a él con el comando as cuandose escribe desde el shell.Al igual que el resto de aplicaciones GNU, esun software libre, y se lanza bajo la licenciaGNU General Public License.
  • 62. 1.1.4.- Clasificación de memorias
  • 63. Por su tecnología de fabricación– SRAM (Static Random Access Memory)– DRAM (Dynamic Random Access Memory)• SDRAM (Synchronous DRAM)• DDR SDRAM (Double Data Rate SDRAM)• RIMM RDRAM (Rambus In line MemoryModule)• FPM (Fats Page Mode)• EDO (Extended Data Output)• BEDO (Burst EDO)• PB SRAM (Pipeline Burst SRAM)
  • 64. Por su encapsulado:– SIMM (Single In line Memory Module)– DIMM (Dual In line Memory Module)– DIP (Dual In line Pin)
  • 65. Por su uso:– Memoria Principal– Memoria Caché (RAM de alto desempeño)– Tag RAM (RAM de alto desempeño)– RAM Disk (Disco en RAM)– Memoria Virtual (RAM en disco) • Paginada • Segmentada • Segmentos paginados
  • 66. 1.1.5.- Unidades de entrada / salida
  • 67. La arquitectura de entrada-salida de una com-putadora es la interfaz con el exterior .Esta arquitectura se diseña de manera que per-mita una forma sistemática de controlar lasinteracciones con el mundo exterior y propor-cione al sistema operativo, o programa monitor,la información que necesita para gestionareficazmente la actividad de entrada-salida.
  • 68. Hay tres técnicas de control de entrada/salida(E/S) principales: • E/S programada • E/S con interrupciones • Acceso Directo a Memoria (DMA)
  • 69. E/S programada, en la que la E/S se producebajo el control directo y continuo del progra-ma que solicita la operación.E/S mediante interrupciones, en la que elprograma genera una orden de E/S y despuéscontinúa ejecutándose hasta que el hardwarede E/S lo interrumpe para indicar que la ope-ración ha concluido.
  • 70. Acceso Directo a Memoria (DMA, Direct Me-mory Access), en el que un procesador de E/Sespecífico toma el control de la operación deE/S para transferir un gran bloque de datos.
  • 71. Dos ejemplos importantes de interfaces de E/Sexternas son:El SCSI (Small Computer System Interface) yel Firewire.El SCSI es una interfaz paralela para dispositi-vos externos, mientras que Firewire es unainterfaz serie de alta velocidad.
  • 72. Unidades de entrada-salida »Estándar »Paralelo »Serie
  • 73. Dispositivos Estándar » Teclado » Ratón » Pantalla » Impresora » Módem » Red
  • 74. Puertos Paralelo (estándar) » LPT1 » LPT2
  • 75. Impresora» Puerto ParaleloPantalla» Puerto RGB
  • 76. La interfaz Centronics implementada en elpuerto paralelo usa dos conectores, unotipo-D de 25 terminales ubicado en la parteposterior de la PC y otro tipo-Centronics de36 terminales ubicado en la impresora.
  • 77. El puerto paralelo puede trabajar tantocomo receptor como transmisor en todossus bits de datos (D0-D7).Esto permite su uso con dispositivos dife-rentes a las impresoras, como lectores dedisco y protectores de programas, entreotros, que pueden conectarse y trabajar conel puerto paralelo.
  • 78. Direcciones e Interrupciones de los Puertos Paralelos Estándar LPT PUERTOS E/S IRQLPT 1 378H, 379H, 37AH IRQ5LPT 2 278H, 279H, 27AH IRQ7
  • 79. Programación del Puerto ParaleloPara leer el Puerto Paralelo, primero se debeinicializar enviando el valor 20H al Registrode Control (37AH). MOV AL, 20H MOV DX, 37AH OUT DX, AL
  • 80. Programación del Puerto ParaleloUna vez que está preparado para lectura, elpuerto se lee de la siguiente manera: MOV DX, 378H IN AL, DX
  • 81. Programación del Puerto ParaleloPara escribir en el Puerto Paralelo, primerose debe inicializar enviando el valor 00H alRegistro de Control (37AH). MOV AL, 00H MOV DX, 37AH OUT DX, AL
  • 82. Programación del Puerto ParaleloUna vez que el puerto está inicializado, seescribe en él de la siguiente manera: MOV DX, 378H MOV AL, DATO OUT DX, AL
  • 83. Programación del Puerto ParaleloUna alternativa para enviar datos utilizando elpuerto paralelo, consiste en usar la Interrup-ción 21: MOV DL, carácter ASCII MOV AH, 05h INT 21h
  • 84. 1.1.5 Unidades de entrada/ salidaPuertos Serie (estándar) » COM1 » COM2
  • 85. 1.1.5 Unidades de entrada/ salidaPuertos Serie (alta velocidad) » USB » Firewire
  • 86. 1.1.5 Unidades de entrada/ salidaPuertos Serie (Inalámbricos)– Bluetooth (radiofrecuencia)– Infrarrojo (luz infrarroja)
  • 87. USB (Universal Serial Bus)• Para conectar dispositivos Plug and Play.• Ahorra recursos de puertos e IRQ’s.• Se pueden conectar hasta 127 dispositivos a una computadora.• Tiene velocidades de transferencia de: • 1.5 Mbit/seg (teclado y mouse) • 12 Mbit/seg (otros dispositivos)
  • 88. USB (Universal Serial Bus)El conector serie A se recomienda para Tecla-dos y Mouses, que normalmente permanecenconectados.El conector serie B se recomienda para cáma-ras, scanners, impresoras, modems, teléfonos,bocinas, etc., que eventualmente pueden des-conectarse sin apagar el equipo.
  • 89. IEEE-1394 (i-link o FireWire)• Standard 1394 del Institute of Electrical and Electronics Enginneers• Dispositivos Plug and Play de audio, video y multimedia.• Velocidades de transferencia de 100, 200 y 400 Mbits/seg.• Se pueden conectar hasta 63 dispositivos a una tarjeta adaptadora
  • 90. Usa un cable simple con 6 conductores, queincluye dos pares diferenciales de líneas dereloj y datos, más dos líneas de alimentación.• Es posible conectar y desconectar disposi- tivos sin apagar el equipo.• Originalmente la interfaz fue desarrollada por Apple y Texas Instruments.
  • 91. Accelerated Graphics Port (AGP)Una de las últimas adiciones a las computado-ras personales lo constituye el Puerto Acelera-do de Gráficos (AGP).El AGP opera a la frecuencia de reloj del busdel microprocesador. Está diseñado de tal ma-nera que la transferencia entre la tarjeta videoy la memoria del sistema se realice a la máximavelocidad.
  • 92. Accelerated Graphics Port (AGP)El bus AGP (2X) puede transferir datos a unavelocidad de hasta 528 Mbytes por segundo.El bus AGP (4X) podrá transferir hasta1 Gbytepor segundo.El bus PCI tiene una velocidad de transferenciamáxima de 100 Mbytes por segundo.
  • 93. 1.2.- El microprocesador 1.2.1 Buses 1.2.2 Registros 1.2.3 Modos de direccionamiento
  • 94. 1.2.- El microprocesadorUn procesador se puede caracterizar por: • Su arquitectura • Su modelo de programación • Su conjunto de instrucciones • Sus modos de direccionamiento • Su Lenguaje Ensamblador
  • 95. 1.2.1 Buses
  • 96. Caracterización de un Bus• Arquitectura: Tradicional o Alto Desempeño• Tipo: Dedicado o Multiplexado• Arbitraje: Centralizado o Distribuido• Temporización: Síncrono o Asíncrono• Uso: Dirección o Datos
  • 97. Tipo de transferencia: • Lectura • Escritura • Lectura-Escritura • Escritura-Lectura • Bloque
  • 98. 1.2.1 BusesCLK La terminal de reloj proporciona al pro-cesador la señal básica de temporización.La señal debe tener un ciclo activo del 33%para proporcionar la temporización internaadecuada.Vcc Proporciona la señal de alimentación de+5VCD, +/- 10% al procesador.
  • 99. 1.2.1 BusesNMI.- La Interrupción no-enmascarable, esparecida a INTR, excepto porque no verificael bit de bandera IF, al activar NMI, la entradautiliza el vector de interrupción 2.
  • 100. RESET .- La entrada de restauración ocasionaque el procesador se reinicie si se mantieneen alto por un mínimo de cuatro períodos dereloj.Al activarse el 8086/8088 inician en la memo-ria FFFF0H e inhabilita interrupcionesfuturas restaurando el bit IF.
  • 101. 1.2.1 BusesINTR.- Solicitud de interrupción, se utilizapara solicitar una interrupción por hardware.Si INTR se mantiene en alto cuando IF=1, elprocesador entra en un ciclo de reconocimien-to de interrupción (INTA’ se activa), despuésde ejecutar la instrucción actual.
  • 102. 1.2.1 Buses• RD’ Señal de lectura, cuando está en cero elbus de datos está preparado para recibir datosdesde la memoria o desde un puerto de e/s.• READY Se utiliza para insertar estados de es-pera en la temporización del procesador.Si está en cero, el procesador inserta un estadode espera y permanece inactivo.
  • 103. 1.2.2.- Registros
  • 104. 1.2.2 RegistrosLa arquitectura de un procesadorestá definida por los elementos quelo integran, sus características, lasoperaciones que se realizan entreellos, y cómo se realizan.
  • 105. 1.2.2 RegistrosEl Modelo de Programación de un procesadorestá formado por los registros internos, a losque se puede acceder utilizando el conjuntode instrucciones.
  • 106. AH AX AL Accumulator AH BX BL Base AH CX CL Counter AH DX DL Data SP Stack pointer Base pointer BP Source index SI Destination DI CS Code Segment DS Data Segment SS Stack Segment ES Extra Segment IP Pointer InstructionOF DF IF TF SF ZF AF PF CF Flags
  • 107. Descripción de los registrosAX (Acumulador).- Se utiliza para almacemien-to de datos en general y algunas instruccionesespecíficas como: multiplicación, división, ope-raciones de I/O y manejo de cadenas.BX (Base).- Se utiliza para contener valores dedirecciones cuando se accede a la memoria.Cuando se utilizan rutinas de interrupción, esteregistro debe contener un valor que se usa paraselección de opciones.
  • 108. Descripción de los registrosCX (Contador).- Durante la ejecución de unciclo, este registro contiene el valor del índicede conteo.DX (Datos).- Utilizado para almacenamientogeneral y también en operaciones de multipli-cación y división.SP (Apuntador del stack).- Contiene valores dedesplazamiento para el stack.
  • 109. Descripción de los registrosBP (Apuntador base).- Es similar al SP. Algunasinstrucciones hacen uso de él para guardar elvalor de un desplazamiento.SI (Índice fuente).- Para ciertas instruccionescontiene la dirección fuente.DI (Índice destino).- Se complementa con SI,contiene la dirección destino para algunasinstrucciones.
  • 110. Descripción de los registrosCS (Segmento de código).- Apunta al inicio delsegmento donde se encuentra situado el pro-grama en ejecución.DS (Segmento de datos).- Señala el inicio delsegmento de datos.SS (Segmento del Stack).- Señala el inicio delsegmento del stack.
  • 111. Descripción de los registrosES (Segmento extra).- Señala el inicio del seg-mento extra.IP (Apuntador de instrucciones).- Apunta a lalocalidad de memoria donde se encuentra lapróxima instrucción a ser ejecutada.CF (Acarreo).- Contiene el acarreo resultantede una operación aritmética.
  • 112. PF (Paridad).- Indica paridad par o impar, re-sultante de una operación en los 8-bits de da-tos de menor orden.AF (Acarreo auxiliar).- Contiene un acarreoexterno del bit 3 en un dato de 8-bits, paraaritmética especializada.ZF (Cero).- Indica el resultado de una opera-ción aritmética o de comparación. Si elresultado es cero ZF = 1.
  • 113. SF (Signo).- Contiene el signo resultante de unaoperación aritmética (0-positivo, 1-negativo).TF (Trampa).- Permite la operación paso a pasodel procesador. Se ejecuta una instrucción y sedetiene para examinar sus efectos sobre los re-gistros y la memoria.IF (Interrupción).- Habilita e inhabilita la aten-ción a interrupciones.
  • 114. DF (Dirección).- Designa la dirección, a la iz-quierda o a la derecha, para mover o compararcadenas de caracteres.OF (Desbordamiento).- Indice desbordamien-to del bit más significativo, después de unaoperación aritmética.
  • 115. AX AH AL Acumulator BX BH BL Base CX CH CL Count DX DH DL Data REGISTROS BP SI Pointer Base Index Source DEL MICRO- DI Index Destination PROCESADOR SP Stack Pointer 80286 F Flags IP Instructor PointerMSW Status Machine Register Segment Selectors CS Code Segment DS Data Segment TR ES Extra Segment LDTR SS Stack Segment
  • 116. EAX AH AL EBX BH BL ECX CH CL EDX DH DL ESP Register Purpose General SP EBP BP ESI SI EDI DI CS DS ES SS Segment Register FS GS EIP IP Pointer Instruction EFLAGS FLAGS Flags registersThe internal structure of the 80386 microprocessorilustrating the general, segment and flags registers.
  • 117. 1.2.3.- Modos de Direccionamiento
  • 118. 1.2.3 Modos de DireccionamientoLos Modos de Direccionamiento son las dife-rentes maneras en que el CPU puede acceder alos datos, tomando en consideración que éstospueden encontrarse en: * CPU, * Memoria, * Puertos de entrada y salida.
  • 119. Direccionamiento de datos » Registro » Inmediato »Directo » Indirecto a registro » Base más índice » Relativo a registro » Relativo a base más índice
  • 120. Register addressing.Se usa para transferir un byte o una palabra des-de el registro fuente hasta el registro destino.• Ejemplo: MOV AX,CXCopiará el contenido del registro CX dentro delregistro AX.
  • 121. Direccionamiento InmediatoImmediate Addressing.- Se usa para transferirel byte o word inmediato al registro destino. • Ejemplo: MOV AX,1234HCopia 1234H dentro del registro AX.
  • 122. Direccionamiento DirectoDirect Addressing.- Transfiere un byte o wordentre la memoria y un registro. Ladirección dememoria del dato se almacena con la instruc-ción. • Ejemplo: MOV AX,DATOToma el contenido de 16-bits de la direcciónde memoria DATO y los mueve al registro AX.
  • 123. Indirecto de RegistroRegister Indirect.- Transfiere un byte o wordentre un registro y la localidad de memoriadireccionada por otro registro • Ejemplo: MOV AX,[BX]Mueve los 16-bits contenidos en la localidadde memoria direccionada por el registro BXdentro del registro AX.
  • 124. Direccionamiento Base más ÍndiceBase-plus-index.- Se usa para transferir unbyte o word entre un registro y la localidad dememoria indicada por la suma de un registrobase y un registro índice. • Ejemplo: MOV AX,[BX+SI]Mueve los 16-bits contenidos en la direcciónapuntada por la suma de BX+SI y los lleva den-tro del registro AX.
  • 125. Direccionamiento Relativo a RegistroRegister Relative.- Transfiere un byte o wordentre un registro y la localidad de memoriadireccionada por un registro y un desplazami-ento.• Ejemplo: MOV AX,[BX+4] MOV AX,ARRAY[SI]
  • 126. Relativo a la Base más ÍndiceBase relative-plus-index.- Se usa para transferirun byte o word entre un registro y la localidadde memoria direccionada por un registro basey un registro índice más un desplazamiento.• Ejemplo: MOV AX,ARRAY[BX+DI] MOV AX,[BX+DI+4]
  • 127. 1.3.- Interrupciones 1.3.1.- Hardware 1.3.2.- Software
  • 128. 1.3.- InterrupcionesUna computadora no es de utilidad si no cuen-ta con dispositivos que puedan comunicarsecon el mundo exterior.Para ello deberá contar con dispositivos paraintroducir datos al sistema que puedan ser al-macenados en la memoria y procesados por elCPU.
  • 129. Igualmente, se deben recuperar los resultadosdel procesamiento a través de dispositivos desalida.Desde el punto de vista de la Arquitectura deComputadoras, los puertos de entrada-salida ylas interrupciones constituyen un sistema decomunicación con el exterior.
  • 130. Aunque la revisión periódica de los puertos deentrada-salida es simple, puede resultarineficiente.Las Interrupciones representan una maneramuy eficiente para atender dispositivos asín-cronos.El periférico atrae la atención del procesador através de una interrupción, éste concluye lainstrucción actual y ejecuta una rutina de inte-rrupción, para continuar con la tarea anteriorposteriormente.
  • 131. 1.3.1.- Interrupciones por hardware
  • 132. 1.3.1 Interrupciones por hardwareGeneralmente se utilizan para atender a dispo-sitivos periféricos asíncronos que, por su velo-cidad de operación, no requieren de la atenciónperiódica del procesador.Las interrupciones pueden utilizar las líneasNMI (interrupción no-enmascarable) e INTR(interrupt request).
  • 133. La interrupción se atiende a través de un vectorde interrupción.Para administrar las interrupciones se utilizaun controlador de interrupciones dedicado.
  • 134. La familia de procesadores de Intel cuenta condos terminales de entrada para interrupciones(NMI e INTR) y una terminal de salida (INTA)que reconoce la interrupción de INTR, dosbanderas de interrupción (IF y TF), además deuna instrucción de retorno de interrupción(IRET).
  • 135. 1.3.2 Interrupciones por Software
  • 136. 1.3.2.- Interrupciones por SoftwarePara generar interrupciones bajo control delprograma se utilizan las instrucciones INT n,INTO e IRET.Para habilitar e inhabilitar las interrupcionesse utilizan STI y CLI, respectivamente.
  • 137. Es común utilizar algunas funciones especia-lizadas del BIOS y del DOS llamándolas comointerrupciones, esto evita el tener que escribiruna gran cantidad de código, facilitando el usode los recursos de la computadora personal.
  • 138. INT 10H. Interrupción de los servicios de videocontrola el video en un sistema.INT 11H. Se utiliza para determinar el tipo dedispositivos instalados en un sistema.INT 12H. Determina el tamaño de la memoriainstalada en el sistema.INT 13H. Controla los discos flexibles yrígidos de la computadora.
  • 139. INT 14H. Controla los puertos de comunica-ciones serie (COM1, COM2, ...)INT 15H. Controla varios dispositivos delsistema, como cassette, joystick, watchdog ypermite acceder al modo protegido.INT 16H. Controla el teclado de la computa-dora.
  • 140. INT 17H. Controla el puerto paralelo de laimpresora (LPT).INT 33H. Esta función proporciona un controlcompleto de las acciones del mouse.INT 21H. Con esta interrupción del DOS pue-den realizarse una gran cantidad de funciones,incluyendo manejo de dispositivos como tecla-do, pantalla, puertos, manejo de archivos, horay fecha del sistema, entre otros.• Esta interrupción utiliza rutinas del BIOS.
  • 141. 1.4 Estructura de un programa en Lenguaje Ensamblador 1.4.1 Data Segment 1.4.2 Stack Segment 1.4.3 Code Segment 1.4.4 Instrucciones del programa 1.4.5 Directivas
  • 142. Existen normas para escribir un programa enlenguaje ensamblador.La primera se refiere a la estructura delprograma, después cada línea sigue unformato, finalmente se deben respetar lasinstrucciones y los modos de direccionami-ento; la sintaxis y la ortografía son muyestrictas.
  • 143. La estructura de los programas en LenguajeEnsamblador de la familia x86 está basada enel uso de segmentos de: Código, Datos, Pila yExtra.De esta manera la memoria se divide en seg-mentos de longitud fija, 64K en el modelooriginal.
  • 144. Por esta razón, las primeras acciones que serealizan en un programa escrito en lenguajeensamblador consisten en declarar el modelode memoria y los segmentos que se van autilizar para manipular los datos almacenadosen la memoria.
  • 145. 1.4.1 Data SegmentEl Segmento de Datos es un área reservadapara guardar datos, cuya dirección de inicioestá dada por DS.• El segmento de datos se declara al principiodel programa y sus características están defini-das en el modelo de memoria utilizado.• El segmento de datos puede almacenar datosnuméricos y alfanuméricos.• Los datos se definen dentro del segmentode datos, puede definirse su tipo y su tamaño.
  • 146. 1.4.2 Stack Segment• El Segmento de Pila es un área reservadade la memoria, cuya dirección de inicio estádada por SS.• El segmento de Pila se declara al principio delprograma y se puede definir su tamaño o utili-zar uno por omisión.
  • 147. • El segmento de pila puede almacenar datos,contenidos de registros y banderas, es un seg-mento tipo LIFO.• Para acceder a la pila se utilizan las instruccio-nes PUSH y POP, la posición superior de la pilaestá apuntada por SP.
  • 148. 1.4.3 Code Segment• El Segmento de Código es un área reservadade la memoria, cuya dirección de inicio estádada por CS.• El segmento de Código se declara al principiodel programa y se puede definir su tamaño outilizar uno por omisión.• El segmento de Código contiene elcódigo del programa ejecutable.
  • 149. Componentes de un programa en Lenguaje Ensamblador Comentarios Palabras Reservadas Identificadores Instrucciones Directivas
  • 150. Comentarios en Lenguaje Ensamblador• El uso de comentarios mejora laclaridad de un programa.• Un comentario empieza con (;) y todoslos caracteres a la derecha no generancódigo de máquina.• Un comentario puede ocupar una líneacompleta o aparecer a continuación deuna instrucción o directiva.
  • 151. Ejemplos de Comentarios• ;Toda la línea es un ejemplo de comentario• ADD AX,BX ;Comentario en una instrucción• .DATA ;Comentario en una directiva
  • 152. Palabras Reservadas en Lenguaje Ensamblador• Instrucciones: MOV, ADD, etc.• Directivas: END, SEGMENT, etc.• Operadores: FAR, SIZE, etc.• Símbolos predefinidos: @Data, @Model
  • 153. IdentificadoresUn identificador es un nombre que se aplica aelementos en un programa.Los dos tipos de identificadores son:nombre, que se refiere a la dirección de un ele-mento de dato yetiqueta, que se refiere a la dirección de unainstrucción.
  • 154. Caracteres de un Identificador• Letras del alfabeto: A-Z• Dígitos: 0 al 9• Caracteres especiales: interrogación (?) subrayado ( _ ) signo de pesos($) arroba (@) punto (.)
  • 155. Reglas de los Identificadores• Un identificador inicia con letra o carácterespecial, menos el punto.• Se recomienda que los nombres de identifica-dores sean descriptivos y significativos.• Todos los identificadores deben definirse enalgún lugar del programa.
  • 156. Ejemplos de Identificadores COUNT PAGE45 _DATONUEVO $F100
  • 157. 1.4.4 Instrucciones
  • 158. 1.4.4.- InstruccionesSon acciones a realizar, identificadas por Ne-mónicos como MOV y ADD, que el ensambla-dor traduce a código objeto y que correspon-den una a una a instrucciones en Lenguaje deMáquina.
  • 159. 1.4.4.- MOV• Nemónico: MOV destino, fuente• Función: Destino = fuente• Banderas: Ninguna• Descripción: MOV transfiere un byte o unapalabra desde el operando fuente hasta el ope-rando destino.• Ejemplos: * MOV AX,BX * MOV CL,AL * MOV BX,300 * MOV BH,25
  • 160. 1.4.4.- ADD• Nemónico: ADD destino, fuente• Función: destino=destino+fuente• Banderas: AF,CF,OF,PF,SF,ZF• Descripción: La suma de los dos operandos,los cuales pueden ser bytes o words, remplazaal operando destino.• Ejemplos: * ADD DX,CX * ADD AX,400 * ADD label, BL
  • 161. 1.4.4.- CLC• Nemónico: CLC (Sin operandos)• Función: CF = 0• Banderas: CF• Descripción: CLC pone en cero a la bandera de carry (CF) sin afectar otras banderas.
  • 162. 1.4.4 CMP• Nemónico: CMP destino, fuente• Función: destino – fuente• Banderas: AF,CF,OF,PF,SF,ZF• Descripción: CMP sustrae la fuente del des-tino, los cuales pueden ser bytes o words, perono devuelve el resultado, ni los operandos cam-bian. Sólo se actualizan las banderas y puedenutilizarse con instrucciones subsecuentes desalto condicional.
  • 163. • Ejemplos: * CMP DX,CX * CMP AX, BX * CMP AL,25 * CMP BH,Label
  • 164. 1.4.5.-Directivas
  • 165. 1.4.5 DirectivasSon enunciados que permiten controlar lamanera en que un programa se ensambla ylista.Actúan sólo durante el ensamblado de unprograma y no generan código ejecutablede máquina.
  • 166. 1.4.5 Directivas • PAGE y TITLE • SEGMENT y ENDS • PROC y ENDP • ASSUME • END • DB, DW • EQU
  • 167. Se coloca al inicio del programa, establece elnúmero máximo de líneas (10-255) para listaren una página y el número máximo de carac-teres (60-132) en una línea.• Formato: PAGE [longitud] [, ancho]• Ejemplo: PAGE 60,132• Por omisión se toma: PAGE 50,80
  • 168. 1.4.5 Directivas SEGMENT y ENDSUn programa ensamblado en formato .EXEconsiste en uno o más segmentos.Las directivas para definir un segmentotienen el formato: NOMBRE OPERANCIÓN OPERANDO COMENTARIO Nombre SEGMENT [OPCIONES] ;Inicia Segmento … … … … Fin de Nombre Ends Segmento
  • 169. 1.4.5 Directiva SEGMENT El operando de una directiva SEGMENT puede tener tres tipos de opciones: »Alineación »Combinar »Clase F O R M A T ONombre SEGMENT combinar combinar clase
  • 170. 1.4.5 Tipo AlineaciónIndica el límite en el que inicia el segmento.PARA alinea el segmento con el límite de unpárrafo, de manera que la dirección inicial esdivisible entre 16.Por omisión el ensamblador toma PARA.
  • 171. 1.4.5 Tipo CombinarIndica si se combina el segmento con otrossegmentos cuando se enlazan después de en-samblar.• Los tipos combinar son: »STACK » COMMON »PUBLIC »AT
  • 172. 1.4.5 Tipo ClaseLa entrada clase, encerrada entre apóstrofos,se utiliza para agrupar segmentos cuando seenlazan.Microsoft recomienda utilizar las clases:‘code’ para el segmento de códigos,‘data’ para el segmento de datos y‘stack’ para el segmento de pila.
  • 173. Ejemplos:• STACKSG SEGMENT PARA STACK ‘Stack’•• STACKSG ENDS• DATASG SEGMENT PARA ‘Data’•• DATASG ENDS
  • 174. 1.4.5 Directivas PROC y ENDPEl segmento de código contiene el código eje-cutable de un programa.También tiene uno o más procedimientos, defi-nidos con la directiva PROC.La directiva ENDP indica el fin de un procedi-miento.Los procedimientos deben quedar totalmentecontenidos dentro de un segmento.
  • 175. Ejemplo con PROC y ENDPNOMBRE OPERACIÓN OPERANDO COMENTARIONomsegmto SEGMENT PARA ;procedimiento Nomproc PROC FAR dentro del seg- mento de código. ….. ….. ….. ….. Nomproc ENDPnomsegmto ENDS
  • 176. 1.4.5 Directiva ASSUMESe utiliza para indicar al ensamblador el pro-pósito de cada segmento en el programa.• SS para direccionar la pila.• DS para direccionar el segmento de datos.• CS para direccionar el segmento de código.
  • 177. Ejemplos con ASSUME:OPERACIÓN OPERANDO ASSUME SS:Nompila, DS:nomsegdatos, CS:nomsegcódigo
  • 178. 1.4.5.- Directiva ENDLa directiva END finaliza todo el programa.En la mayoría de los programas, el operandocontiene el nombre del primero o único PROCdesignado como FAR, donde inicia la ejecucióndel programa.
  • 179. 1.5 Procedimientos de ensamble, enlace y ejecución 1.5.1 Captura y edición 1.5.2 Ensamble 1.5.3 Enlace 1.5.4 Ejecución 1.5.5 Depuración
  • 180. 1.5.1 Captura y Edición
  • 181. 1.5.1 Captura y EdiciónLos archivos fuente de código ensambladordeben estar en formato ASCII estándar.Para esto puede usarse cualquier editor quepermita crear archivos sin formato adicional,como Edito Wordpad.
  • 182. 1.5.1 Captura y EdiciónLas declaraciones pueden ser introducidas enmayúsculas y/o minúsculas.Una buena práctica de programación es ponertodas las palabras reservadas (directivas e ins-trucciones) en mayúsculas y todo lo del usua-rio en minúsculas para fines de facilidad delectura del código.
  • 183. Las sentencias pueden comenzar en cualquiercolumna, no pueden tener más de 128 caracte-res, no se permiten líneas múltiples ni códigosde control, y cada línea debe ser terminada conuna combinación de line-feed y carriage-return.Los comentarios se declaran con “;” y terminanal final de la línea.
  • 184. 1.5.2 Procedimiento de Ensamble
  • 185. 1.5.2 Procedimiento de EnsambleEl ensamblador (Assembler) convierte unarchivo fuente simbólico en un archivo ob-jeto hexadecimal.El archivo fuente debe tener una extensiónASM para que pueda ser reconocido por elensamblador.
  • 186. 1.5.2 Procedimiento de EnsambleUna de las tareas del ensamblador es calcularel desplazamiento de cada elemento en elsegmento de datos y de cada instrucción en elsegmento de código.
  • 187. El ensamblador también crea un encabezadoal frente del módulo .OBJ generado, parte delencabezado tiene información acerca de di-recciones incompletas.El módulo .OBJ aún no está en forma ejecu-table.
  • 188. 1.5.3 Procedimiento de Enlace
  • 189. 1.5.3 Procedimiento de EnlaceEl programa enlazador (linker) lee los archivosobjeto (extensión OBJ), creados por el ensam-blador, los enlaza con el conjunto de instruc-ciones del procesador, y genera un archivo eje-cutable de salida (extensión EXE).
  • 190. Una de las tareas del enlazador es combinarlos programas ensamblados en forma sepa-rada en un solo programa ejecutable.
  • 191. 1.5.4 Procedimiento de Ejecución
  • 192. Si un archivo tiene menos de 64K de longitud,se puede convertir de archivo ejecutable enarchivo de comandos (extensión .COM).Este archivo se origina en la localidad 100H ytiene la ventaja de que requiere poco espacioen disco y en memoria, además de que se eje-cuta rápidamente.
  • 193. El Sistema Operativo ofrece soporte a dos tiposde programas ejecutables: .COM y .EXE.Un programa .COM consta de un solo segmen-to que contiene código, datos y pila.Un programa .EXE consta de segmentos de có-digo, programa y pila separados.
  • 194. Cuando se llama un programa desde el discopara su ejecución, el cargador del sistema ope-rativo realiza las siguientes acciones:Accede al programa .EXE en eldisco.Construye un prefijo de segmento de programa(PSP) de 256 bytes (100H) en un límite de pá-rrafo en la memoria interna disponible.
  • 195. Almacena el programa en memoria inmedia-tamente después del PSP.Carga la dirección del PSP en los registrosDS y ES.Carga la dirección del segmento de código enel CS y establece el IP al desplazamiento de laprimera instrucción (generalmente cero) enel segmento de código.
  • 196. Carga la dirección de la pila en el SS y estable-ce el SP al tamaño de la pila.Transfiere el control al programa para ejecu-ción, iniciando con la primera instrucción delsegmento de código.
  • 197. En esta forma, el cargador del DOS inicia-liza los registros CS:IP y SS:SPAunque se debe observar que el cargadoralmacena la dirección del PSP tanto en elregistro DS como en el ES, aunque normal-mente se requiere la dirección del segmen-to de datos en estos registros.
  • 198. Como consecuencia, los programas tienenque inicializar el DS con la dirección delsegmento de datos.
  • 199. 1.5.5 Procedimiento de Depuración
  • 200. Una de las teorías en computación dice que elprograma que funciona bien desde la primeravez seguramente tiene errores.El número de errores posibles en un programaes proporcional al número de líneas e inversa-mente proporcional a la experiencia del pro-gramador.
  • 201. El dominio de la arquitectura del sistema asícomo del ensamblador facilitan la escritura deprogramas sin errores.La práctica de la programación en ensambla-dor también ayuda a escribir programas libresde errores.
  • 202. El propio ensamblador ayuda a encontrarerrores ortográficos o de sintaxis durante elproceso de ensamble.El enlazador también participa en la localiza-ción de errores en tiempo de ejecución.
  • 203. Aún con esa ayuda, es posible que en el mo-mento de ejecutar un programa surjan pro-blemas de diseño que lleven a resultadoserróneos.Por todo lo anterior se recomienda desarro-llar un programa paso a paso evitando “pen-sar y teclear” inmediatamente.
  • 204. Se recomienda plantear el problema a resolvery las acciones a realizar.Elaborar un algoritmo que establezca los pasosa seguir.Codificar el programa utilizando correctamen-te la arquitectura del sistema, el conjunto deinstrucciones, los modos de direccionamiento y el lenguaje ensamblador.
  • 205. Elaborar un diagrama de flujo que definaclaramente todas las rutas de ejecución delprograma, los procesos, entradas y salidas.Definir las variables, incluyendo los tipos ytamaños.
  • 206. Realizar una prueba de escritorio para evaluartodos los pasos anteriores, antes de capturar elprograma.Capturar el programa utilizando el programacodificado ya corregido, si tiene muchas líneases conveniente que alguien más lo revise.
  • 207. Si a pesar de todo lo anterior surgen problemasdurante la ejecución, lo cual es altamente pro-bable, se recomienda utilizar el Turbo Debug-ger, herramienta de depuración que facilita laprueba de programas así como la corrección deerrores al permitir la ejecución paso a paso delos programas.
  • 208. Además de que permite visualizar el estadode los registros del CPU, las banderas, asícomo el contenido de los segmentos en me-moria.
  • 209. 1.6 Entorno de programación 1.6.1 Wordpad y Edit 1.6.2 Turbo Assembler 1.6.3 Turbo Linker 1.6.4 Turbo Debugger
  • 210. 1.6.1 Wordpad y Edit
  • 211. 1.6.1 Wordpad y EditWordpad es un editor de texto de Windowsque facilita la captura y edición de archivos detexto sin caracteres de control ocultos, por loque se puede utilizar para capturar programasque se utilicen en el entorno del ensamblador.
  • 212. Al guardar los archivos que se utilicen conTASM o MASM se debe tener cuidado ensalvarlos como archivos de texto con formatopara MS-DOS, de otra manera el ensambladorenviará mensajes de error al encontrar carac-teres desconocidos.
  • 213. También es posible utilizar Notepad, sin em-bargo sólo es útil para capturar programas detamaño reducido por lo que no se recomiendapara programas extensos.
  • 214. Edit es un editor de texto del MS-DOS queresulta muy adecuado para trabajar con pro-gramas en ensamblador, debido a que su en-torno de trabajo es el mismo que el del TurboAssembler, por lo que es muy simple la cap-tura y edición programas en ensamblador.Este editor puede llamarse desde el entornodel MS-DOS.
  • 215. 1.6.2 Turbo Assembler
  • 216. El Turbo Assembler (TASM), es un paqueteensamblador principalmente destinado a laplataforma del IBM PC y sus compatibles.Fue la oferta de Borland en el mercado deherramientas de programación en lenguajeensamblador para la familia de los micropro-cesadores x86.
  • 217. Como se pudiera esperar, trabaja bien conlos compiladores de lenguaje de alto nivel deBorland para los PCs, como Turbo C y TurboPascal.Junto con el resto de paquetes de lenguajesde programación Turbo, Turbo Assembler yano es mantenido por Borland.
  • 218. El ensamblado se lleva a cabo invocando alTASM. Este puede ser llamado, usando unalínea de comando, de la siguiente manera:TASM nombre_archivo.asm [opciones]donde:nombre_archivo- Corresponde al programafuenteopciones- modo en que realizará el ensamble
  • 219. opciones.- Pueden ser:/a.- ordena los segmentos en orden alfabético/s.-ordena los segmentos en orden del fuente/c.-genera un archivo de referencias cruzadas/iPATH.-busca PATH para archivos incluidos/l.-genera un listado de ensamble/la.-genera un listado expandido de ensamble/z.-despliega línea fuente con mensaje de error./zi, /zd, /zn.- Debug info: zi= completa, zd= números línea, zn= ninguna
  • 220. 1.6.3 Turbo Linker
  • 221. El paquete Turbo Assembler incluye el enla-zador Turbo Linker, y es interoperable con elde-purador Turbo Debugger.Para la compatibilidad con el ensambladorMicrosoft Macro Assembler (MASM) deMicrosoft, TASM también ensambla losarchivos de código fuente del MASM pormedio de su modo MASM.
  • 222. Formato del comando:TLINK archivo_objeto [opciones]donde:archivo_objeto- nombre del archivo objetoopciones- modo en el que se enlaza
  • 223. Opciones:/x.- sin mapa/m.- mapa incluyendo nombres públicos/s.- mapa más mapa detallado de segmentos/l.- mapa más números de línea fuente/i.- inicializa todos los segmentos/L.- especifica rutas de búsqueda de librerías/v.- información simbólica de debug completa
  • 224. 1.6.4 Turbo Debugger
  • 225. Turbo Debugger es un conjunto de herrami-entas diseñadas para ayudar a depurar pro-gramas desarrollados con la línea de compi-ladores y ensambladores de Borland.Turbo Debugger ayuda a depurar programasescritos para Win16, Win32 y DOS.
  • 226. Al cargar el programa en Turbo Debugger sepuede controlar la ejecución del programa yvisualizar diferentes aspectos de la ejecucióndel programa.Al monitorear las salidas del programa, códigofuente, estructuras de datos y valores del pro-grama, es posible localizar aún los errores másdifíciles.
  • 227. Dentro de las características de Turbo Debug-ger se encuentran las siguientes:Evaluación completa de expresiones en ensam-blador, C, C++ y Pascal.Control total de la ejecución del programa, in-cluyendo animaciones.Acceso de bajo nivel a los registros del CPU y lamemoria del sistema.
  • 228. Capacidad de inspección de datos completa.Facilidades para el manejo de ejecución paso apaso de los programas, incluyendo puntos deruptura (breakpoints).Soporte total de programación orientada a ob-jetos.
  • 229. Formato del comando:TD archivo_executabledonde:archivo_ejecutable- nombre del archivoenlazado